diff --git a/gen-go/apache/aurora/aurora_admin-remote/aurora_admin-remote.go b/gen-go/apache/aurora/aurora_admin-remote/aurora_admin-remote.go
new file mode 100755
index 0000000..319d0ee
--- /dev/null
+++ b/gen-go/apache/aurora/aurora_admin-remote/aurora_admin-remote.go
@@ -0,0 +1,1083 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package main
+
+import (
+	"apache/aurora"
+	"flag"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+	"math"
+	"net"
+	"net/url"
+	"os"
+	"strconv"
+	"strings"
+)
+
+func Usage() {
+	fmt.Fprintln(os.Stderr, "Usage of ", os.Args[0], " [-h host:port] [-u url] [-f[ramed]] function [arg1 [arg2...]]:")
+	flag.PrintDefaults()
+	fmt.Fprintln(os.Stderr, "\nFunctions:")
+	fmt.Fprintln(os.Stderr, "  Response setQuota(string ownerRole, ResourceAggregate quota)")
+	fmt.Fprintln(os.Stderr, "  Response forceTaskState(string taskId, ScheduleStatus status)")
+	fmt.Fprintln(os.Stderr, "  Response performBackup()")
+	fmt.Fprintln(os.Stderr, "  Response listBackups()")
+	fmt.Fprintln(os.Stderr, "  Response stageRecovery(string backupId)")
+	fmt.Fprintln(os.Stderr, "  Response queryRecovery(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response deleteRecoveryTasks(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response commitRecovery()")
+	fmt.Fprintln(os.Stderr, "  Response unloadRecovery()")
+	fmt.Fprintln(os.Stderr, "  Response startMaintenance(Hosts hosts)")
+	fmt.Fprintln(os.Stderr, "  Response drainHosts(Hosts hosts)")
+	fmt.Fprintln(os.Stderr, "  Response maintenanceStatus(Hosts hosts)")
+	fmt.Fprintln(os.Stderr, "  Response endMaintenance(Hosts hosts)")
+	fmt.Fprintln(os.Stderr, "  Response snapshot()")
+	fmt.Fprintln(os.Stderr, "  Response rewriteConfigs(RewriteConfigsRequest request)")
+	fmt.Fprintln(os.Stderr, "  Response createJob(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response scheduleCronJob(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response descheduleCronJob(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response startCronJob(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response restartShards(JobKey job,  shardIds)")
+	fmt.Fprintln(os.Stderr, "  Response killTasks(JobKey job,  instances)")
+	fmt.Fprintln(os.Stderr, "  Response addInstances(InstanceKey key, i32 count)")
+	fmt.Fprintln(os.Stderr, "  Response replaceCronTemplate(JobConfiguration config)")
+	fmt.Fprintln(os.Stderr, "  Response startJobUpdate(JobUpdateRequest request, string message)")
+	fmt.Fprintln(os.Stderr, "  Response pauseJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response resumeJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response abortJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response rollbackJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response pulseJobUpdate(JobUpdateKey key)")
+	fmt.Fprintln(os.Stderr, "  Response getRoleSummary()")
+	fmt.Fprintln(os.Stderr, "  Response getJobSummary(string role)")
+	fmt.Fprintln(os.Stderr, "  Response getTasksStatus(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getTasksWithoutConfigs(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getPendingReason(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getConfigSummary(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response getJobs(string ownerRole)")
+	fmt.Fprintln(os.Stderr, "  Response getQuota(string ownerRole)")
+	fmt.Fprintln(os.Stderr, "  Response populateJobConfig(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateSummaries(JobUpdateQuery jobUpdateQuery)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateDetails(JobUpdateKey key)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateDiff(JobUpdateRequest request)")
+	fmt.Fprintln(os.Stderr, "  Response getTierConfigs()")
+	fmt.Fprintln(os.Stderr)
+	os.Exit(0)
+}
+
+func main() {
+	flag.Usage = Usage
+	var host string
+	var port int
+	var protocol string
+	var urlString string
+	var framed bool
+	var useHttp bool
+	var parsedUrl url.URL
+	var trans thrift.TTransport
+	_ = strconv.Atoi
+	_ = math.Abs
+	flag.Usage = Usage
+	flag.StringVar(&host, "h", "localhost", "Specify host and port")
+	flag.IntVar(&port, "p", 9090, "Specify port")
+	flag.StringVar(&protocol, "P", "binary", "Specify the protocol (binary, compact, simplejson, json)")
+	flag.StringVar(&urlString, "u", "", "Specify the url")
+	flag.BoolVar(&framed, "framed", false, "Use framed transport")
+	flag.BoolVar(&useHttp, "http", false, "Use http")
+	flag.Parse()
+
+	if len(urlString) > 0 {
+		parsedUrl, err := url.Parse(urlString)
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
+			flag.Usage()
+		}
+		host = parsedUrl.Host
+		useHttp = len(parsedUrl.Scheme) <= 0 || parsedUrl.Scheme == "http"
+	} else if useHttp {
+		_, err := url.Parse(fmt.Sprint("http://", host, ":", port))
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
+			flag.Usage()
+		}
+	}
+
+	cmd := flag.Arg(0)
+	var err error
+	if useHttp {
+		trans, err = thrift.NewTHttpClient(parsedUrl.String())
+	} else {
+		portStr := fmt.Sprint(port)
+		if strings.Contains(host, ":") {
+			host, portStr, err = net.SplitHostPort(host)
+			if err != nil {
+				fmt.Fprintln(os.Stderr, "error with host:", err)
+				os.Exit(1)
+			}
+		}
+		trans, err = thrift.NewTSocket(net.JoinHostPort(host, portStr))
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "error resolving address:", err)
+			os.Exit(1)
+		}
+		if framed {
+			trans = thrift.NewTFramedTransport(trans)
+		}
+	}
+	if err != nil {
+		fmt.Fprintln(os.Stderr, "Error creating transport", err)
+		os.Exit(1)
+	}
+	defer trans.Close()
+	var protocolFactory thrift.TProtocolFactory
+	switch protocol {
+	case "compact":
+		protocolFactory = thrift.NewTCompactProtocolFactory()
+		break
+	case "simplejson":
+		protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
+		break
+	case "json":
+		protocolFactory = thrift.NewTJSONProtocolFactory()
+		break
+	case "binary", "":
+		protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
+		break
+	default:
+		fmt.Fprintln(os.Stderr, "Invalid protocol specified: ", protocol)
+		Usage()
+		os.Exit(1)
+	}
+	client := aurora.NewAuroraAdminClientFactory(trans, protocolFactory)
+	if err := trans.Open(); err != nil {
+		fmt.Fprintln(os.Stderr, "Error opening socket to ", host, ":", port, " ", err)
+		os.Exit(1)
+	}
+
+	switch cmd {
+	case "setQuota":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "SetQuota requires 2 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		arg345 := flag.Arg(2)
+		mbTrans346 := thrift.NewTMemoryBufferLen(len(arg345))
+		defer mbTrans346.Close()
+		_, err347 := mbTrans346.WriteString(arg345)
+		if err347 != nil {
+			Usage()
+			return
+		}
+		factory348 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt349 := factory348.GetProtocol(mbTrans346)
+		argvalue1 := aurora.NewResourceAggregate()
+		err350 := argvalue1.Read(jsProt349)
+		if err350 != nil {
+			Usage()
+			return
+		}
+		value1 := argvalue1
+		fmt.Print(client.SetQuota(value0, value1))
+		fmt.Print("\n")
+		break
+	case "forceTaskState":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "ForceTaskState requires 2 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		tmp1, err := (strconv.Atoi(flag.Arg(2)))
+		if err != nil {
+			Usage()
+			return
+		}
+		argvalue1 := aurora.ScheduleStatus(tmp1)
+		value1 := argvalue1
+		fmt.Print(client.ForceTaskState(value0, value1))
+		fmt.Print("\n")
+		break
+	case "performBackup":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "PerformBackup requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.PerformBackup())
+		fmt.Print("\n")
+		break
+	case "listBackups":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "ListBackups requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.ListBackups())
+		fmt.Print("\n")
+		break
+	case "stageRecovery":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "StageRecovery requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.StageRecovery(value0))
+		fmt.Print("\n")
+		break
+	case "queryRecovery":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "QueryRecovery requires 1 args")
+			flag.Usage()
+		}
+		arg353 := flag.Arg(1)
+		mbTrans354 := thrift.NewTMemoryBufferLen(len(arg353))
+		defer mbTrans354.Close()
+		_, err355 := mbTrans354.WriteString(arg353)
+		if err355 != nil {
+			Usage()
+			return
+		}
+		factory356 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt357 := factory356.GetProtocol(mbTrans354)
+		argvalue0 := aurora.NewTaskQuery()
+		err358 := argvalue0.Read(jsProt357)
+		if err358 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.QueryRecovery(value0))
+		fmt.Print("\n")
+		break
+	case "deleteRecoveryTasks":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "DeleteRecoveryTasks requires 1 args")
+			flag.Usage()
+		}
+		arg359 := flag.Arg(1)
+		mbTrans360 := thrift.NewTMemoryBufferLen(len(arg359))
+		defer mbTrans360.Close()
+		_, err361 := mbTrans360.WriteString(arg359)
+		if err361 != nil {
+			Usage()
+			return
+		}
+		factory362 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt363 := factory362.GetProtocol(mbTrans360)
+		argvalue0 := aurora.NewTaskQuery()
+		err364 := argvalue0.Read(jsProt363)
+		if err364 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.DeleteRecoveryTasks(value0))
+		fmt.Print("\n")
+		break
+	case "commitRecovery":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "CommitRecovery requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.CommitRecovery())
+		fmt.Print("\n")
+		break
+	case "unloadRecovery":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "UnloadRecovery requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.UnloadRecovery())
+		fmt.Print("\n")
+		break
+	case "startMaintenance":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "StartMaintenance requires 1 args")
+			flag.Usage()
+		}
+		arg365 := flag.Arg(1)
+		mbTrans366 := thrift.NewTMemoryBufferLen(len(arg365))
+		defer mbTrans366.Close()
+		_, err367 := mbTrans366.WriteString(arg365)
+		if err367 != nil {
+			Usage()
+			return
+		}
+		factory368 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt369 := factory368.GetProtocol(mbTrans366)
+		argvalue0 := aurora.NewHosts()
+		err370 := argvalue0.Read(jsProt369)
+		if err370 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.StartMaintenance(value0))
+		fmt.Print("\n")
+		break
+	case "drainHosts":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "DrainHosts requires 1 args")
+			flag.Usage()
+		}
+		arg371 := flag.Arg(1)
+		mbTrans372 := thrift.NewTMemoryBufferLen(len(arg371))
+		defer mbTrans372.Close()
+		_, err373 := mbTrans372.WriteString(arg371)
+		if err373 != nil {
+			Usage()
+			return
+		}
+		factory374 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt375 := factory374.GetProtocol(mbTrans372)
+		argvalue0 := aurora.NewHosts()
+		err376 := argvalue0.Read(jsProt375)
+		if err376 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.DrainHosts(value0))
+		fmt.Print("\n")
+		break
+	case "maintenanceStatus":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "MaintenanceStatus requires 1 args")
+			flag.Usage()
+		}
+		arg377 := flag.Arg(1)
+		mbTrans378 := thrift.NewTMemoryBufferLen(len(arg377))
+		defer mbTrans378.Close()
+		_, err379 := mbTrans378.WriteString(arg377)
+		if err379 != nil {
+			Usage()
+			return
+		}
+		factory380 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt381 := factory380.GetProtocol(mbTrans378)
+		argvalue0 := aurora.NewHosts()
+		err382 := argvalue0.Read(jsProt381)
+		if err382 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.MaintenanceStatus(value0))
+		fmt.Print("\n")
+		break
+	case "endMaintenance":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "EndMaintenance requires 1 args")
+			flag.Usage()
+		}
+		arg383 := flag.Arg(1)
+		mbTrans384 := thrift.NewTMemoryBufferLen(len(arg383))
+		defer mbTrans384.Close()
+		_, err385 := mbTrans384.WriteString(arg383)
+		if err385 != nil {
+			Usage()
+			return
+		}
+		factory386 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt387 := factory386.GetProtocol(mbTrans384)
+		argvalue0 := aurora.NewHosts()
+		err388 := argvalue0.Read(jsProt387)
+		if err388 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.EndMaintenance(value0))
+		fmt.Print("\n")
+		break
+	case "snapshot":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "Snapshot requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.Snapshot())
+		fmt.Print("\n")
+		break
+	case "rewriteConfigs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "RewriteConfigs requires 1 args")
+			flag.Usage()
+		}
+		arg389 := flag.Arg(1)
+		mbTrans390 := thrift.NewTMemoryBufferLen(len(arg389))
+		defer mbTrans390.Close()
+		_, err391 := mbTrans390.WriteString(arg389)
+		if err391 != nil {
+			Usage()
+			return
+		}
+		factory392 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt393 := factory392.GetProtocol(mbTrans390)
+		argvalue0 := aurora.NewRewriteConfigsRequest()
+		err394 := argvalue0.Read(jsProt393)
+		if err394 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.RewriteConfigs(value0))
+		fmt.Print("\n")
+		break
+	case "createJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "CreateJob requires 1 args")
+			flag.Usage()
+		}
+		arg395 := flag.Arg(1)
+		mbTrans396 := thrift.NewTMemoryBufferLen(len(arg395))
+		defer mbTrans396.Close()
+		_, err397 := mbTrans396.WriteString(arg395)
+		if err397 != nil {
+			Usage()
+			return
+		}
+		factory398 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt399 := factory398.GetProtocol(mbTrans396)
+		argvalue0 := aurora.NewJobConfiguration()
+		err400 := argvalue0.Read(jsProt399)
+		if err400 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.CreateJob(value0))
+		fmt.Print("\n")
+		break
+	case "scheduleCronJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "ScheduleCronJob requires 1 args")
+			flag.Usage()
+		}
+		arg401 := flag.Arg(1)
+		mbTrans402 := thrift.NewTMemoryBufferLen(len(arg401))
+		defer mbTrans402.Close()
+		_, err403 := mbTrans402.WriteString(arg401)
+		if err403 != nil {
+			Usage()
+			return
+		}
+		factory404 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt405 := factory404.GetProtocol(mbTrans402)
+		argvalue0 := aurora.NewJobConfiguration()
+		err406 := argvalue0.Read(jsProt405)
+		if err406 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.ScheduleCronJob(value0))
+		fmt.Print("\n")
+		break
+	case "descheduleCronJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "DescheduleCronJob requires 1 args")
+			flag.Usage()
+		}
+		arg407 := flag.Arg(1)
+		mbTrans408 := thrift.NewTMemoryBufferLen(len(arg407))
+		defer mbTrans408.Close()
+		_, err409 := mbTrans408.WriteString(arg407)
+		if err409 != nil {
+			Usage()
+			return
+		}
+		factory410 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt411 := factory410.GetProtocol(mbTrans408)
+		argvalue0 := aurora.NewJobKey()
+		err412 := argvalue0.Read(jsProt411)
+		if err412 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.DescheduleCronJob(value0))
+		fmt.Print("\n")
+		break
+	case "startCronJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "StartCronJob requires 1 args")
+			flag.Usage()
+		}
+		arg413 := flag.Arg(1)
+		mbTrans414 := thrift.NewTMemoryBufferLen(len(arg413))
+		defer mbTrans414.Close()
+		_, err415 := mbTrans414.WriteString(arg413)
+		if err415 != nil {
+			Usage()
+			return
+		}
+		factory416 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt417 := factory416.GetProtocol(mbTrans414)
+		argvalue0 := aurora.NewJobKey()
+		err418 := argvalue0.Read(jsProt417)
+		if err418 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.StartCronJob(value0))
+		fmt.Print("\n")
+		break
+	case "restartShards":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "RestartShards requires 2 args")
+			flag.Usage()
+		}
+		arg419 := flag.Arg(1)
+		mbTrans420 := thrift.NewTMemoryBufferLen(len(arg419))
+		defer mbTrans420.Close()
+		_, err421 := mbTrans420.WriteString(arg419)
+		if err421 != nil {
+			Usage()
+			return
+		}
+		factory422 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt423 := factory422.GetProtocol(mbTrans420)
+		argvalue0 := aurora.NewJobKey()
+		err424 := argvalue0.Read(jsProt423)
+		if err424 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		arg425 := flag.Arg(2)
+		mbTrans426 := thrift.NewTMemoryBufferLen(len(arg425))
+		defer mbTrans426.Close()
+		_, err427 := mbTrans426.WriteString(arg425)
+		if err427 != nil {
+			Usage()
+			return
+		}
+		factory428 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt429 := factory428.GetProtocol(mbTrans426)
+		containerStruct1 := aurora.NewAuroraAdminRestartShardsArgs()
+		err430 := containerStruct1.ReadField2(jsProt429)
+		if err430 != nil {
+			Usage()
+			return
+		}
+		argvalue1 := containerStruct1.ShardIds
+		value1 := argvalue1
+		fmt.Print(client.RestartShards(value0, value1))
+		fmt.Print("\n")
+		break
+	case "killTasks":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "KillTasks requires 2 args")
+			flag.Usage()
+		}
+		arg431 := flag.Arg(1)
+		mbTrans432 := thrift.NewTMemoryBufferLen(len(arg431))
+		defer mbTrans432.Close()
+		_, err433 := mbTrans432.WriteString(arg431)
+		if err433 != nil {
+			Usage()
+			return
+		}
+		factory434 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt435 := factory434.GetProtocol(mbTrans432)
+		argvalue0 := aurora.NewJobKey()
+		err436 := argvalue0.Read(jsProt435)
+		if err436 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		arg437 := flag.Arg(2)
+		mbTrans438 := thrift.NewTMemoryBufferLen(len(arg437))
+		defer mbTrans438.Close()
+		_, err439 := mbTrans438.WriteString(arg437)
+		if err439 != nil {
+			Usage()
+			return
+		}
+		factory440 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt441 := factory440.GetProtocol(mbTrans438)
+		containerStruct1 := aurora.NewAuroraAdminKillTasksArgs()
+		err442 := containerStruct1.ReadField2(jsProt441)
+		if err442 != nil {
+			Usage()
+			return
+		}
+		argvalue1 := containerStruct1.Instances
+		value1 := argvalue1
+		fmt.Print(client.KillTasks(value0, value1))
+		fmt.Print("\n")
+		break
+	case "addInstances":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "AddInstances requires 2 args")
+			flag.Usage()
+		}
+		arg443 := flag.Arg(1)
+		mbTrans444 := thrift.NewTMemoryBufferLen(len(arg443))
+		defer mbTrans444.Close()
+		_, err445 := mbTrans444.WriteString(arg443)
+		if err445 != nil {
+			Usage()
+			return
+		}
+		factory446 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt447 := factory446.GetProtocol(mbTrans444)
+		argvalue0 := aurora.NewInstanceKey()
+		err448 := argvalue0.Read(jsProt447)
+		if err448 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		tmp1, err449 := (strconv.Atoi(flag.Arg(2)))
+		if err449 != nil {
+			Usage()
+			return
+		}
+		argvalue1 := int32(tmp1)
+		value1 := argvalue1
+		fmt.Print(client.AddInstances(value0, value1))
+		fmt.Print("\n")
+		break
+	case "replaceCronTemplate":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "ReplaceCronTemplate requires 1 args")
+			flag.Usage()
+		}
+		arg450 := flag.Arg(1)
+		mbTrans451 := thrift.NewTMemoryBufferLen(len(arg450))
+		defer mbTrans451.Close()
+		_, err452 := mbTrans451.WriteString(arg450)
+		if err452 != nil {
+			Usage()
+			return
+		}
+		factory453 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt454 := factory453.GetProtocol(mbTrans451)
+		argvalue0 := aurora.NewJobConfiguration()
+		err455 := argvalue0.Read(jsProt454)
+		if err455 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.ReplaceCronTemplate(value0))
+		fmt.Print("\n")
+		break
+	case "startJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "StartJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg456 := flag.Arg(1)
+		mbTrans457 := thrift.NewTMemoryBufferLen(len(arg456))
+		defer mbTrans457.Close()
+		_, err458 := mbTrans457.WriteString(arg456)
+		if err458 != nil {
+			Usage()
+			return
+		}
+		factory459 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt460 := factory459.GetProtocol(mbTrans457)
+		argvalue0 := aurora.NewJobUpdateRequest()
+		err461 := argvalue0.Read(jsProt460)
+		if err461 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.StartJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "pauseJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "PauseJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg463 := flag.Arg(1)
+		mbTrans464 := thrift.NewTMemoryBufferLen(len(arg463))
+		defer mbTrans464.Close()
+		_, err465 := mbTrans464.WriteString(arg463)
+		if err465 != nil {
+			Usage()
+			return
+		}
+		factory466 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt467 := factory466.GetProtocol(mbTrans464)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err468 := argvalue0.Read(jsProt467)
+		if err468 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.PauseJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "resumeJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "ResumeJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg470 := flag.Arg(1)
+		mbTrans471 := thrift.NewTMemoryBufferLen(len(arg470))
+		defer mbTrans471.Close()
+		_, err472 := mbTrans471.WriteString(arg470)
+		if err472 != nil {
+			Usage()
+			return
+		}
+		factory473 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt474 := factory473.GetProtocol(mbTrans471)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err475 := argvalue0.Read(jsProt474)
+		if err475 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.ResumeJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "abortJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "AbortJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg477 := flag.Arg(1)
+		mbTrans478 := thrift.NewTMemoryBufferLen(len(arg477))
+		defer mbTrans478.Close()
+		_, err479 := mbTrans478.WriteString(arg477)
+		if err479 != nil {
+			Usage()
+			return
+		}
+		factory480 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt481 := factory480.GetProtocol(mbTrans478)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err482 := argvalue0.Read(jsProt481)
+		if err482 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.AbortJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "rollbackJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "RollbackJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg484 := flag.Arg(1)
+		mbTrans485 := thrift.NewTMemoryBufferLen(len(arg484))
+		defer mbTrans485.Close()
+		_, err486 := mbTrans485.WriteString(arg484)
+		if err486 != nil {
+			Usage()
+			return
+		}
+		factory487 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt488 := factory487.GetProtocol(mbTrans485)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err489 := argvalue0.Read(jsProt488)
+		if err489 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.RollbackJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "pulseJobUpdate":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "PulseJobUpdate requires 1 args")
+			flag.Usage()
+		}
+		arg491 := flag.Arg(1)
+		mbTrans492 := thrift.NewTMemoryBufferLen(len(arg491))
+		defer mbTrans492.Close()
+		_, err493 := mbTrans492.WriteString(arg491)
+		if err493 != nil {
+			Usage()
+			return
+		}
+		factory494 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt495 := factory494.GetProtocol(mbTrans492)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err496 := argvalue0.Read(jsProt495)
+		if err496 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.PulseJobUpdate(value0))
+		fmt.Print("\n")
+		break
+	case "getRoleSummary":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "GetRoleSummary requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.GetRoleSummary())
+		fmt.Print("\n")
+		break
+	case "getJobSummary":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobSummary requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetJobSummary(value0))
+		fmt.Print("\n")
+		break
+	case "getTasksStatus":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetTasksStatus requires 1 args")
+			flag.Usage()
+		}
+		arg498 := flag.Arg(1)
+		mbTrans499 := thrift.NewTMemoryBufferLen(len(arg498))
+		defer mbTrans499.Close()
+		_, err500 := mbTrans499.WriteString(arg498)
+		if err500 != nil {
+			Usage()
+			return
+		}
+		factory501 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt502 := factory501.GetProtocol(mbTrans499)
+		argvalue0 := aurora.NewTaskQuery()
+		err503 := argvalue0.Read(jsProt502)
+		if err503 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetTasksStatus(value0))
+		fmt.Print("\n")
+		break
+	case "getTasksWithoutConfigs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetTasksWithoutConfigs requires 1 args")
+			flag.Usage()
+		}
+		arg504 := flag.Arg(1)
+		mbTrans505 := thrift.NewTMemoryBufferLen(len(arg504))
+		defer mbTrans505.Close()
+		_, err506 := mbTrans505.WriteString(arg504)
+		if err506 != nil {
+			Usage()
+			return
+		}
+		factory507 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt508 := factory507.GetProtocol(mbTrans505)
+		argvalue0 := aurora.NewTaskQuery()
+		err509 := argvalue0.Read(jsProt508)
+		if err509 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetTasksWithoutConfigs(value0))
+		fmt.Print("\n")
+		break
+	case "getPendingReason":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetPendingReason requires 1 args")
+			flag.Usage()
+		}
+		arg510 := flag.Arg(1)
+		mbTrans511 := thrift.NewTMemoryBufferLen(len(arg510))
+		defer mbTrans511.Close()
+		_, err512 := mbTrans511.WriteString(arg510)
+		if err512 != nil {
+			Usage()
+			return
+		}
+		factory513 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt514 := factory513.GetProtocol(mbTrans511)
+		argvalue0 := aurora.NewTaskQuery()
+		err515 := argvalue0.Read(jsProt514)
+		if err515 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetPendingReason(value0))
+		fmt.Print("\n")
+		break
+	case "getConfigSummary":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetConfigSummary requires 1 args")
+			flag.Usage()
+		}
+		arg516 := flag.Arg(1)
+		mbTrans517 := thrift.NewTMemoryBufferLen(len(arg516))
+		defer mbTrans517.Close()
+		_, err518 := mbTrans517.WriteString(arg516)
+		if err518 != nil {
+			Usage()
+			return
+		}
+		factory519 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt520 := factory519.GetProtocol(mbTrans517)
+		argvalue0 := aurora.NewJobKey()
+		err521 := argvalue0.Read(jsProt520)
+		if err521 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetConfigSummary(value0))
+		fmt.Print("\n")
+		break
+	case "getJobs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobs requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetJobs(value0))
+		fmt.Print("\n")
+		break
+	case "getQuota":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetQuota requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetQuota(value0))
+		fmt.Print("\n")
+		break
+	case "populateJobConfig":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "PopulateJobConfig requires 1 args")
+			flag.Usage()
+		}
+		arg524 := flag.Arg(1)
+		mbTrans525 := thrift.NewTMemoryBufferLen(len(arg524))
+		defer mbTrans525.Close()
+		_, err526 := mbTrans525.WriteString(arg524)
+		if err526 != nil {
+			Usage()
+			return
+		}
+		factory527 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt528 := factory527.GetProtocol(mbTrans525)
+		argvalue0 := aurora.NewJobConfiguration()
+		err529 := argvalue0.Read(jsProt528)
+		if err529 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.PopulateJobConfig(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateSummaries":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateSummaries requires 1 args")
+			flag.Usage()
+		}
+		arg530 := flag.Arg(1)
+		mbTrans531 := thrift.NewTMemoryBufferLen(len(arg530))
+		defer mbTrans531.Close()
+		_, err532 := mbTrans531.WriteString(arg530)
+		if err532 != nil {
+			Usage()
+			return
+		}
+		factory533 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt534 := factory533.GetProtocol(mbTrans531)
+		argvalue0 := aurora.NewJobUpdateQuery()
+		err535 := argvalue0.Read(jsProt534)
+		if err535 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateSummaries(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateDetails":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateDetails requires 1 args")
+			flag.Usage()
+		}
+		arg536 := flag.Arg(1)
+		mbTrans537 := thrift.NewTMemoryBufferLen(len(arg536))
+		defer mbTrans537.Close()
+		_, err538 := mbTrans537.WriteString(arg536)
+		if err538 != nil {
+			Usage()
+			return
+		}
+		factory539 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt540 := factory539.GetProtocol(mbTrans537)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err541 := argvalue0.Read(jsProt540)
+		if err541 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateDetails(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateDiff":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateDiff requires 1 args")
+			flag.Usage()
+		}
+		arg542 := flag.Arg(1)
+		mbTrans543 := thrift.NewTMemoryBufferLen(len(arg542))
+		defer mbTrans543.Close()
+		_, err544 := mbTrans543.WriteString(arg542)
+		if err544 != nil {
+			Usage()
+			return
+		}
+		factory545 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt546 := factory545.GetProtocol(mbTrans543)
+		argvalue0 := aurora.NewJobUpdateRequest()
+		err547 := argvalue0.Read(jsProt546)
+		if err547 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateDiff(value0))
+		fmt.Print("\n")
+		break
+	case "getTierConfigs":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "GetTierConfigs requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.GetTierConfigs())
+		fmt.Print("\n")
+		break
+	case "":
+		Usage()
+		break
+	default:
+		fmt.Fprintln(os.Stderr, "Invalid function ", cmd)
+	}
+}
diff --git a/gen-go/apache/aurora/aurora_scheduler_manager-remote/aurora_scheduler_manager-remote.go b/gen-go/apache/aurora/aurora_scheduler_manager-remote/aurora_scheduler_manager-remote.go
new file mode 100755
index 0000000..e04d11a
--- /dev/null
+++ b/gen-go/apache/aurora/aurora_scheduler_manager-remote/aurora_scheduler_manager-remote.go
@@ -0,0 +1,799 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package main
+
+import (
+	"apache/aurora"
+	"flag"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+	"math"
+	"net"
+	"net/url"
+	"os"
+	"strconv"
+	"strings"
+)
+
+func Usage() {
+	fmt.Fprintln(os.Stderr, "Usage of ", os.Args[0], " [-h host:port] [-u url] [-f[ramed]] function [arg1 [arg2...]]:")
+	flag.PrintDefaults()
+	fmt.Fprintln(os.Stderr, "\nFunctions:")
+	fmt.Fprintln(os.Stderr, "  Response createJob(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response scheduleCronJob(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response descheduleCronJob(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response startCronJob(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response restartShards(JobKey job,  shardIds)")
+	fmt.Fprintln(os.Stderr, "  Response killTasks(JobKey job,  instances)")
+	fmt.Fprintln(os.Stderr, "  Response addInstances(InstanceKey key, i32 count)")
+	fmt.Fprintln(os.Stderr, "  Response replaceCronTemplate(JobConfiguration config)")
+	fmt.Fprintln(os.Stderr, "  Response startJobUpdate(JobUpdateRequest request, string message)")
+	fmt.Fprintln(os.Stderr, "  Response pauseJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response resumeJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response abortJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response rollbackJobUpdate(JobUpdateKey key, string message)")
+	fmt.Fprintln(os.Stderr, "  Response pulseJobUpdate(JobUpdateKey key)")
+	fmt.Fprintln(os.Stderr, "  Response getRoleSummary()")
+	fmt.Fprintln(os.Stderr, "  Response getJobSummary(string role)")
+	fmt.Fprintln(os.Stderr, "  Response getTasksStatus(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getTasksWithoutConfigs(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getPendingReason(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getConfigSummary(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response getJobs(string ownerRole)")
+	fmt.Fprintln(os.Stderr, "  Response getQuota(string ownerRole)")
+	fmt.Fprintln(os.Stderr, "  Response populateJobConfig(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateSummaries(JobUpdateQuery jobUpdateQuery)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateDetails(JobUpdateKey key)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateDiff(JobUpdateRequest request)")
+	fmt.Fprintln(os.Stderr, "  Response getTierConfigs()")
+	fmt.Fprintln(os.Stderr)
+	os.Exit(0)
+}
+
+func main() {
+	flag.Usage = Usage
+	var host string
+	var port int
+	var protocol string
+	var urlString string
+	var framed bool
+	var useHttp bool
+	var parsedUrl url.URL
+	var trans thrift.TTransport
+	_ = strconv.Atoi
+	_ = math.Abs
+	flag.Usage = Usage
+	flag.StringVar(&host, "h", "localhost", "Specify host and port")
+	flag.IntVar(&port, "p", 9090, "Specify port")
+	flag.StringVar(&protocol, "P", "binary", "Specify the protocol (binary, compact, simplejson, json)")
+	flag.StringVar(&urlString, "u", "", "Specify the url")
+	flag.BoolVar(&framed, "framed", false, "Use framed transport")
+	flag.BoolVar(&useHttp, "http", false, "Use http")
+	flag.Parse()
+
+	if len(urlString) > 0 {
+		parsedUrl, err := url.Parse(urlString)
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
+			flag.Usage()
+		}
+		host = parsedUrl.Host
+		useHttp = len(parsedUrl.Scheme) <= 0 || parsedUrl.Scheme == "http"
+	} else if useHttp {
+		_, err := url.Parse(fmt.Sprint("http://", host, ":", port))
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
+			flag.Usage()
+		}
+	}
+
+	cmd := flag.Arg(0)
+	var err error
+	if useHttp {
+		trans, err = thrift.NewTHttpClient(parsedUrl.String())
+	} else {
+		portStr := fmt.Sprint(port)
+		if strings.Contains(host, ":") {
+			host, portStr, err = net.SplitHostPort(host)
+			if err != nil {
+				fmt.Fprintln(os.Stderr, "error with host:", err)
+				os.Exit(1)
+			}
+		}
+		trans, err = thrift.NewTSocket(net.JoinHostPort(host, portStr))
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "error resolving address:", err)
+			os.Exit(1)
+		}
+		if framed {
+			trans = thrift.NewTFramedTransport(trans)
+		}
+	}
+	if err != nil {
+		fmt.Fprintln(os.Stderr, "Error creating transport", err)
+		os.Exit(1)
+	}
+	defer trans.Close()
+	var protocolFactory thrift.TProtocolFactory
+	switch protocol {
+	case "compact":
+		protocolFactory = thrift.NewTCompactProtocolFactory()
+		break
+	case "simplejson":
+		protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
+		break
+	case "json":
+		protocolFactory = thrift.NewTJSONProtocolFactory()
+		break
+	case "binary", "":
+		protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
+		break
+	default:
+		fmt.Fprintln(os.Stderr, "Invalid protocol specified: ", protocol)
+		Usage()
+		os.Exit(1)
+	}
+	client := aurora.NewAuroraSchedulerManagerClientFactory(trans, protocolFactory)
+	if err := trans.Open(); err != nil {
+		fmt.Fprintln(os.Stderr, "Error opening socket to ", host, ":", port, " ", err)
+		os.Exit(1)
+	}
+
+	switch cmd {
+	case "createJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "CreateJob requires 1 args")
+			flag.Usage()
+		}
+		arg160 := flag.Arg(1)
+		mbTrans161 := thrift.NewTMemoryBufferLen(len(arg160))
+		defer mbTrans161.Close()
+		_, err162 := mbTrans161.WriteString(arg160)
+		if err162 != nil {
+			Usage()
+			return
+		}
+		factory163 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt164 := factory163.GetProtocol(mbTrans161)
+		argvalue0 := aurora.NewJobConfiguration()
+		err165 := argvalue0.Read(jsProt164)
+		if err165 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.CreateJob(value0))
+		fmt.Print("\n")
+		break
+	case "scheduleCronJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "ScheduleCronJob requires 1 args")
+			flag.Usage()
+		}
+		arg166 := flag.Arg(1)
+		mbTrans167 := thrift.NewTMemoryBufferLen(len(arg166))
+		defer mbTrans167.Close()
+		_, err168 := mbTrans167.WriteString(arg166)
+		if err168 != nil {
+			Usage()
+			return
+		}
+		factory169 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt170 := factory169.GetProtocol(mbTrans167)
+		argvalue0 := aurora.NewJobConfiguration()
+		err171 := argvalue0.Read(jsProt170)
+		if err171 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.ScheduleCronJob(value0))
+		fmt.Print("\n")
+		break
+	case "descheduleCronJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "DescheduleCronJob requires 1 args")
+			flag.Usage()
+		}
+		arg172 := flag.Arg(1)
+		mbTrans173 := thrift.NewTMemoryBufferLen(len(arg172))
+		defer mbTrans173.Close()
+		_, err174 := mbTrans173.WriteString(arg172)
+		if err174 != nil {
+			Usage()
+			return
+		}
+		factory175 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt176 := factory175.GetProtocol(mbTrans173)
+		argvalue0 := aurora.NewJobKey()
+		err177 := argvalue0.Read(jsProt176)
+		if err177 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.DescheduleCronJob(value0))
+		fmt.Print("\n")
+		break
+	case "startCronJob":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "StartCronJob requires 1 args")
+			flag.Usage()
+		}
+		arg178 := flag.Arg(1)
+		mbTrans179 := thrift.NewTMemoryBufferLen(len(arg178))
+		defer mbTrans179.Close()
+		_, err180 := mbTrans179.WriteString(arg178)
+		if err180 != nil {
+			Usage()
+			return
+		}
+		factory181 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt182 := factory181.GetProtocol(mbTrans179)
+		argvalue0 := aurora.NewJobKey()
+		err183 := argvalue0.Read(jsProt182)
+		if err183 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.StartCronJob(value0))
+		fmt.Print("\n")
+		break
+	case "restartShards":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "RestartShards requires 2 args")
+			flag.Usage()
+		}
+		arg184 := flag.Arg(1)
+		mbTrans185 := thrift.NewTMemoryBufferLen(len(arg184))
+		defer mbTrans185.Close()
+		_, err186 := mbTrans185.WriteString(arg184)
+		if err186 != nil {
+			Usage()
+			return
+		}
+		factory187 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt188 := factory187.GetProtocol(mbTrans185)
+		argvalue0 := aurora.NewJobKey()
+		err189 := argvalue0.Read(jsProt188)
+		if err189 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		arg190 := flag.Arg(2)
+		mbTrans191 := thrift.NewTMemoryBufferLen(len(arg190))
+		defer mbTrans191.Close()
+		_, err192 := mbTrans191.WriteString(arg190)
+		if err192 != nil {
+			Usage()
+			return
+		}
+		factory193 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt194 := factory193.GetProtocol(mbTrans191)
+		containerStruct1 := aurora.NewAuroraSchedulerManagerRestartShardsArgs()
+		err195 := containerStruct1.ReadField2(jsProt194)
+		if err195 != nil {
+			Usage()
+			return
+		}
+		argvalue1 := containerStruct1.ShardIds
+		value1 := argvalue1
+		fmt.Print(client.RestartShards(value0, value1))
+		fmt.Print("\n")
+		break
+	case "killTasks":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "KillTasks requires 2 args")
+			flag.Usage()
+		}
+		arg196 := flag.Arg(1)
+		mbTrans197 := thrift.NewTMemoryBufferLen(len(arg196))
+		defer mbTrans197.Close()
+		_, err198 := mbTrans197.WriteString(arg196)
+		if err198 != nil {
+			Usage()
+			return
+		}
+		factory199 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt200 := factory199.GetProtocol(mbTrans197)
+		argvalue0 := aurora.NewJobKey()
+		err201 := argvalue0.Read(jsProt200)
+		if err201 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		arg202 := flag.Arg(2)
+		mbTrans203 := thrift.NewTMemoryBufferLen(len(arg202))
+		defer mbTrans203.Close()
+		_, err204 := mbTrans203.WriteString(arg202)
+		if err204 != nil {
+			Usage()
+			return
+		}
+		factory205 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt206 := factory205.GetProtocol(mbTrans203)
+		containerStruct1 := aurora.NewAuroraSchedulerManagerKillTasksArgs()
+		err207 := containerStruct1.ReadField2(jsProt206)
+		if err207 != nil {
+			Usage()
+			return
+		}
+		argvalue1 := containerStruct1.Instances
+		value1 := argvalue1
+		fmt.Print(client.KillTasks(value0, value1))
+		fmt.Print("\n")
+		break
+	case "addInstances":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "AddInstances requires 2 args")
+			flag.Usage()
+		}
+		arg208 := flag.Arg(1)
+		mbTrans209 := thrift.NewTMemoryBufferLen(len(arg208))
+		defer mbTrans209.Close()
+		_, err210 := mbTrans209.WriteString(arg208)
+		if err210 != nil {
+			Usage()
+			return
+		}
+		factory211 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt212 := factory211.GetProtocol(mbTrans209)
+		argvalue0 := aurora.NewInstanceKey()
+		err213 := argvalue0.Read(jsProt212)
+		if err213 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		tmp1, err214 := (strconv.Atoi(flag.Arg(2)))
+		if err214 != nil {
+			Usage()
+			return
+		}
+		argvalue1 := int32(tmp1)
+		value1 := argvalue1
+		fmt.Print(client.AddInstances(value0, value1))
+		fmt.Print("\n")
+		break
+	case "replaceCronTemplate":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "ReplaceCronTemplate requires 1 args")
+			flag.Usage()
+		}
+		arg215 := flag.Arg(1)
+		mbTrans216 := thrift.NewTMemoryBufferLen(len(arg215))
+		defer mbTrans216.Close()
+		_, err217 := mbTrans216.WriteString(arg215)
+		if err217 != nil {
+			Usage()
+			return
+		}
+		factory218 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt219 := factory218.GetProtocol(mbTrans216)
+		argvalue0 := aurora.NewJobConfiguration()
+		err220 := argvalue0.Read(jsProt219)
+		if err220 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.ReplaceCronTemplate(value0))
+		fmt.Print("\n")
+		break
+	case "startJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "StartJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg221 := flag.Arg(1)
+		mbTrans222 := thrift.NewTMemoryBufferLen(len(arg221))
+		defer mbTrans222.Close()
+		_, err223 := mbTrans222.WriteString(arg221)
+		if err223 != nil {
+			Usage()
+			return
+		}
+		factory224 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt225 := factory224.GetProtocol(mbTrans222)
+		argvalue0 := aurora.NewJobUpdateRequest()
+		err226 := argvalue0.Read(jsProt225)
+		if err226 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.StartJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "pauseJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "PauseJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg228 := flag.Arg(1)
+		mbTrans229 := thrift.NewTMemoryBufferLen(len(arg228))
+		defer mbTrans229.Close()
+		_, err230 := mbTrans229.WriteString(arg228)
+		if err230 != nil {
+			Usage()
+			return
+		}
+		factory231 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt232 := factory231.GetProtocol(mbTrans229)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err233 := argvalue0.Read(jsProt232)
+		if err233 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.PauseJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "resumeJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "ResumeJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg235 := flag.Arg(1)
+		mbTrans236 := thrift.NewTMemoryBufferLen(len(arg235))
+		defer mbTrans236.Close()
+		_, err237 := mbTrans236.WriteString(arg235)
+		if err237 != nil {
+			Usage()
+			return
+		}
+		factory238 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt239 := factory238.GetProtocol(mbTrans236)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err240 := argvalue0.Read(jsProt239)
+		if err240 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.ResumeJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "abortJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "AbortJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg242 := flag.Arg(1)
+		mbTrans243 := thrift.NewTMemoryBufferLen(len(arg242))
+		defer mbTrans243.Close()
+		_, err244 := mbTrans243.WriteString(arg242)
+		if err244 != nil {
+			Usage()
+			return
+		}
+		factory245 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt246 := factory245.GetProtocol(mbTrans243)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err247 := argvalue0.Read(jsProt246)
+		if err247 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.AbortJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "rollbackJobUpdate":
+		if flag.NArg()-1 != 2 {
+			fmt.Fprintln(os.Stderr, "RollbackJobUpdate requires 2 args")
+			flag.Usage()
+		}
+		arg249 := flag.Arg(1)
+		mbTrans250 := thrift.NewTMemoryBufferLen(len(arg249))
+		defer mbTrans250.Close()
+		_, err251 := mbTrans250.WriteString(arg249)
+		if err251 != nil {
+			Usage()
+			return
+		}
+		factory252 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt253 := factory252.GetProtocol(mbTrans250)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err254 := argvalue0.Read(jsProt253)
+		if err254 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		argvalue1 := flag.Arg(2)
+		value1 := argvalue1
+		fmt.Print(client.RollbackJobUpdate(value0, value1))
+		fmt.Print("\n")
+		break
+	case "pulseJobUpdate":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "PulseJobUpdate requires 1 args")
+			flag.Usage()
+		}
+		arg256 := flag.Arg(1)
+		mbTrans257 := thrift.NewTMemoryBufferLen(len(arg256))
+		defer mbTrans257.Close()
+		_, err258 := mbTrans257.WriteString(arg256)
+		if err258 != nil {
+			Usage()
+			return
+		}
+		factory259 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt260 := factory259.GetProtocol(mbTrans257)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err261 := argvalue0.Read(jsProt260)
+		if err261 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.PulseJobUpdate(value0))
+		fmt.Print("\n")
+		break
+	case "getRoleSummary":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "GetRoleSummary requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.GetRoleSummary())
+		fmt.Print("\n")
+		break
+	case "getJobSummary":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobSummary requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetJobSummary(value0))
+		fmt.Print("\n")
+		break
+	case "getTasksStatus":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetTasksStatus requires 1 args")
+			flag.Usage()
+		}
+		arg263 := flag.Arg(1)
+		mbTrans264 := thrift.NewTMemoryBufferLen(len(arg263))
+		defer mbTrans264.Close()
+		_, err265 := mbTrans264.WriteString(arg263)
+		if err265 != nil {
+			Usage()
+			return
+		}
+		factory266 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt267 := factory266.GetProtocol(mbTrans264)
+		argvalue0 := aurora.NewTaskQuery()
+		err268 := argvalue0.Read(jsProt267)
+		if err268 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetTasksStatus(value0))
+		fmt.Print("\n")
+		break
+	case "getTasksWithoutConfigs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetTasksWithoutConfigs requires 1 args")
+			flag.Usage()
+		}
+		arg269 := flag.Arg(1)
+		mbTrans270 := thrift.NewTMemoryBufferLen(len(arg269))
+		defer mbTrans270.Close()
+		_, err271 := mbTrans270.WriteString(arg269)
+		if err271 != nil {
+			Usage()
+			return
+		}
+		factory272 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt273 := factory272.GetProtocol(mbTrans270)
+		argvalue0 := aurora.NewTaskQuery()
+		err274 := argvalue0.Read(jsProt273)
+		if err274 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetTasksWithoutConfigs(value0))
+		fmt.Print("\n")
+		break
+	case "getPendingReason":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetPendingReason requires 1 args")
+			flag.Usage()
+		}
+		arg275 := flag.Arg(1)
+		mbTrans276 := thrift.NewTMemoryBufferLen(len(arg275))
+		defer mbTrans276.Close()
+		_, err277 := mbTrans276.WriteString(arg275)
+		if err277 != nil {
+			Usage()
+			return
+		}
+		factory278 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt279 := factory278.GetProtocol(mbTrans276)
+		argvalue0 := aurora.NewTaskQuery()
+		err280 := argvalue0.Read(jsProt279)
+		if err280 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetPendingReason(value0))
+		fmt.Print("\n")
+		break
+	case "getConfigSummary":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetConfigSummary requires 1 args")
+			flag.Usage()
+		}
+		arg281 := flag.Arg(1)
+		mbTrans282 := thrift.NewTMemoryBufferLen(len(arg281))
+		defer mbTrans282.Close()
+		_, err283 := mbTrans282.WriteString(arg281)
+		if err283 != nil {
+			Usage()
+			return
+		}
+		factory284 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt285 := factory284.GetProtocol(mbTrans282)
+		argvalue0 := aurora.NewJobKey()
+		err286 := argvalue0.Read(jsProt285)
+		if err286 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetConfigSummary(value0))
+		fmt.Print("\n")
+		break
+	case "getJobs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobs requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetJobs(value0))
+		fmt.Print("\n")
+		break
+	case "getQuota":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetQuota requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetQuota(value0))
+		fmt.Print("\n")
+		break
+	case "populateJobConfig":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "PopulateJobConfig requires 1 args")
+			flag.Usage()
+		}
+		arg289 := flag.Arg(1)
+		mbTrans290 := thrift.NewTMemoryBufferLen(len(arg289))
+		defer mbTrans290.Close()
+		_, err291 := mbTrans290.WriteString(arg289)
+		if err291 != nil {
+			Usage()
+			return
+		}
+		factory292 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt293 := factory292.GetProtocol(mbTrans290)
+		argvalue0 := aurora.NewJobConfiguration()
+		err294 := argvalue0.Read(jsProt293)
+		if err294 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.PopulateJobConfig(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateSummaries":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateSummaries requires 1 args")
+			flag.Usage()
+		}
+		arg295 := flag.Arg(1)
+		mbTrans296 := thrift.NewTMemoryBufferLen(len(arg295))
+		defer mbTrans296.Close()
+		_, err297 := mbTrans296.WriteString(arg295)
+		if err297 != nil {
+			Usage()
+			return
+		}
+		factory298 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt299 := factory298.GetProtocol(mbTrans296)
+		argvalue0 := aurora.NewJobUpdateQuery()
+		err300 := argvalue0.Read(jsProt299)
+		if err300 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateSummaries(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateDetails":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateDetails requires 1 args")
+			flag.Usage()
+		}
+		arg301 := flag.Arg(1)
+		mbTrans302 := thrift.NewTMemoryBufferLen(len(arg301))
+		defer mbTrans302.Close()
+		_, err303 := mbTrans302.WriteString(arg301)
+		if err303 != nil {
+			Usage()
+			return
+		}
+		factory304 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt305 := factory304.GetProtocol(mbTrans302)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err306 := argvalue0.Read(jsProt305)
+		if err306 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateDetails(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateDiff":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateDiff requires 1 args")
+			flag.Usage()
+		}
+		arg307 := flag.Arg(1)
+		mbTrans308 := thrift.NewTMemoryBufferLen(len(arg307))
+		defer mbTrans308.Close()
+		_, err309 := mbTrans308.WriteString(arg307)
+		if err309 != nil {
+			Usage()
+			return
+		}
+		factory310 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt311 := factory310.GetProtocol(mbTrans308)
+		argvalue0 := aurora.NewJobUpdateRequest()
+		err312 := argvalue0.Read(jsProt311)
+		if err312 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateDiff(value0))
+		fmt.Print("\n")
+		break
+	case "getTierConfigs":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "GetTierConfigs requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.GetTierConfigs())
+		fmt.Print("\n")
+		break
+	case "":
+		Usage()
+		break
+	default:
+		fmt.Fprintln(os.Stderr, "Invalid function ", cmd)
+	}
+}
diff --git a/gen-go/apache/aurora/auroraadmin.go b/gen-go/apache/aurora/auroraadmin.go
new file mode 100644
index 0000000..596dbac
--- /dev/null
+++ b/gen-go/apache/aurora/auroraadmin.go
@@ -0,0 +1,4841 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package aurora
+
+import (
+	"bytes"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+)
+
+// (needed to ensure safety because of naive import list construction.)
+var _ = thrift.ZERO
+var _ = fmt.Printf
+var _ = bytes.Equal
+
+type AuroraAdmin interface {
+	AuroraSchedulerManager
+
+	// Assign quota to a user.  This will overwrite any pre-existing quota for the user.
+	//
+	// Parameters:
+	//  - OwnerRole
+	//  - Quota
+	SetQuota(ownerRole string, quota *ResourceAggregate) (r *Response, err error)
+	// Forces a task into a specific state.  This does not guarantee the task will enter the given
+	// state, as the task must still transition within the bounds of the state machine.  However,
+	// it attempts to enter that state via the state machine.
+	//
+	// Parameters:
+	//  - TaskId
+	//  - Status
+	ForceTaskState(taskId string, status ScheduleStatus) (r *Response, err error)
+	// Immediately writes a storage snapshot to disk.
+	PerformBackup() (r *Response, err error)
+	// Lists backups that are available for recovery.
+	ListBackups() (r *Response, err error)
+	// Loads a backup to an in-memory storage.  This must precede all other recovery operations.
+	//
+	// Parameters:
+	//  - BackupId
+	StageRecovery(backupId string) (r *Response, err error)
+	// Queries for tasks in a staged recovery.
+	//
+	// Parameters:
+	//  - Query
+	QueryRecovery(query *TaskQuery) (r *Response, err error)
+	// Deletes tasks from a staged recovery.
+	//
+	// Parameters:
+	//  - Query
+	DeleteRecoveryTasks(query *TaskQuery) (r *Response, err error)
+	// Commits a staged recovery, completely replacing the previous storage state.
+	CommitRecovery() (r *Response, err error)
+	// Unloads (aborts) a staged recovery.
+	UnloadRecovery() (r *Response, err error)
+	// Put the given hosts into maintenance mode.
+	//
+	// Parameters:
+	//  - Hosts
+	StartMaintenance(hosts *Hosts) (r *Response, err error)
+	// Ask scheduler to begin moving tasks scheduled on given hosts.
+	//
+	// Parameters:
+	//  - Hosts
+	DrainHosts(hosts *Hosts) (r *Response, err error)
+	// Retrieve the current maintenance states for a group of hosts.
+	//
+	// Parameters:
+	//  - Hosts
+	MaintenanceStatus(hosts *Hosts) (r *Response, err error)
+	// Set the given hosts back into serving mode.
+	//
+	// Parameters:
+	//  - Hosts
+	EndMaintenance(hosts *Hosts) (r *Response, err error)
+	// Start a storage snapshot and block until it completes.
+	Snapshot() (r *Response, err error)
+	// Forcibly rewrites the stored definition of user configurations.  This is intended to be used
+	// in a controlled setting, primarily to migrate pieces of configurations that are opaque to the
+	// scheduler (e.g. executorConfig).
+	// The scheduler may do some validation of the rewritten configurations, but it is important
+	// that the caller take care to provide valid input and alter only necessary fields.
+	//
+	// Parameters:
+	//  - Request
+	RewriteConfigs(request *RewriteConfigsRequest) (r *Response, err error)
+}
+
+type AuroraAdminClient struct {
+	*AuroraSchedulerManagerClient
+}
+
+func NewAuroraAdminClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *AuroraAdminClient {
+	return &AuroraAdminClient{AuroraSchedulerManagerClient: NewAuroraSchedulerManagerClientFactory(t, f)}
+}
+
+func NewAuroraAdminClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *AuroraAdminClient {
+	return &AuroraAdminClient{AuroraSchedulerManagerClient: NewAuroraSchedulerManagerClientProtocol(t, iprot, oprot)}
+}
+
+// Assign quota to a user.  This will overwrite any pre-existing quota for the user.
+//
+// Parameters:
+//  - OwnerRole
+//  - Quota
+func (p *AuroraAdminClient) SetQuota(ownerRole string, quota *ResourceAggregate) (r *Response, err error) {
+	if err = p.sendSetQuota(ownerRole, quota); err != nil {
+		return
+	}
+	return p.recvSetQuota()
+}
+
+func (p *AuroraAdminClient) sendSetQuota(ownerRole string, quota *ResourceAggregate) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("setQuota", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminSetQuotaArgs{
+		OwnerRole: ownerRole,
+		Quota:     quota,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvSetQuota() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "setQuota" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "setQuota failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "setQuota failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error313 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error314 error
+		error314, err = error313.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error314
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "setQuota failed: invalid message type")
+		return
+	}
+	result := AuroraAdminSetQuotaResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Forces a task into a specific state.  This does not guarantee the task will enter the given
+// state, as the task must still transition within the bounds of the state machine.  However,
+// it attempts to enter that state via the state machine.
+//
+// Parameters:
+//  - TaskId
+//  - Status
+func (p *AuroraAdminClient) ForceTaskState(taskId string, status ScheduleStatus) (r *Response, err error) {
+	if err = p.sendForceTaskState(taskId, status); err != nil {
+		return
+	}
+	return p.recvForceTaskState()
+}
+
+func (p *AuroraAdminClient) sendForceTaskState(taskId string, status ScheduleStatus) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("forceTaskState", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminForceTaskStateArgs{
+		TaskId: taskId,
+		Status: status,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvForceTaskState() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "forceTaskState" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "forceTaskState failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "forceTaskState failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error315 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error316 error
+		error316, err = error315.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error316
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "forceTaskState failed: invalid message type")
+		return
+	}
+	result := AuroraAdminForceTaskStateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Immediately writes a storage snapshot to disk.
+func (p *AuroraAdminClient) PerformBackup() (r *Response, err error) {
+	if err = p.sendPerformBackup(); err != nil {
+		return
+	}
+	return p.recvPerformBackup()
+}
+
+func (p *AuroraAdminClient) sendPerformBackup() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("performBackup", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminPerformBackupArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvPerformBackup() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "performBackup" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "performBackup failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "performBackup failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error317 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error318 error
+		error318, err = error317.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error318
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "performBackup failed: invalid message type")
+		return
+	}
+	result := AuroraAdminPerformBackupResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Lists backups that are available for recovery.
+func (p *AuroraAdminClient) ListBackups() (r *Response, err error) {
+	if err = p.sendListBackups(); err != nil {
+		return
+	}
+	return p.recvListBackups()
+}
+
+func (p *AuroraAdminClient) sendListBackups() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("listBackups", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminListBackupsArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvListBackups() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "listBackups" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "listBackups failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "listBackups failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error319 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error320 error
+		error320, err = error319.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error320
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "listBackups failed: invalid message type")
+		return
+	}
+	result := AuroraAdminListBackupsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Loads a backup to an in-memory storage.  This must precede all other recovery operations.
+//
+// Parameters:
+//  - BackupId
+func (p *AuroraAdminClient) StageRecovery(backupId string) (r *Response, err error) {
+	if err = p.sendStageRecovery(backupId); err != nil {
+		return
+	}
+	return p.recvStageRecovery()
+}
+
+func (p *AuroraAdminClient) sendStageRecovery(backupId string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("stageRecovery", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminStageRecoveryArgs{
+		BackupId: backupId,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvStageRecovery() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "stageRecovery" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "stageRecovery failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "stageRecovery failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error321 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error322 error
+		error322, err = error321.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error322
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "stageRecovery failed: invalid message type")
+		return
+	}
+	result := AuroraAdminStageRecoveryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Queries for tasks in a staged recovery.
+//
+// Parameters:
+//  - Query
+func (p *AuroraAdminClient) QueryRecovery(query *TaskQuery) (r *Response, err error) {
+	if err = p.sendQueryRecovery(query); err != nil {
+		return
+	}
+	return p.recvQueryRecovery()
+}
+
+func (p *AuroraAdminClient) sendQueryRecovery(query *TaskQuery) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("queryRecovery", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminQueryRecoveryArgs{
+		Query: query,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvQueryRecovery() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "queryRecovery" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "queryRecovery failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "queryRecovery failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error323 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error324 error
+		error324, err = error323.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error324
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "queryRecovery failed: invalid message type")
+		return
+	}
+	result := AuroraAdminQueryRecoveryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Deletes tasks from a staged recovery.
+//
+// Parameters:
+//  - Query
+func (p *AuroraAdminClient) DeleteRecoveryTasks(query *TaskQuery) (r *Response, err error) {
+	if err = p.sendDeleteRecoveryTasks(query); err != nil {
+		return
+	}
+	return p.recvDeleteRecoveryTasks()
+}
+
+func (p *AuroraAdminClient) sendDeleteRecoveryTasks(query *TaskQuery) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("deleteRecoveryTasks", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminDeleteRecoveryTasksArgs{
+		Query: query,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvDeleteRecoveryTasks() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "deleteRecoveryTasks" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "deleteRecoveryTasks failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "deleteRecoveryTasks failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error325 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error326 error
+		error326, err = error325.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error326
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "deleteRecoveryTasks failed: invalid message type")
+		return
+	}
+	result := AuroraAdminDeleteRecoveryTasksResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Commits a staged recovery, completely replacing the previous storage state.
+func (p *AuroraAdminClient) CommitRecovery() (r *Response, err error) {
+	if err = p.sendCommitRecovery(); err != nil {
+		return
+	}
+	return p.recvCommitRecovery()
+}
+
+func (p *AuroraAdminClient) sendCommitRecovery() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("commitRecovery", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminCommitRecoveryArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvCommitRecovery() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "commitRecovery" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "commitRecovery failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "commitRecovery failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error327 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error328 error
+		error328, err = error327.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error328
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "commitRecovery failed: invalid message type")
+		return
+	}
+	result := AuroraAdminCommitRecoveryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Unloads (aborts) a staged recovery.
+func (p *AuroraAdminClient) UnloadRecovery() (r *Response, err error) {
+	if err = p.sendUnloadRecovery(); err != nil {
+		return
+	}
+	return p.recvUnloadRecovery()
+}
+
+func (p *AuroraAdminClient) sendUnloadRecovery() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("unloadRecovery", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminUnloadRecoveryArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvUnloadRecovery() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "unloadRecovery" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "unloadRecovery failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "unloadRecovery failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error329 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error330 error
+		error330, err = error329.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error330
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "unloadRecovery failed: invalid message type")
+		return
+	}
+	result := AuroraAdminUnloadRecoveryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Put the given hosts into maintenance mode.
+//
+// Parameters:
+//  - Hosts
+func (p *AuroraAdminClient) StartMaintenance(hosts *Hosts) (r *Response, err error) {
+	if err = p.sendStartMaintenance(hosts); err != nil {
+		return
+	}
+	return p.recvStartMaintenance()
+}
+
+func (p *AuroraAdminClient) sendStartMaintenance(hosts *Hosts) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("startMaintenance", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminStartMaintenanceArgs{
+		Hosts: hosts,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvStartMaintenance() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "startMaintenance" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "startMaintenance failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "startMaintenance failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error331 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error332 error
+		error332, err = error331.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error332
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "startMaintenance failed: invalid message type")
+		return
+	}
+	result := AuroraAdminStartMaintenanceResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Ask scheduler to begin moving tasks scheduled on given hosts.
+//
+// Parameters:
+//  - Hosts
+func (p *AuroraAdminClient) DrainHosts(hosts *Hosts) (r *Response, err error) {
+	if err = p.sendDrainHosts(hosts); err != nil {
+		return
+	}
+	return p.recvDrainHosts()
+}
+
+func (p *AuroraAdminClient) sendDrainHosts(hosts *Hosts) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("drainHosts", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminDrainHostsArgs{
+		Hosts: hosts,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvDrainHosts() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "drainHosts" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "drainHosts failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "drainHosts failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error333 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error334 error
+		error334, err = error333.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error334
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "drainHosts failed: invalid message type")
+		return
+	}
+	result := AuroraAdminDrainHostsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Retrieve the current maintenance states for a group of hosts.
+//
+// Parameters:
+//  - Hosts
+func (p *AuroraAdminClient) MaintenanceStatus(hosts *Hosts) (r *Response, err error) {
+	if err = p.sendMaintenanceStatus(hosts); err != nil {
+		return
+	}
+	return p.recvMaintenanceStatus()
+}
+
+func (p *AuroraAdminClient) sendMaintenanceStatus(hosts *Hosts) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("maintenanceStatus", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminMaintenanceStatusArgs{
+		Hosts: hosts,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvMaintenanceStatus() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "maintenanceStatus" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "maintenanceStatus failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "maintenanceStatus failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error335 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error336 error
+		error336, err = error335.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error336
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "maintenanceStatus failed: invalid message type")
+		return
+	}
+	result := AuroraAdminMaintenanceStatusResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Set the given hosts back into serving mode.
+//
+// Parameters:
+//  - Hosts
+func (p *AuroraAdminClient) EndMaintenance(hosts *Hosts) (r *Response, err error) {
+	if err = p.sendEndMaintenance(hosts); err != nil {
+		return
+	}
+	return p.recvEndMaintenance()
+}
+
+func (p *AuroraAdminClient) sendEndMaintenance(hosts *Hosts) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("endMaintenance", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminEndMaintenanceArgs{
+		Hosts: hosts,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvEndMaintenance() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "endMaintenance" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "endMaintenance failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "endMaintenance failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error337 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error338 error
+		error338, err = error337.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error338
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "endMaintenance failed: invalid message type")
+		return
+	}
+	result := AuroraAdminEndMaintenanceResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Start a storage snapshot and block until it completes.
+func (p *AuroraAdminClient) Snapshot() (r *Response, err error) {
+	if err = p.sendSnapshot(); err != nil {
+		return
+	}
+	return p.recvSnapshot()
+}
+
+func (p *AuroraAdminClient) sendSnapshot() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("snapshot", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminSnapshotArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvSnapshot() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "snapshot" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "snapshot failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "snapshot failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error339 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error340 error
+		error340, err = error339.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error340
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "snapshot failed: invalid message type")
+		return
+	}
+	result := AuroraAdminSnapshotResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Forcibly rewrites the stored definition of user configurations.  This is intended to be used
+// in a controlled setting, primarily to migrate pieces of configurations that are opaque to the
+// scheduler (e.g. executorConfig).
+// The scheduler may do some validation of the rewritten configurations, but it is important
+// that the caller take care to provide valid input and alter only necessary fields.
+//
+// Parameters:
+//  - Request
+func (p *AuroraAdminClient) RewriteConfigs(request *RewriteConfigsRequest) (r *Response, err error) {
+	if err = p.sendRewriteConfigs(request); err != nil {
+		return
+	}
+	return p.recvRewriteConfigs()
+}
+
+func (p *AuroraAdminClient) sendRewriteConfigs(request *RewriteConfigsRequest) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("rewriteConfigs", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraAdminRewriteConfigsArgs{
+		Request: request,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraAdminClient) recvRewriteConfigs() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "rewriteConfigs" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "rewriteConfigs failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "rewriteConfigs failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error341 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error342 error
+		error342, err = error341.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error342
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "rewriteConfigs failed: invalid message type")
+		return
+	}
+	result := AuroraAdminRewriteConfigsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+type AuroraAdminProcessor struct {
+	*AuroraSchedulerManagerProcessor
+}
+
+func NewAuroraAdminProcessor(handler AuroraAdmin) *AuroraAdminProcessor {
+	self343 := &AuroraAdminProcessor{NewAuroraSchedulerManagerProcessor(handler)}
+	self343.AddToProcessorMap("setQuota", &auroraAdminProcessorSetQuota{handler: handler})
+	self343.AddToProcessorMap("forceTaskState", &auroraAdminProcessorForceTaskState{handler: handler})
+	self343.AddToProcessorMap("performBackup", &auroraAdminProcessorPerformBackup{handler: handler})
+	self343.AddToProcessorMap("listBackups", &auroraAdminProcessorListBackups{handler: handler})
+	self343.AddToProcessorMap("stageRecovery", &auroraAdminProcessorStageRecovery{handler: handler})
+	self343.AddToProcessorMap("queryRecovery", &auroraAdminProcessorQueryRecovery{handler: handler})
+	self343.AddToProcessorMap("deleteRecoveryTasks", &auroraAdminProcessorDeleteRecoveryTasks{handler: handler})
+	self343.AddToProcessorMap("commitRecovery", &auroraAdminProcessorCommitRecovery{handler: handler})
+	self343.AddToProcessorMap("unloadRecovery", &auroraAdminProcessorUnloadRecovery{handler: handler})
+	self343.AddToProcessorMap("startMaintenance", &auroraAdminProcessorStartMaintenance{handler: handler})
+	self343.AddToProcessorMap("drainHosts", &auroraAdminProcessorDrainHosts{handler: handler})
+	self343.AddToProcessorMap("maintenanceStatus", &auroraAdminProcessorMaintenanceStatus{handler: handler})
+	self343.AddToProcessorMap("endMaintenance", &auroraAdminProcessorEndMaintenance{handler: handler})
+	self343.AddToProcessorMap("snapshot", &auroraAdminProcessorSnapshot{handler: handler})
+	self343.AddToProcessorMap("rewriteConfigs", &auroraAdminProcessorRewriteConfigs{handler: handler})
+	return self343
+}
+
+type auroraAdminProcessorSetQuota struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorSetQuota) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminSetQuotaArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("setQuota", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminSetQuotaResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.SetQuota(args.OwnerRole, args.Quota); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing setQuota: "+err2.Error())
+		oprot.WriteMessageBegin("setQuota", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("setQuota", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorForceTaskState struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorForceTaskState) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminForceTaskStateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("forceTaskState", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminForceTaskStateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.ForceTaskState(args.TaskId, args.Status); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing forceTaskState: "+err2.Error())
+		oprot.WriteMessageBegin("forceTaskState", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("forceTaskState", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorPerformBackup struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorPerformBackup) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminPerformBackupArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("performBackup", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminPerformBackupResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.PerformBackup(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing performBackup: "+err2.Error())
+		oprot.WriteMessageBegin("performBackup", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("performBackup", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorListBackups struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorListBackups) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminListBackupsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("listBackups", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminListBackupsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.ListBackups(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing listBackups: "+err2.Error())
+		oprot.WriteMessageBegin("listBackups", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("listBackups", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorStageRecovery struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorStageRecovery) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminStageRecoveryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("stageRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminStageRecoveryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.StageRecovery(args.BackupId); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing stageRecovery: "+err2.Error())
+		oprot.WriteMessageBegin("stageRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("stageRecovery", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorQueryRecovery struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorQueryRecovery) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminQueryRecoveryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("queryRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminQueryRecoveryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.QueryRecovery(args.Query); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing queryRecovery: "+err2.Error())
+		oprot.WriteMessageBegin("queryRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("queryRecovery", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorDeleteRecoveryTasks struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorDeleteRecoveryTasks) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminDeleteRecoveryTasksArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("deleteRecoveryTasks", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminDeleteRecoveryTasksResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.DeleteRecoveryTasks(args.Query); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing deleteRecoveryTasks: "+err2.Error())
+		oprot.WriteMessageBegin("deleteRecoveryTasks", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("deleteRecoveryTasks", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorCommitRecovery struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorCommitRecovery) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminCommitRecoveryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("commitRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminCommitRecoveryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.CommitRecovery(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing commitRecovery: "+err2.Error())
+		oprot.WriteMessageBegin("commitRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("commitRecovery", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorUnloadRecovery struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorUnloadRecovery) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminUnloadRecoveryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("unloadRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminUnloadRecoveryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.UnloadRecovery(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing unloadRecovery: "+err2.Error())
+		oprot.WriteMessageBegin("unloadRecovery", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("unloadRecovery", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorStartMaintenance struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorStartMaintenance) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminStartMaintenanceArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("startMaintenance", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminStartMaintenanceResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.StartMaintenance(args.Hosts); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing startMaintenance: "+err2.Error())
+		oprot.WriteMessageBegin("startMaintenance", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("startMaintenance", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorDrainHosts struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorDrainHosts) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminDrainHostsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("drainHosts", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminDrainHostsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.DrainHosts(args.Hosts); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing drainHosts: "+err2.Error())
+		oprot.WriteMessageBegin("drainHosts", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("drainHosts", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorMaintenanceStatus struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorMaintenanceStatus) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminMaintenanceStatusArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("maintenanceStatus", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminMaintenanceStatusResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.MaintenanceStatus(args.Hosts); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing maintenanceStatus: "+err2.Error())
+		oprot.WriteMessageBegin("maintenanceStatus", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("maintenanceStatus", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorEndMaintenance struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorEndMaintenance) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminEndMaintenanceArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("endMaintenance", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminEndMaintenanceResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.EndMaintenance(args.Hosts); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing endMaintenance: "+err2.Error())
+		oprot.WriteMessageBegin("endMaintenance", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("endMaintenance", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorSnapshot struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorSnapshot) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminSnapshotArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("snapshot", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminSnapshotResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.Snapshot(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing snapshot: "+err2.Error())
+		oprot.WriteMessageBegin("snapshot", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("snapshot", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraAdminProcessorRewriteConfigs struct {
+	handler AuroraAdmin
+}
+
+func (p *auroraAdminProcessorRewriteConfigs) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraAdminRewriteConfigsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("rewriteConfigs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraAdminRewriteConfigsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.RewriteConfigs(args.Request); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing rewriteConfigs: "+err2.Error())
+		oprot.WriteMessageBegin("rewriteConfigs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("rewriteConfigs", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+// HELPER FUNCTIONS AND STRUCTURES
+
+// Attributes:
+//  - OwnerRole
+//  - Quota
+type AuroraAdminSetQuotaArgs struct {
+	OwnerRole string             `thrift:"ownerRole,1" json:"ownerRole"`
+	Quota     *ResourceAggregate `thrift:"quota,2" json:"quota"`
+}
+
+func NewAuroraAdminSetQuotaArgs() *AuroraAdminSetQuotaArgs {
+	return &AuroraAdminSetQuotaArgs{}
+}
+
+func (p *AuroraAdminSetQuotaArgs) GetOwnerRole() string {
+	return p.OwnerRole
+}
+
+var AuroraAdminSetQuotaArgs_Quota_DEFAULT *ResourceAggregate
+
+func (p *AuroraAdminSetQuotaArgs) GetQuota() *ResourceAggregate {
+	if !p.IsSetQuota() {
+		return AuroraAdminSetQuotaArgs_Quota_DEFAULT
+	}
+	return p.Quota
+}
+func (p *AuroraAdminSetQuotaArgs) IsSetQuota() bool {
+	return p.Quota != nil
+}
+
+func (p *AuroraAdminSetQuotaArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaArgs) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.OwnerRole = v
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaArgs) readField2(iprot thrift.TProtocol) error {
+	p.Quota = &ResourceAggregate{}
+	if err := p.Quota.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Quota), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("setQuota_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("ownerRole", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ownerRole: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.OwnerRole)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.ownerRole (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ownerRole: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminSetQuotaArgs) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("quota", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:quota: ", p), err)
+	}
+	if err := p.Quota.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Quota), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:quota: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminSetQuotaArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminSetQuotaArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminSetQuotaResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminSetQuotaResult() *AuroraAdminSetQuotaResult {
+	return &AuroraAdminSetQuotaResult{}
+}
+
+var AuroraAdminSetQuotaResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminSetQuotaResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminSetQuotaResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminSetQuotaResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminSetQuotaResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("setQuota_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSetQuotaResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminSetQuotaResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminSetQuotaResult(%+v)", *p)
+}
+
+// Attributes:
+//  - TaskId
+//  - Status
+type AuroraAdminForceTaskStateArgs struct {
+	TaskId string         `thrift:"taskId,1" json:"taskId"`
+	Status ScheduleStatus `thrift:"status,2" json:"status"`
+}
+
+func NewAuroraAdminForceTaskStateArgs() *AuroraAdminForceTaskStateArgs {
+	return &AuroraAdminForceTaskStateArgs{}
+}
+
+func (p *AuroraAdminForceTaskStateArgs) GetTaskId() string {
+	return p.TaskId
+}
+
+func (p *AuroraAdminForceTaskStateArgs) GetStatus() ScheduleStatus {
+	return p.Status
+}
+func (p *AuroraAdminForceTaskStateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateArgs) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.TaskId = v
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateArgs) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		temp := ScheduleStatus(v)
+		p.Status = temp
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("forceTaskState_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskId", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:taskId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.TaskId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.taskId (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:taskId: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminForceTaskStateArgs) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("status", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:status: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Status)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.status (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:status: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminForceTaskStateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminForceTaskStateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminForceTaskStateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminForceTaskStateResult() *AuroraAdminForceTaskStateResult {
+	return &AuroraAdminForceTaskStateResult{}
+}
+
+var AuroraAdminForceTaskStateResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminForceTaskStateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminForceTaskStateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminForceTaskStateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminForceTaskStateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("forceTaskState_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminForceTaskStateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminForceTaskStateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminForceTaskStateResult(%+v)", *p)
+}
+
+type AuroraAdminPerformBackupArgs struct {
+}
+
+func NewAuroraAdminPerformBackupArgs() *AuroraAdminPerformBackupArgs {
+	return &AuroraAdminPerformBackupArgs{}
+}
+
+func (p *AuroraAdminPerformBackupArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminPerformBackupArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("performBackup_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminPerformBackupArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminPerformBackupArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminPerformBackupResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminPerformBackupResult() *AuroraAdminPerformBackupResult {
+	return &AuroraAdminPerformBackupResult{}
+}
+
+var AuroraAdminPerformBackupResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminPerformBackupResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminPerformBackupResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminPerformBackupResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminPerformBackupResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminPerformBackupResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminPerformBackupResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("performBackup_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminPerformBackupResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminPerformBackupResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminPerformBackupResult(%+v)", *p)
+}
+
+type AuroraAdminListBackupsArgs struct {
+}
+
+func NewAuroraAdminListBackupsArgs() *AuroraAdminListBackupsArgs {
+	return &AuroraAdminListBackupsArgs{}
+}
+
+func (p *AuroraAdminListBackupsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminListBackupsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("listBackups_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminListBackupsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminListBackupsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminListBackupsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminListBackupsResult() *AuroraAdminListBackupsResult {
+	return &AuroraAdminListBackupsResult{}
+}
+
+var AuroraAdminListBackupsResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminListBackupsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminListBackupsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminListBackupsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminListBackupsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminListBackupsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminListBackupsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("listBackups_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminListBackupsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminListBackupsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminListBackupsResult(%+v)", *p)
+}
+
+// Attributes:
+//  - BackupId
+type AuroraAdminStageRecoveryArgs struct {
+	BackupId string `thrift:"backupId,1" json:"backupId"`
+}
+
+func NewAuroraAdminStageRecoveryArgs() *AuroraAdminStageRecoveryArgs {
+	return &AuroraAdminStageRecoveryArgs{}
+}
+
+func (p *AuroraAdminStageRecoveryArgs) GetBackupId() string {
+	return p.BackupId
+}
+func (p *AuroraAdminStageRecoveryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStageRecoveryArgs) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.BackupId = v
+	}
+	return nil
+}
+
+func (p *AuroraAdminStageRecoveryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("stageRecovery_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStageRecoveryArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("backupId", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:backupId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.BackupId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.backupId (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:backupId: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminStageRecoveryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminStageRecoveryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminStageRecoveryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminStageRecoveryResult() *AuroraAdminStageRecoveryResult {
+	return &AuroraAdminStageRecoveryResult{}
+}
+
+var AuroraAdminStageRecoveryResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminStageRecoveryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminStageRecoveryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminStageRecoveryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminStageRecoveryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStageRecoveryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStageRecoveryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("stageRecovery_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStageRecoveryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminStageRecoveryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminStageRecoveryResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Query
+type AuroraAdminQueryRecoveryArgs struct {
+	Query *TaskQuery `thrift:"query,1" json:"query"`
+}
+
+func NewAuroraAdminQueryRecoveryArgs() *AuroraAdminQueryRecoveryArgs {
+	return &AuroraAdminQueryRecoveryArgs{}
+}
+
+var AuroraAdminQueryRecoveryArgs_Query_DEFAULT *TaskQuery
+
+func (p *AuroraAdminQueryRecoveryArgs) GetQuery() *TaskQuery {
+	if !p.IsSetQuery() {
+		return AuroraAdminQueryRecoveryArgs_Query_DEFAULT
+	}
+	return p.Query
+}
+func (p *AuroraAdminQueryRecoveryArgs) IsSetQuery() bool {
+	return p.Query != nil
+}
+
+func (p *AuroraAdminQueryRecoveryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminQueryRecoveryArgs) readField1(iprot thrift.TProtocol) error {
+	p.Query = &TaskQuery{}
+	if err := p.Query.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Query), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminQueryRecoveryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("queryRecovery_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminQueryRecoveryArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("query", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:query: ", p), err)
+	}
+	if err := p.Query.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Query), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:query: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminQueryRecoveryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminQueryRecoveryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminQueryRecoveryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminQueryRecoveryResult() *AuroraAdminQueryRecoveryResult {
+	return &AuroraAdminQueryRecoveryResult{}
+}
+
+var AuroraAdminQueryRecoveryResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminQueryRecoveryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminQueryRecoveryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminQueryRecoveryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminQueryRecoveryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminQueryRecoveryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminQueryRecoveryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("queryRecovery_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminQueryRecoveryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminQueryRecoveryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminQueryRecoveryResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Query
+type AuroraAdminDeleteRecoveryTasksArgs struct {
+	Query *TaskQuery `thrift:"query,1" json:"query"`
+}
+
+func NewAuroraAdminDeleteRecoveryTasksArgs() *AuroraAdminDeleteRecoveryTasksArgs {
+	return &AuroraAdminDeleteRecoveryTasksArgs{}
+}
+
+var AuroraAdminDeleteRecoveryTasksArgs_Query_DEFAULT *TaskQuery
+
+func (p *AuroraAdminDeleteRecoveryTasksArgs) GetQuery() *TaskQuery {
+	if !p.IsSetQuery() {
+		return AuroraAdminDeleteRecoveryTasksArgs_Query_DEFAULT
+	}
+	return p.Query
+}
+func (p *AuroraAdminDeleteRecoveryTasksArgs) IsSetQuery() bool {
+	return p.Query != nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksArgs) readField1(iprot thrift.TProtocol) error {
+	p.Query = &TaskQuery{}
+	if err := p.Query.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Query), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("deleteRecoveryTasks_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("query", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:query: ", p), err)
+	}
+	if err := p.Query.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Query), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:query: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminDeleteRecoveryTasksArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminDeleteRecoveryTasksResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminDeleteRecoveryTasksResult() *AuroraAdminDeleteRecoveryTasksResult {
+	return &AuroraAdminDeleteRecoveryTasksResult{}
+}
+
+var AuroraAdminDeleteRecoveryTasksResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminDeleteRecoveryTasksResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminDeleteRecoveryTasksResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminDeleteRecoveryTasksResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("deleteRecoveryTasks_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminDeleteRecoveryTasksResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminDeleteRecoveryTasksResult(%+v)", *p)
+}
+
+type AuroraAdminCommitRecoveryArgs struct {
+}
+
+func NewAuroraAdminCommitRecoveryArgs() *AuroraAdminCommitRecoveryArgs {
+	return &AuroraAdminCommitRecoveryArgs{}
+}
+
+func (p *AuroraAdminCommitRecoveryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminCommitRecoveryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("commitRecovery_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminCommitRecoveryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminCommitRecoveryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminCommitRecoveryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminCommitRecoveryResult() *AuroraAdminCommitRecoveryResult {
+	return &AuroraAdminCommitRecoveryResult{}
+}
+
+var AuroraAdminCommitRecoveryResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminCommitRecoveryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminCommitRecoveryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminCommitRecoveryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminCommitRecoveryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminCommitRecoveryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminCommitRecoveryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("commitRecovery_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminCommitRecoveryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminCommitRecoveryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminCommitRecoveryResult(%+v)", *p)
+}
+
+type AuroraAdminUnloadRecoveryArgs struct {
+}
+
+func NewAuroraAdminUnloadRecoveryArgs() *AuroraAdminUnloadRecoveryArgs {
+	return &AuroraAdminUnloadRecoveryArgs{}
+}
+
+func (p *AuroraAdminUnloadRecoveryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminUnloadRecoveryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("unloadRecovery_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminUnloadRecoveryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminUnloadRecoveryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminUnloadRecoveryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminUnloadRecoveryResult() *AuroraAdminUnloadRecoveryResult {
+	return &AuroraAdminUnloadRecoveryResult{}
+}
+
+var AuroraAdminUnloadRecoveryResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminUnloadRecoveryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminUnloadRecoveryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminUnloadRecoveryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminUnloadRecoveryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminUnloadRecoveryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminUnloadRecoveryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("unloadRecovery_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminUnloadRecoveryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminUnloadRecoveryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminUnloadRecoveryResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Hosts
+type AuroraAdminStartMaintenanceArgs struct {
+	Hosts *Hosts `thrift:"hosts,1" json:"hosts"`
+}
+
+func NewAuroraAdminStartMaintenanceArgs() *AuroraAdminStartMaintenanceArgs {
+	return &AuroraAdminStartMaintenanceArgs{}
+}
+
+var AuroraAdminStartMaintenanceArgs_Hosts_DEFAULT *Hosts
+
+func (p *AuroraAdminStartMaintenanceArgs) GetHosts() *Hosts {
+	if !p.IsSetHosts() {
+		return AuroraAdminStartMaintenanceArgs_Hosts_DEFAULT
+	}
+	return p.Hosts
+}
+func (p *AuroraAdminStartMaintenanceArgs) IsSetHosts() bool {
+	return p.Hosts != nil
+}
+
+func (p *AuroraAdminStartMaintenanceArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStartMaintenanceArgs) readField1(iprot thrift.TProtocol) error {
+	p.Hosts = &Hosts{}
+	if err := p.Hosts.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Hosts), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStartMaintenanceArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("startMaintenance_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStartMaintenanceArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("hosts", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:hosts: ", p), err)
+	}
+	if err := p.Hosts.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Hosts), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:hosts: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminStartMaintenanceArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminStartMaintenanceArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminStartMaintenanceResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminStartMaintenanceResult() *AuroraAdminStartMaintenanceResult {
+	return &AuroraAdminStartMaintenanceResult{}
+}
+
+var AuroraAdminStartMaintenanceResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminStartMaintenanceResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminStartMaintenanceResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminStartMaintenanceResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminStartMaintenanceResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStartMaintenanceResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStartMaintenanceResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("startMaintenance_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminStartMaintenanceResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminStartMaintenanceResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminStartMaintenanceResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Hosts
+type AuroraAdminDrainHostsArgs struct {
+	Hosts *Hosts `thrift:"hosts,1" json:"hosts"`
+}
+
+func NewAuroraAdminDrainHostsArgs() *AuroraAdminDrainHostsArgs {
+	return &AuroraAdminDrainHostsArgs{}
+}
+
+var AuroraAdminDrainHostsArgs_Hosts_DEFAULT *Hosts
+
+func (p *AuroraAdminDrainHostsArgs) GetHosts() *Hosts {
+	if !p.IsSetHosts() {
+		return AuroraAdminDrainHostsArgs_Hosts_DEFAULT
+	}
+	return p.Hosts
+}
+func (p *AuroraAdminDrainHostsArgs) IsSetHosts() bool {
+	return p.Hosts != nil
+}
+
+func (p *AuroraAdminDrainHostsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDrainHostsArgs) readField1(iprot thrift.TProtocol) error {
+	p.Hosts = &Hosts{}
+	if err := p.Hosts.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Hosts), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDrainHostsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("drainHosts_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDrainHostsArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("hosts", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:hosts: ", p), err)
+	}
+	if err := p.Hosts.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Hosts), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:hosts: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminDrainHostsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminDrainHostsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminDrainHostsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminDrainHostsResult() *AuroraAdminDrainHostsResult {
+	return &AuroraAdminDrainHostsResult{}
+}
+
+var AuroraAdminDrainHostsResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminDrainHostsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminDrainHostsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminDrainHostsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminDrainHostsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDrainHostsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDrainHostsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("drainHosts_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminDrainHostsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminDrainHostsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminDrainHostsResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Hosts
+type AuroraAdminMaintenanceStatusArgs struct {
+	Hosts *Hosts `thrift:"hosts,1" json:"hosts"`
+}
+
+func NewAuroraAdminMaintenanceStatusArgs() *AuroraAdminMaintenanceStatusArgs {
+	return &AuroraAdminMaintenanceStatusArgs{}
+}
+
+var AuroraAdminMaintenanceStatusArgs_Hosts_DEFAULT *Hosts
+
+func (p *AuroraAdminMaintenanceStatusArgs) GetHosts() *Hosts {
+	if !p.IsSetHosts() {
+		return AuroraAdminMaintenanceStatusArgs_Hosts_DEFAULT
+	}
+	return p.Hosts
+}
+func (p *AuroraAdminMaintenanceStatusArgs) IsSetHosts() bool {
+	return p.Hosts != nil
+}
+
+func (p *AuroraAdminMaintenanceStatusArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminMaintenanceStatusArgs) readField1(iprot thrift.TProtocol) error {
+	p.Hosts = &Hosts{}
+	if err := p.Hosts.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Hosts), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminMaintenanceStatusArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("maintenanceStatus_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminMaintenanceStatusArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("hosts", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:hosts: ", p), err)
+	}
+	if err := p.Hosts.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Hosts), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:hosts: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminMaintenanceStatusArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminMaintenanceStatusArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminMaintenanceStatusResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminMaintenanceStatusResult() *AuroraAdminMaintenanceStatusResult {
+	return &AuroraAdminMaintenanceStatusResult{}
+}
+
+var AuroraAdminMaintenanceStatusResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminMaintenanceStatusResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminMaintenanceStatusResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminMaintenanceStatusResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminMaintenanceStatusResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminMaintenanceStatusResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminMaintenanceStatusResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("maintenanceStatus_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminMaintenanceStatusResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminMaintenanceStatusResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminMaintenanceStatusResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Hosts
+type AuroraAdminEndMaintenanceArgs struct {
+	Hosts *Hosts `thrift:"hosts,1" json:"hosts"`
+}
+
+func NewAuroraAdminEndMaintenanceArgs() *AuroraAdminEndMaintenanceArgs {
+	return &AuroraAdminEndMaintenanceArgs{}
+}
+
+var AuroraAdminEndMaintenanceArgs_Hosts_DEFAULT *Hosts
+
+func (p *AuroraAdminEndMaintenanceArgs) GetHosts() *Hosts {
+	if !p.IsSetHosts() {
+		return AuroraAdminEndMaintenanceArgs_Hosts_DEFAULT
+	}
+	return p.Hosts
+}
+func (p *AuroraAdminEndMaintenanceArgs) IsSetHosts() bool {
+	return p.Hosts != nil
+}
+
+func (p *AuroraAdminEndMaintenanceArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminEndMaintenanceArgs) readField1(iprot thrift.TProtocol) error {
+	p.Hosts = &Hosts{}
+	if err := p.Hosts.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Hosts), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminEndMaintenanceArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("endMaintenance_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminEndMaintenanceArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("hosts", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:hosts: ", p), err)
+	}
+	if err := p.Hosts.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Hosts), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:hosts: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminEndMaintenanceArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminEndMaintenanceArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminEndMaintenanceResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminEndMaintenanceResult() *AuroraAdminEndMaintenanceResult {
+	return &AuroraAdminEndMaintenanceResult{}
+}
+
+var AuroraAdminEndMaintenanceResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminEndMaintenanceResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminEndMaintenanceResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminEndMaintenanceResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminEndMaintenanceResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminEndMaintenanceResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminEndMaintenanceResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("endMaintenance_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminEndMaintenanceResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminEndMaintenanceResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminEndMaintenanceResult(%+v)", *p)
+}
+
+type AuroraAdminSnapshotArgs struct {
+}
+
+func NewAuroraAdminSnapshotArgs() *AuroraAdminSnapshotArgs {
+	return &AuroraAdminSnapshotArgs{}
+}
+
+func (p *AuroraAdminSnapshotArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSnapshotArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("snapshot_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSnapshotArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminSnapshotArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminSnapshotResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminSnapshotResult() *AuroraAdminSnapshotResult {
+	return &AuroraAdminSnapshotResult{}
+}
+
+var AuroraAdminSnapshotResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminSnapshotResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminSnapshotResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminSnapshotResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminSnapshotResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSnapshotResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSnapshotResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("snapshot_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminSnapshotResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminSnapshotResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminSnapshotResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Request
+type AuroraAdminRewriteConfigsArgs struct {
+	Request *RewriteConfigsRequest `thrift:"request,1" json:"request"`
+}
+
+func NewAuroraAdminRewriteConfigsArgs() *AuroraAdminRewriteConfigsArgs {
+	return &AuroraAdminRewriteConfigsArgs{}
+}
+
+var AuroraAdminRewriteConfigsArgs_Request_DEFAULT *RewriteConfigsRequest
+
+func (p *AuroraAdminRewriteConfigsArgs) GetRequest() *RewriteConfigsRequest {
+	if !p.IsSetRequest() {
+		return AuroraAdminRewriteConfigsArgs_Request_DEFAULT
+	}
+	return p.Request
+}
+func (p *AuroraAdminRewriteConfigsArgs) IsSetRequest() bool {
+	return p.Request != nil
+}
+
+func (p *AuroraAdminRewriteConfigsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminRewriteConfigsArgs) readField1(iprot thrift.TProtocol) error {
+	p.Request = &RewriteConfigsRequest{}
+	if err := p.Request.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Request), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminRewriteConfigsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("rewriteConfigs_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminRewriteConfigsArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:request: ", p), err)
+	}
+	if err := p.Request.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Request), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:request: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraAdminRewriteConfigsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminRewriteConfigsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraAdminRewriteConfigsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraAdminRewriteConfigsResult() *AuroraAdminRewriteConfigsResult {
+	return &AuroraAdminRewriteConfigsResult{}
+}
+
+var AuroraAdminRewriteConfigsResult_Success_DEFAULT *Response
+
+func (p *AuroraAdminRewriteConfigsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraAdminRewriteConfigsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraAdminRewriteConfigsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraAdminRewriteConfigsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminRewriteConfigsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminRewriteConfigsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("rewriteConfigs_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraAdminRewriteConfigsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraAdminRewriteConfigsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraAdminRewriteConfigsResult(%+v)", *p)
+}
diff --git a/gen-go/apache/aurora/auroraschedulermanager.go b/gen-go/apache/aurora/auroraschedulermanager.go
new file mode 100644
index 0000000..d399c4d
--- /dev/null
+++ b/gen-go/apache/aurora/auroraschedulermanager.go
@@ -0,0 +1,5077 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package aurora
+
+import (
+	"bytes"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+)
+
+// (needed to ensure safety because of naive import list construction.)
+var _ = thrift.ZERO
+var _ = fmt.Printf
+var _ = bytes.Equal
+
+type AuroraSchedulerManager interface {
+	ReadOnlyScheduler
+
+	// Creates a new job.  The request will be denied if a job with the provided name already exists
+	// in the cluster.
+	//
+	// Parameters:
+	//  - Description
+	CreateJob(description *JobConfiguration) (r *Response, err error)
+	// Enters a job into the cron schedule, without actually starting the job.
+	// If the job is already present in the schedule, this will update the schedule entry with the new
+	// configuration.
+	//
+	// Parameters:
+	//  - Description
+	ScheduleCronJob(description *JobConfiguration) (r *Response, err error)
+	// Removes a job from the cron schedule. The request will be denied if the job was not previously
+	// scheduled with scheduleCronJob.
+	//
+	// Parameters:
+	//  - Job
+	DescheduleCronJob(job *JobKey) (r *Response, err error)
+	// Starts a cron job immediately.  The request will be denied if the specified job does not
+	// exist for the role account, or the job is not a cron job.
+	//
+	// Parameters:
+	//  - Job
+	StartCronJob(job *JobKey) (r *Response, err error)
+	// Restarts a batch of shards.
+	//
+	// Parameters:
+	//  - Job
+	//  - ShardIds
+	RestartShards(job *JobKey, shardIds map[int32]bool) (r *Response, err error)
+	// Initiates a kill on tasks.
+	//
+	// Parameters:
+	//  - Job
+	//  - Instances
+	KillTasks(job *JobKey, instances map[int32]bool) (r *Response, err error)
+	// Adds new instances with the TaskConfig of the existing instance pointed by the key.
+	//
+	// Parameters:
+	//  - Key
+	//  - Count
+	AddInstances(key *InstanceKey, count int32) (r *Response, err error)
+	// Replaces the template (configuration) for the existing cron job.
+	// The cron job template (configuration) must exist for the call to succeed.
+	//
+	// Parameters:
+	//  - Config
+	ReplaceCronTemplate(config *JobConfiguration) (r *Response, err error)
+	// Starts update of the existing service job.
+	//
+	// Parameters:
+	//  - Request: A description of how to change the job.
+	//  - Message: A user-specified message to include with the induced job update state change.
+	StartJobUpdate(request *JobUpdateRequest, message string) (r *Response, err error)
+	// Pauses the specified job update. Can be resumed by resumeUpdate call.
+	//
+	// Parameters:
+	//  - Key: The update to pause.
+	//  - Message: A user-specified message to include with the induced job update state change.
+	PauseJobUpdate(key *JobUpdateKey, message string) (r *Response, err error)
+	// Resumes progress of a previously paused job update.
+	//
+	// Parameters:
+	//  - Key: The update to resume.
+	//  - Message: A user-specified message to include with the induced job update state change.
+	ResumeJobUpdate(key *JobUpdateKey, message string) (r *Response, err error)
+	// Permanently aborts the job update. Does not remove the update history.
+	//
+	// Parameters:
+	//  - Key: The update to abort.
+	//  - Message: A user-specified message to include with the induced job update state change.
+	AbortJobUpdate(key *JobUpdateKey, message string) (r *Response, err error)
+	// Rollbacks the specified active job update to the initial state.
+	//
+	// Parameters:
+	//  - Key: The update to rollback.
+	//  - Message: A user-specified message to include with the induced job update state change.
+	RollbackJobUpdate(key *JobUpdateKey, message string) (r *Response, err error)
+	// Allows progress of the job update in case blockIfNoPulsesAfterMs is specified in
+	// JobUpdateSettings. Unblocks progress if the update was previously blocked.
+	// Responds with ResponseCode.INVALID_REQUEST in case an unknown update key is specified.
+	//
+	// Parameters:
+	//  - Key
+	PulseJobUpdate(key *JobUpdateKey) (r *Response, err error)
+}
+
+type AuroraSchedulerManagerClient struct {
+	*ReadOnlySchedulerClient
+}
+
+func NewAuroraSchedulerManagerClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *AuroraSchedulerManagerClient {
+	return &AuroraSchedulerManagerClient{ReadOnlySchedulerClient: NewReadOnlySchedulerClientFactory(t, f)}
+}
+
+func NewAuroraSchedulerManagerClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *AuroraSchedulerManagerClient {
+	return &AuroraSchedulerManagerClient{ReadOnlySchedulerClient: NewReadOnlySchedulerClientProtocol(t, iprot, oprot)}
+}
+
+// Creates a new job.  The request will be denied if a job with the provided name already exists
+// in the cluster.
+//
+// Parameters:
+//  - Description
+func (p *AuroraSchedulerManagerClient) CreateJob(description *JobConfiguration) (r *Response, err error) {
+	if err = p.sendCreateJob(description); err != nil {
+		return
+	}
+	return p.recvCreateJob()
+}
+
+func (p *AuroraSchedulerManagerClient) sendCreateJob(description *JobConfiguration) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("createJob", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerCreateJobArgs{
+		Description: description,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvCreateJob() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "createJob" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "createJob failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "createJob failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error129 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error130 error
+		error130, err = error129.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error130
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "createJob failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerCreateJobResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Enters a job into the cron schedule, without actually starting the job.
+// If the job is already present in the schedule, this will update the schedule entry with the new
+// configuration.
+//
+// Parameters:
+//  - Description
+func (p *AuroraSchedulerManagerClient) ScheduleCronJob(description *JobConfiguration) (r *Response, err error) {
+	if err = p.sendScheduleCronJob(description); err != nil {
+		return
+	}
+	return p.recvScheduleCronJob()
+}
+
+func (p *AuroraSchedulerManagerClient) sendScheduleCronJob(description *JobConfiguration) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("scheduleCronJob", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerScheduleCronJobArgs{
+		Description: description,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvScheduleCronJob() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "scheduleCronJob" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "scheduleCronJob failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "scheduleCronJob failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error131 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error132 error
+		error132, err = error131.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error132
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "scheduleCronJob failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerScheduleCronJobResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Removes a job from the cron schedule. The request will be denied if the job was not previously
+// scheduled with scheduleCronJob.
+//
+// Parameters:
+//  - Job
+func (p *AuroraSchedulerManagerClient) DescheduleCronJob(job *JobKey) (r *Response, err error) {
+	if err = p.sendDescheduleCronJob(job); err != nil {
+		return
+	}
+	return p.recvDescheduleCronJob()
+}
+
+func (p *AuroraSchedulerManagerClient) sendDescheduleCronJob(job *JobKey) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("descheduleCronJob", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerDescheduleCronJobArgs{
+		Job: job,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvDescheduleCronJob() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "descheduleCronJob" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "descheduleCronJob failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "descheduleCronJob failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error133 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error134 error
+		error134, err = error133.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error134
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "descheduleCronJob failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerDescheduleCronJobResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Starts a cron job immediately.  The request will be denied if the specified job does not
+// exist for the role account, or the job is not a cron job.
+//
+// Parameters:
+//  - Job
+func (p *AuroraSchedulerManagerClient) StartCronJob(job *JobKey) (r *Response, err error) {
+	if err = p.sendStartCronJob(job); err != nil {
+		return
+	}
+	return p.recvStartCronJob()
+}
+
+func (p *AuroraSchedulerManagerClient) sendStartCronJob(job *JobKey) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("startCronJob", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerStartCronJobArgs{
+		Job: job,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvStartCronJob() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "startCronJob" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "startCronJob failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "startCronJob failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error135 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error136 error
+		error136, err = error135.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error136
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "startCronJob failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerStartCronJobResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Restarts a batch of shards.
+//
+// Parameters:
+//  - Job
+//  - ShardIds
+func (p *AuroraSchedulerManagerClient) RestartShards(job *JobKey, shardIds map[int32]bool) (r *Response, err error) {
+	if err = p.sendRestartShards(job, shardIds); err != nil {
+		return
+	}
+	return p.recvRestartShards()
+}
+
+func (p *AuroraSchedulerManagerClient) sendRestartShards(job *JobKey, shardIds map[int32]bool) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("restartShards", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerRestartShardsArgs{
+		Job:      job,
+		ShardIds: shardIds,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvRestartShards() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "restartShards" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "restartShards failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "restartShards failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error137 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error138 error
+		error138, err = error137.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error138
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "restartShards failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerRestartShardsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Initiates a kill on tasks.
+//
+// Parameters:
+//  - Job
+//  - Instances
+func (p *AuroraSchedulerManagerClient) KillTasks(job *JobKey, instances map[int32]bool) (r *Response, err error) {
+	if err = p.sendKillTasks(job, instances); err != nil {
+		return
+	}
+	return p.recvKillTasks()
+}
+
+func (p *AuroraSchedulerManagerClient) sendKillTasks(job *JobKey, instances map[int32]bool) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("killTasks", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerKillTasksArgs{
+		Job:       job,
+		Instances: instances,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvKillTasks() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "killTasks" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "killTasks failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "killTasks failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error139 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error140 error
+		error140, err = error139.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error140
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "killTasks failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerKillTasksResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Adds new instances with the TaskConfig of the existing instance pointed by the key.
+//
+// Parameters:
+//  - Key
+//  - Count
+func (p *AuroraSchedulerManagerClient) AddInstances(key *InstanceKey, count int32) (r *Response, err error) {
+	if err = p.sendAddInstances(key, count); err != nil {
+		return
+	}
+	return p.recvAddInstances()
+}
+
+func (p *AuroraSchedulerManagerClient) sendAddInstances(key *InstanceKey, count int32) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("addInstances", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerAddInstancesArgs{
+		Key:   key,
+		Count: count,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvAddInstances() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "addInstances" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "addInstances failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "addInstances failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error141 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error142 error
+		error142, err = error141.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error142
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "addInstances failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerAddInstancesResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Replaces the template (configuration) for the existing cron job.
+// The cron job template (configuration) must exist for the call to succeed.
+//
+// Parameters:
+//  - Config
+func (p *AuroraSchedulerManagerClient) ReplaceCronTemplate(config *JobConfiguration) (r *Response, err error) {
+	if err = p.sendReplaceCronTemplate(config); err != nil {
+		return
+	}
+	return p.recvReplaceCronTemplate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendReplaceCronTemplate(config *JobConfiguration) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("replaceCronTemplate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerReplaceCronTemplateArgs{
+		Config: config,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvReplaceCronTemplate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "replaceCronTemplate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "replaceCronTemplate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "replaceCronTemplate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error143 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error144 error
+		error144, err = error143.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error144
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "replaceCronTemplate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerReplaceCronTemplateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Starts update of the existing service job.
+//
+// Parameters:
+//  - Request: A description of how to change the job.
+//  - Message: A user-specified message to include with the induced job update state change.
+func (p *AuroraSchedulerManagerClient) StartJobUpdate(request *JobUpdateRequest, message string) (r *Response, err error) {
+	if err = p.sendStartJobUpdate(request, message); err != nil {
+		return
+	}
+	return p.recvStartJobUpdate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendStartJobUpdate(request *JobUpdateRequest, message string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("startJobUpdate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerStartJobUpdateArgs{
+		Request: request,
+		Message: message,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvStartJobUpdate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "startJobUpdate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "startJobUpdate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "startJobUpdate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error145 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error146 error
+		error146, err = error145.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error146
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "startJobUpdate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerStartJobUpdateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Pauses the specified job update. Can be resumed by resumeUpdate call.
+//
+// Parameters:
+//  - Key: The update to pause.
+//  - Message: A user-specified message to include with the induced job update state change.
+func (p *AuroraSchedulerManagerClient) PauseJobUpdate(key *JobUpdateKey, message string) (r *Response, err error) {
+	if err = p.sendPauseJobUpdate(key, message); err != nil {
+		return
+	}
+	return p.recvPauseJobUpdate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendPauseJobUpdate(key *JobUpdateKey, message string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("pauseJobUpdate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerPauseJobUpdateArgs{
+		Key:     key,
+		Message: message,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvPauseJobUpdate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "pauseJobUpdate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "pauseJobUpdate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "pauseJobUpdate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error147 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error148 error
+		error148, err = error147.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error148
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "pauseJobUpdate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerPauseJobUpdateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Resumes progress of a previously paused job update.
+//
+// Parameters:
+//  - Key: The update to resume.
+//  - Message: A user-specified message to include with the induced job update state change.
+func (p *AuroraSchedulerManagerClient) ResumeJobUpdate(key *JobUpdateKey, message string) (r *Response, err error) {
+	if err = p.sendResumeJobUpdate(key, message); err != nil {
+		return
+	}
+	return p.recvResumeJobUpdate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendResumeJobUpdate(key *JobUpdateKey, message string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("resumeJobUpdate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerResumeJobUpdateArgs{
+		Key:     key,
+		Message: message,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvResumeJobUpdate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "resumeJobUpdate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "resumeJobUpdate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "resumeJobUpdate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error149 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error150 error
+		error150, err = error149.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error150
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "resumeJobUpdate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerResumeJobUpdateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Permanently aborts the job update. Does not remove the update history.
+//
+// Parameters:
+//  - Key: The update to abort.
+//  - Message: A user-specified message to include with the induced job update state change.
+func (p *AuroraSchedulerManagerClient) AbortJobUpdate(key *JobUpdateKey, message string) (r *Response, err error) {
+	if err = p.sendAbortJobUpdate(key, message); err != nil {
+		return
+	}
+	return p.recvAbortJobUpdate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendAbortJobUpdate(key *JobUpdateKey, message string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("abortJobUpdate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerAbortJobUpdateArgs{
+		Key:     key,
+		Message: message,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvAbortJobUpdate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "abortJobUpdate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "abortJobUpdate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "abortJobUpdate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error151 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error152 error
+		error152, err = error151.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error152
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "abortJobUpdate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerAbortJobUpdateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Rollbacks the specified active job update to the initial state.
+//
+// Parameters:
+//  - Key: The update to rollback.
+//  - Message: A user-specified message to include with the induced job update state change.
+func (p *AuroraSchedulerManagerClient) RollbackJobUpdate(key *JobUpdateKey, message string) (r *Response, err error) {
+	if err = p.sendRollbackJobUpdate(key, message); err != nil {
+		return
+	}
+	return p.recvRollbackJobUpdate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendRollbackJobUpdate(key *JobUpdateKey, message string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("rollbackJobUpdate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerRollbackJobUpdateArgs{
+		Key:     key,
+		Message: message,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvRollbackJobUpdate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "rollbackJobUpdate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "rollbackJobUpdate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "rollbackJobUpdate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error153 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error154 error
+		error154, err = error153.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error154
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "rollbackJobUpdate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerRollbackJobUpdateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Allows progress of the job update in case blockIfNoPulsesAfterMs is specified in
+// JobUpdateSettings. Unblocks progress if the update was previously blocked.
+// Responds with ResponseCode.INVALID_REQUEST in case an unknown update key is specified.
+//
+// Parameters:
+//  - Key
+func (p *AuroraSchedulerManagerClient) PulseJobUpdate(key *JobUpdateKey) (r *Response, err error) {
+	if err = p.sendPulseJobUpdate(key); err != nil {
+		return
+	}
+	return p.recvPulseJobUpdate()
+}
+
+func (p *AuroraSchedulerManagerClient) sendPulseJobUpdate(key *JobUpdateKey) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("pulseJobUpdate", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := AuroraSchedulerManagerPulseJobUpdateArgs{
+		Key: key,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *AuroraSchedulerManagerClient) recvPulseJobUpdate() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "pulseJobUpdate" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "pulseJobUpdate failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "pulseJobUpdate failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error155 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error156 error
+		error156, err = error155.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error156
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "pulseJobUpdate failed: invalid message type")
+		return
+	}
+	result := AuroraSchedulerManagerPulseJobUpdateResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+type AuroraSchedulerManagerProcessor struct {
+	*ReadOnlySchedulerProcessor
+}
+
+func NewAuroraSchedulerManagerProcessor(handler AuroraSchedulerManager) *AuroraSchedulerManagerProcessor {
+	self157 := &AuroraSchedulerManagerProcessor{NewReadOnlySchedulerProcessor(handler)}
+	self157.AddToProcessorMap("createJob", &auroraSchedulerManagerProcessorCreateJob{handler: handler})
+	self157.AddToProcessorMap("scheduleCronJob", &auroraSchedulerManagerProcessorScheduleCronJob{handler: handler})
+	self157.AddToProcessorMap("descheduleCronJob", &auroraSchedulerManagerProcessorDescheduleCronJob{handler: handler})
+	self157.AddToProcessorMap("startCronJob", &auroraSchedulerManagerProcessorStartCronJob{handler: handler})
+	self157.AddToProcessorMap("restartShards", &auroraSchedulerManagerProcessorRestartShards{handler: handler})
+	self157.AddToProcessorMap("killTasks", &auroraSchedulerManagerProcessorKillTasks{handler: handler})
+	self157.AddToProcessorMap("addInstances", &auroraSchedulerManagerProcessorAddInstances{handler: handler})
+	self157.AddToProcessorMap("replaceCronTemplate", &auroraSchedulerManagerProcessorReplaceCronTemplate{handler: handler})
+	self157.AddToProcessorMap("startJobUpdate", &auroraSchedulerManagerProcessorStartJobUpdate{handler: handler})
+	self157.AddToProcessorMap("pauseJobUpdate", &auroraSchedulerManagerProcessorPauseJobUpdate{handler: handler})
+	self157.AddToProcessorMap("resumeJobUpdate", &auroraSchedulerManagerProcessorResumeJobUpdate{handler: handler})
+	self157.AddToProcessorMap("abortJobUpdate", &auroraSchedulerManagerProcessorAbortJobUpdate{handler: handler})
+	self157.AddToProcessorMap("rollbackJobUpdate", &auroraSchedulerManagerProcessorRollbackJobUpdate{handler: handler})
+	self157.AddToProcessorMap("pulseJobUpdate", &auroraSchedulerManagerProcessorPulseJobUpdate{handler: handler})
+	return self157
+}
+
+type auroraSchedulerManagerProcessorCreateJob struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorCreateJob) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerCreateJobArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("createJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerCreateJobResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.CreateJob(args.Description); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing createJob: "+err2.Error())
+		oprot.WriteMessageBegin("createJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("createJob", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorScheduleCronJob struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorScheduleCronJob) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerScheduleCronJobArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("scheduleCronJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerScheduleCronJobResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.ScheduleCronJob(args.Description); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing scheduleCronJob: "+err2.Error())
+		oprot.WriteMessageBegin("scheduleCronJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("scheduleCronJob", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorDescheduleCronJob struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorDescheduleCronJob) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerDescheduleCronJobArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("descheduleCronJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerDescheduleCronJobResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.DescheduleCronJob(args.Job); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing descheduleCronJob: "+err2.Error())
+		oprot.WriteMessageBegin("descheduleCronJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("descheduleCronJob", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorStartCronJob struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorStartCronJob) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerStartCronJobArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("startCronJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerStartCronJobResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.StartCronJob(args.Job); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing startCronJob: "+err2.Error())
+		oprot.WriteMessageBegin("startCronJob", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("startCronJob", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorRestartShards struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorRestartShards) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerRestartShardsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("restartShards", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerRestartShardsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.RestartShards(args.Job, args.ShardIds); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing restartShards: "+err2.Error())
+		oprot.WriteMessageBegin("restartShards", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("restartShards", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorKillTasks struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorKillTasks) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerKillTasksArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("killTasks", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerKillTasksResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.KillTasks(args.Job, args.Instances); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing killTasks: "+err2.Error())
+		oprot.WriteMessageBegin("killTasks", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("killTasks", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorAddInstances struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorAddInstances) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerAddInstancesArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("addInstances", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerAddInstancesResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.AddInstances(args.Key, args.Count); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing addInstances: "+err2.Error())
+		oprot.WriteMessageBegin("addInstances", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("addInstances", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorReplaceCronTemplate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorReplaceCronTemplate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerReplaceCronTemplateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("replaceCronTemplate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerReplaceCronTemplateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.ReplaceCronTemplate(args.Config); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing replaceCronTemplate: "+err2.Error())
+		oprot.WriteMessageBegin("replaceCronTemplate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("replaceCronTemplate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorStartJobUpdate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorStartJobUpdate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerStartJobUpdateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("startJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerStartJobUpdateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.StartJobUpdate(args.Request, args.Message); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing startJobUpdate: "+err2.Error())
+		oprot.WriteMessageBegin("startJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("startJobUpdate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorPauseJobUpdate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorPauseJobUpdate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerPauseJobUpdateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("pauseJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerPauseJobUpdateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.PauseJobUpdate(args.Key, args.Message); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing pauseJobUpdate: "+err2.Error())
+		oprot.WriteMessageBegin("pauseJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("pauseJobUpdate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorResumeJobUpdate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorResumeJobUpdate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerResumeJobUpdateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("resumeJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerResumeJobUpdateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.ResumeJobUpdate(args.Key, args.Message); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing resumeJobUpdate: "+err2.Error())
+		oprot.WriteMessageBegin("resumeJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("resumeJobUpdate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorAbortJobUpdate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorAbortJobUpdate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerAbortJobUpdateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("abortJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerAbortJobUpdateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.AbortJobUpdate(args.Key, args.Message); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing abortJobUpdate: "+err2.Error())
+		oprot.WriteMessageBegin("abortJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("abortJobUpdate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorRollbackJobUpdate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorRollbackJobUpdate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerRollbackJobUpdateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("rollbackJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerRollbackJobUpdateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.RollbackJobUpdate(args.Key, args.Message); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing rollbackJobUpdate: "+err2.Error())
+		oprot.WriteMessageBegin("rollbackJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("rollbackJobUpdate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type auroraSchedulerManagerProcessorPulseJobUpdate struct {
+	handler AuroraSchedulerManager
+}
+
+func (p *auroraSchedulerManagerProcessorPulseJobUpdate) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := AuroraSchedulerManagerPulseJobUpdateArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("pulseJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := AuroraSchedulerManagerPulseJobUpdateResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.PulseJobUpdate(args.Key); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing pulseJobUpdate: "+err2.Error())
+		oprot.WriteMessageBegin("pulseJobUpdate", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("pulseJobUpdate", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+// HELPER FUNCTIONS AND STRUCTURES
+
+// Attributes:
+//  - Description
+type AuroraSchedulerManagerCreateJobArgs struct {
+	Description *JobConfiguration `thrift:"description,1" json:"description"`
+}
+
+func NewAuroraSchedulerManagerCreateJobArgs() *AuroraSchedulerManagerCreateJobArgs {
+	return &AuroraSchedulerManagerCreateJobArgs{}
+}
+
+var AuroraSchedulerManagerCreateJobArgs_Description_DEFAULT *JobConfiguration
+
+func (p *AuroraSchedulerManagerCreateJobArgs) GetDescription() *JobConfiguration {
+	if !p.IsSetDescription() {
+		return AuroraSchedulerManagerCreateJobArgs_Description_DEFAULT
+	}
+	return p.Description
+}
+func (p *AuroraSchedulerManagerCreateJobArgs) IsSetDescription() bool {
+	return p.Description != nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobArgs) readField1(iprot thrift.TProtocol) error {
+	p.Description = &JobConfiguration{}
+	if err := p.Description.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Description), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("createJob_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("description", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:description: ", p), err)
+	}
+	if err := p.Description.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Description), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:description: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerCreateJobArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerCreateJobArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerCreateJobResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerCreateJobResult() *AuroraSchedulerManagerCreateJobResult {
+	return &AuroraSchedulerManagerCreateJobResult{}
+}
+
+var AuroraSchedulerManagerCreateJobResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerCreateJobResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerCreateJobResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerCreateJobResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("createJob_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerCreateJobResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerCreateJobResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerCreateJobResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Description
+type AuroraSchedulerManagerScheduleCronJobArgs struct {
+	Description *JobConfiguration `thrift:"description,1" json:"description"`
+}
+
+func NewAuroraSchedulerManagerScheduleCronJobArgs() *AuroraSchedulerManagerScheduleCronJobArgs {
+	return &AuroraSchedulerManagerScheduleCronJobArgs{}
+}
+
+var AuroraSchedulerManagerScheduleCronJobArgs_Description_DEFAULT *JobConfiguration
+
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) GetDescription() *JobConfiguration {
+	if !p.IsSetDescription() {
+		return AuroraSchedulerManagerScheduleCronJobArgs_Description_DEFAULT
+	}
+	return p.Description
+}
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) IsSetDescription() bool {
+	return p.Description != nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) readField1(iprot thrift.TProtocol) error {
+	p.Description = &JobConfiguration{}
+	if err := p.Description.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Description), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("scheduleCronJob_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("description", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:description: ", p), err)
+	}
+	if err := p.Description.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Description), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:description: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerScheduleCronJobArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerScheduleCronJobResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerScheduleCronJobResult() *AuroraSchedulerManagerScheduleCronJobResult {
+	return &AuroraSchedulerManagerScheduleCronJobResult{}
+}
+
+var AuroraSchedulerManagerScheduleCronJobResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerScheduleCronJobResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerScheduleCronJobResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerScheduleCronJobResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("scheduleCronJob_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerScheduleCronJobResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerScheduleCronJobResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Job
+type AuroraSchedulerManagerDescheduleCronJobArgs struct {
+	// unused fields # 1 to 3
+	Job *JobKey `thrift:"job,4" json:"job"`
+}
+
+func NewAuroraSchedulerManagerDescheduleCronJobArgs() *AuroraSchedulerManagerDescheduleCronJobArgs {
+	return &AuroraSchedulerManagerDescheduleCronJobArgs{}
+}
+
+var AuroraSchedulerManagerDescheduleCronJobArgs_Job_DEFAULT *JobKey
+
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return AuroraSchedulerManagerDescheduleCronJobArgs_Job_DEFAULT
+	}
+	return p.Job
+}
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) readField4(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("descheduleCronJob_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:job: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerDescheduleCronJobArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerDescheduleCronJobResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerDescheduleCronJobResult() *AuroraSchedulerManagerDescheduleCronJobResult {
+	return &AuroraSchedulerManagerDescheduleCronJobResult{}
+}
+
+var AuroraSchedulerManagerDescheduleCronJobResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerDescheduleCronJobResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("descheduleCronJob_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerDescheduleCronJobResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerDescheduleCronJobResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Job
+type AuroraSchedulerManagerStartCronJobArgs struct {
+	// unused fields # 1 to 3
+	Job *JobKey `thrift:"job,4" json:"job"`
+}
+
+func NewAuroraSchedulerManagerStartCronJobArgs() *AuroraSchedulerManagerStartCronJobArgs {
+	return &AuroraSchedulerManagerStartCronJobArgs{}
+}
+
+var AuroraSchedulerManagerStartCronJobArgs_Job_DEFAULT *JobKey
+
+func (p *AuroraSchedulerManagerStartCronJobArgs) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return AuroraSchedulerManagerStartCronJobArgs_Job_DEFAULT
+	}
+	return p.Job
+}
+func (p *AuroraSchedulerManagerStartCronJobArgs) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobArgs) readField4(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("startCronJob_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobArgs) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:job: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerStartCronJobArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerStartCronJobArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerStartCronJobResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerStartCronJobResult() *AuroraSchedulerManagerStartCronJobResult {
+	return &AuroraSchedulerManagerStartCronJobResult{}
+}
+
+var AuroraSchedulerManagerStartCronJobResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerStartCronJobResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerStartCronJobResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerStartCronJobResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("startCronJob_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartCronJobResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerStartCronJobResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerStartCronJobResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Job
+//  - ShardIds
+type AuroraSchedulerManagerRestartShardsArgs struct {
+	// unused fields # 1 to 2
+	ShardIds map[int32]bool `thrift:"shardIds,3" json:"shardIds"`
+	// unused field # 4
+	Job *JobKey `thrift:"job,5" json:"job"`
+}
+
+func NewAuroraSchedulerManagerRestartShardsArgs() *AuroraSchedulerManagerRestartShardsArgs {
+	return &AuroraSchedulerManagerRestartShardsArgs{}
+}
+
+var AuroraSchedulerManagerRestartShardsArgs_Job_DEFAULT *JobKey
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return AuroraSchedulerManagerRestartShardsArgs_Job_DEFAULT
+	}
+	return p.Job
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) GetShardIds() map[int32]bool {
+	return p.ShardIds
+}
+func (p *AuroraSchedulerManagerRestartShardsArgs) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) readField5(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) readField3(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[int32]bool, size)
+	p.ShardIds = tSet
+	for i := 0; i < size; i++ {
+		var _elem158 int32
+		if v, err := iprot.ReadI32(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem158 = v
+		}
+		p.ShardIds[_elem158] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("restartShards_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("shardIds", thrift.SET, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:shardIds: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.I32, len(p.ShardIds)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.ShardIds {
+		if err := oprot.WriteI32(int32(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:shardIds: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:job: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerRestartShardsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerRestartShardsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerRestartShardsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerRestartShardsResult() *AuroraSchedulerManagerRestartShardsResult {
+	return &AuroraSchedulerManagerRestartShardsResult{}
+}
+
+var AuroraSchedulerManagerRestartShardsResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerRestartShardsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerRestartShardsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerRestartShardsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("restartShards_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRestartShardsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerRestartShardsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerRestartShardsResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Job
+//  - Instances
+type AuroraSchedulerManagerKillTasksArgs struct {
+	// unused fields # 1 to 3
+	Job       *JobKey        `thrift:"job,4" json:"job"`
+	Instances map[int32]bool `thrift:"instances,5" json:"instances"`
+}
+
+func NewAuroraSchedulerManagerKillTasksArgs() *AuroraSchedulerManagerKillTasksArgs {
+	return &AuroraSchedulerManagerKillTasksArgs{}
+}
+
+var AuroraSchedulerManagerKillTasksArgs_Job_DEFAULT *JobKey
+
+func (p *AuroraSchedulerManagerKillTasksArgs) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return AuroraSchedulerManagerKillTasksArgs_Job_DEFAULT
+	}
+	return p.Job
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) GetInstances() map[int32]bool {
+	return p.Instances
+}
+func (p *AuroraSchedulerManagerKillTasksArgs) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) readField4(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) readField5(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[int32]bool, size)
+	p.Instances = tSet
+	for i := 0; i < size; i++ {
+		var _elem159 int32
+		if v, err := iprot.ReadI32(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem159 = v
+		}
+		p.Instances[_elem159] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("killTasks_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:job: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instances", thrift.SET, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:instances: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.I32, len(p.Instances)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Instances {
+		if err := oprot.WriteI32(int32(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:instances: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerKillTasksArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerKillTasksArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerKillTasksResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerKillTasksResult() *AuroraSchedulerManagerKillTasksResult {
+	return &AuroraSchedulerManagerKillTasksResult{}
+}
+
+var AuroraSchedulerManagerKillTasksResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerKillTasksResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerKillTasksResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerKillTasksResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("killTasks_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerKillTasksResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerKillTasksResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerKillTasksResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key
+//  - Count
+type AuroraSchedulerManagerAddInstancesArgs struct {
+	// unused fields # 1 to 2
+	Key   *InstanceKey `thrift:"key,3" json:"key"`
+	Count int32        `thrift:"count,4" json:"count"`
+}
+
+func NewAuroraSchedulerManagerAddInstancesArgs() *AuroraSchedulerManagerAddInstancesArgs {
+	return &AuroraSchedulerManagerAddInstancesArgs{}
+}
+
+var AuroraSchedulerManagerAddInstancesArgs_Key_DEFAULT *InstanceKey
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) GetKey() *InstanceKey {
+	if !p.IsSetKey() {
+		return AuroraSchedulerManagerAddInstancesArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) GetCount() int32 {
+	return p.Count
+}
+func (p *AuroraSchedulerManagerAddInstancesArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) readField3(iprot thrift.TProtocol) error {
+	p.Key = &InstanceKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.Count = v
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("addInstances_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:key: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("count", thrift.I32, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:count: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Count)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.count (4) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:count: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerAddInstancesArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerAddInstancesArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerAddInstancesResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerAddInstancesResult() *AuroraSchedulerManagerAddInstancesResult {
+	return &AuroraSchedulerManagerAddInstancesResult{}
+}
+
+var AuroraSchedulerManagerAddInstancesResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerAddInstancesResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerAddInstancesResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerAddInstancesResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("addInstances_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAddInstancesResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerAddInstancesResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerAddInstancesResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Config
+type AuroraSchedulerManagerReplaceCronTemplateArgs struct {
+	Config *JobConfiguration `thrift:"config,1" json:"config"`
+}
+
+func NewAuroraSchedulerManagerReplaceCronTemplateArgs() *AuroraSchedulerManagerReplaceCronTemplateArgs {
+	return &AuroraSchedulerManagerReplaceCronTemplateArgs{}
+}
+
+var AuroraSchedulerManagerReplaceCronTemplateArgs_Config_DEFAULT *JobConfiguration
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) GetConfig() *JobConfiguration {
+	if !p.IsSetConfig() {
+		return AuroraSchedulerManagerReplaceCronTemplateArgs_Config_DEFAULT
+	}
+	return p.Config
+}
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) IsSetConfig() bool {
+	return p.Config != nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Config = &JobConfiguration{}
+	if err := p.Config.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Config), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("replaceCronTemplate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("config", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:config: ", p), err)
+	}
+	if err := p.Config.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Config), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:config: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerReplaceCronTemplateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerReplaceCronTemplateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerReplaceCronTemplateResult() *AuroraSchedulerManagerReplaceCronTemplateResult {
+	return &AuroraSchedulerManagerReplaceCronTemplateResult{}
+}
+
+var AuroraSchedulerManagerReplaceCronTemplateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerReplaceCronTemplateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("replaceCronTemplate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerReplaceCronTemplateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerReplaceCronTemplateResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Request: A description of how to change the job.
+//  - Message: A user-specified message to include with the induced job update state change.
+type AuroraSchedulerManagerStartJobUpdateArgs struct {
+	Request *JobUpdateRequest `thrift:"request,1" json:"request"`
+	// unused field # 2
+	Message string `thrift:"message,3" json:"message"`
+}
+
+func NewAuroraSchedulerManagerStartJobUpdateArgs() *AuroraSchedulerManagerStartJobUpdateArgs {
+	return &AuroraSchedulerManagerStartJobUpdateArgs{}
+}
+
+var AuroraSchedulerManagerStartJobUpdateArgs_Request_DEFAULT *JobUpdateRequest
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) GetRequest() *JobUpdateRequest {
+	if !p.IsSetRequest() {
+		return AuroraSchedulerManagerStartJobUpdateArgs_Request_DEFAULT
+	}
+	return p.Request
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) GetMessage() string {
+	return p.Message
+}
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) IsSetRequest() bool {
+	return p.Request != nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Request = &JobUpdateRequest{}
+	if err := p.Request.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Request), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Message = v
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("startJobUpdate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:request: ", p), err)
+	}
+	if err := p.Request.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Request), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:request: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("message", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:message: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Message)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.message (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:message: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerStartJobUpdateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerStartJobUpdateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerStartJobUpdateResult() *AuroraSchedulerManagerStartJobUpdateResult {
+	return &AuroraSchedulerManagerStartJobUpdateResult{}
+}
+
+var AuroraSchedulerManagerStartJobUpdateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerStartJobUpdateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerStartJobUpdateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerStartJobUpdateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("startJobUpdate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerStartJobUpdateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerStartJobUpdateResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key: The update to pause.
+//  - Message: A user-specified message to include with the induced job update state change.
+type AuroraSchedulerManagerPauseJobUpdateArgs struct {
+	Key *JobUpdateKey `thrift:"key,1" json:"key"`
+	// unused field # 2
+	Message string `thrift:"message,3" json:"message"`
+}
+
+func NewAuroraSchedulerManagerPauseJobUpdateArgs() *AuroraSchedulerManagerPauseJobUpdateArgs {
+	return &AuroraSchedulerManagerPauseJobUpdateArgs{}
+}
+
+var AuroraSchedulerManagerPauseJobUpdateArgs_Key_DEFAULT *JobUpdateKey
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return AuroraSchedulerManagerPauseJobUpdateArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) GetMessage() string {
+	return p.Message
+}
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Message = v
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("pauseJobUpdate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("message", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:message: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Message)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.message (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:message: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerPauseJobUpdateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerPauseJobUpdateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerPauseJobUpdateResult() *AuroraSchedulerManagerPauseJobUpdateResult {
+	return &AuroraSchedulerManagerPauseJobUpdateResult{}
+}
+
+var AuroraSchedulerManagerPauseJobUpdateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerPauseJobUpdateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("pauseJobUpdate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerPauseJobUpdateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerPauseJobUpdateResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key: The update to resume.
+//  - Message: A user-specified message to include with the induced job update state change.
+type AuroraSchedulerManagerResumeJobUpdateArgs struct {
+	Key *JobUpdateKey `thrift:"key,1" json:"key"`
+	// unused field # 2
+	Message string `thrift:"message,3" json:"message"`
+}
+
+func NewAuroraSchedulerManagerResumeJobUpdateArgs() *AuroraSchedulerManagerResumeJobUpdateArgs {
+	return &AuroraSchedulerManagerResumeJobUpdateArgs{}
+}
+
+var AuroraSchedulerManagerResumeJobUpdateArgs_Key_DEFAULT *JobUpdateKey
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return AuroraSchedulerManagerResumeJobUpdateArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) GetMessage() string {
+	return p.Message
+}
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Message = v
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("resumeJobUpdate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("message", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:message: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Message)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.message (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:message: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerResumeJobUpdateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerResumeJobUpdateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerResumeJobUpdateResult() *AuroraSchedulerManagerResumeJobUpdateResult {
+	return &AuroraSchedulerManagerResumeJobUpdateResult{}
+}
+
+var AuroraSchedulerManagerResumeJobUpdateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerResumeJobUpdateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("resumeJobUpdate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerResumeJobUpdateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerResumeJobUpdateResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key: The update to abort.
+//  - Message: A user-specified message to include with the induced job update state change.
+type AuroraSchedulerManagerAbortJobUpdateArgs struct {
+	Key *JobUpdateKey `thrift:"key,1" json:"key"`
+	// unused field # 2
+	Message string `thrift:"message,3" json:"message"`
+}
+
+func NewAuroraSchedulerManagerAbortJobUpdateArgs() *AuroraSchedulerManagerAbortJobUpdateArgs {
+	return &AuroraSchedulerManagerAbortJobUpdateArgs{}
+}
+
+var AuroraSchedulerManagerAbortJobUpdateArgs_Key_DEFAULT *JobUpdateKey
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return AuroraSchedulerManagerAbortJobUpdateArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) GetMessage() string {
+	return p.Message
+}
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Message = v
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("abortJobUpdate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("message", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:message: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Message)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.message (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:message: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerAbortJobUpdateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerAbortJobUpdateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerAbortJobUpdateResult() *AuroraSchedulerManagerAbortJobUpdateResult {
+	return &AuroraSchedulerManagerAbortJobUpdateResult{}
+}
+
+var AuroraSchedulerManagerAbortJobUpdateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerAbortJobUpdateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("abortJobUpdate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerAbortJobUpdateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerAbortJobUpdateResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key: The update to rollback.
+//  - Message: A user-specified message to include with the induced job update state change.
+type AuroraSchedulerManagerRollbackJobUpdateArgs struct {
+	Key     *JobUpdateKey `thrift:"key,1" json:"key"`
+	Message string        `thrift:"message,2" json:"message"`
+}
+
+func NewAuroraSchedulerManagerRollbackJobUpdateArgs() *AuroraSchedulerManagerRollbackJobUpdateArgs {
+	return &AuroraSchedulerManagerRollbackJobUpdateArgs{}
+}
+
+var AuroraSchedulerManagerRollbackJobUpdateArgs_Key_DEFAULT *JobUpdateKey
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return AuroraSchedulerManagerRollbackJobUpdateArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) GetMessage() string {
+	return p.Message
+}
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Message = v
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("rollbackJobUpdate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("message", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:message: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Message)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.message (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:message: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerRollbackJobUpdateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerRollbackJobUpdateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerRollbackJobUpdateResult() *AuroraSchedulerManagerRollbackJobUpdateResult {
+	return &AuroraSchedulerManagerRollbackJobUpdateResult{}
+}
+
+var AuroraSchedulerManagerRollbackJobUpdateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerRollbackJobUpdateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("rollbackJobUpdate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerRollbackJobUpdateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerRollbackJobUpdateResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key
+type AuroraSchedulerManagerPulseJobUpdateArgs struct {
+	Key *JobUpdateKey `thrift:"key,1" json:"key"`
+}
+
+func NewAuroraSchedulerManagerPulseJobUpdateArgs() *AuroraSchedulerManagerPulseJobUpdateArgs {
+	return &AuroraSchedulerManagerPulseJobUpdateArgs{}
+}
+
+var AuroraSchedulerManagerPulseJobUpdateArgs_Key_DEFAULT *JobUpdateKey
+
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return AuroraSchedulerManagerPulseJobUpdateArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("pulseJobUpdate_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerPulseJobUpdateArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type AuroraSchedulerManagerPulseJobUpdateResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewAuroraSchedulerManagerPulseJobUpdateResult() *AuroraSchedulerManagerPulseJobUpdateResult {
+	return &AuroraSchedulerManagerPulseJobUpdateResult{}
+}
+
+var AuroraSchedulerManagerPulseJobUpdateResult_Success_DEFAULT *Response
+
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return AuroraSchedulerManagerPulseJobUpdateResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("pulseJobUpdate_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *AuroraSchedulerManagerPulseJobUpdateResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AuroraSchedulerManagerPulseJobUpdateResult(%+v)", *p)
+}
diff --git a/gen-go/apache/aurora/constants.go b/gen-go/apache/aurora/constants.go
new file mode 100644
index 0000000..073d675
--- /dev/null
+++ b/gen-go/apache/aurora/constants.go
@@ -0,0 +1,80 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package aurora
+
+import (
+	"bytes"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+)
+
+// (needed to ensure safety because of naive import list construction.)
+var _ = thrift.ZERO
+var _ = fmt.Printf
+var _ = bytes.Equal
+
+const AURORA_EXECUTOR_NAME = "AuroraExecutor"
+
+var ACTIVE_STATES map[ScheduleStatus]bool
+var SLAVE_ASSIGNED_STATES map[ScheduleStatus]bool
+var LIVE_STATES map[ScheduleStatus]bool
+var TERMINAL_STATES map[ScheduleStatus]bool
+
+const GOOD_IDENTIFIER_PATTERN = "^[\\w\\-\\.]+$"
+const GOOD_IDENTIFIER_PATTERN_JVM = "^[\\w\\-\\.]+$"
+const GOOD_IDENTIFIER_PATTERN_PYTHON = "^[\\w\\-\\.]+$"
+
+var ACTIVE_JOB_UPDATE_STATES map[JobUpdateStatus]bool
+
+const BYPASS_LEADER_REDIRECT_HEADER_NAME = "Bypass-Leader-Redirect"
+const TASK_FILESYSTEM_MOUNT_POINT = "taskfs"
+
+func init() {
+	ACTIVE_STATES = map[ScheduleStatus]bool{
+		9:  true,
+		17: true,
+		6:  true,
+		0:  true,
+		13: true,
+		12: true,
+		2:  true,
+		1:  true,
+		16: true,
+	}
+
+	SLAVE_ASSIGNED_STATES = map[ScheduleStatus]bool{
+		9:  true,
+		17: true,
+		6:  true,
+		13: true,
+		12: true,
+		2:  true,
+		1:  true,
+	}
+
+	LIVE_STATES = map[ScheduleStatus]bool{
+		6:  true,
+		13: true,
+		12: true,
+		17: true,
+		2:  true,
+	}
+
+	TERMINAL_STATES = map[ScheduleStatus]bool{
+		4: true,
+		3: true,
+		5: true,
+		7: true,
+	}
+
+	ACTIVE_JOB_UPDATE_STATES = map[JobUpdateStatus]bool{
+		0:  true,
+		1:  true,
+		2:  true,
+		3:  true,
+		9:  true,
+		10: true,
+	}
+
+}
diff --git a/gen-go/apache/aurora/read_only_scheduler-remote/read_only_scheduler-remote.go b/gen-go/apache/aurora/read_only_scheduler-remote/read_only_scheduler-remote.go
new file mode 100755
index 0000000..dd451a2
--- /dev/null
+++ b/gen-go/apache/aurora/read_only_scheduler-remote/read_only_scheduler-remote.go
@@ -0,0 +1,382 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package main
+
+import (
+	"apache/aurora"
+	"flag"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+	"math"
+	"net"
+	"net/url"
+	"os"
+	"strconv"
+	"strings"
+)
+
+func Usage() {
+	fmt.Fprintln(os.Stderr, "Usage of ", os.Args[0], " [-h host:port] [-u url] [-f[ramed]] function [arg1 [arg2...]]:")
+	flag.PrintDefaults()
+	fmt.Fprintln(os.Stderr, "\nFunctions:")
+	fmt.Fprintln(os.Stderr, "  Response getRoleSummary()")
+	fmt.Fprintln(os.Stderr, "  Response getJobSummary(string role)")
+	fmt.Fprintln(os.Stderr, "  Response getTasksStatus(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getTasksWithoutConfigs(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getPendingReason(TaskQuery query)")
+	fmt.Fprintln(os.Stderr, "  Response getConfigSummary(JobKey job)")
+	fmt.Fprintln(os.Stderr, "  Response getJobs(string ownerRole)")
+	fmt.Fprintln(os.Stderr, "  Response getQuota(string ownerRole)")
+	fmt.Fprintln(os.Stderr, "  Response populateJobConfig(JobConfiguration description)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateSummaries(JobUpdateQuery jobUpdateQuery)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateDetails(JobUpdateKey key)")
+	fmt.Fprintln(os.Stderr, "  Response getJobUpdateDiff(JobUpdateRequest request)")
+	fmt.Fprintln(os.Stderr, "  Response getTierConfigs()")
+	fmt.Fprintln(os.Stderr)
+	os.Exit(0)
+}
+
+func main() {
+	flag.Usage = Usage
+	var host string
+	var port int
+	var protocol string
+	var urlString string
+	var framed bool
+	var useHttp bool
+	var parsedUrl url.URL
+	var trans thrift.TTransport
+	_ = strconv.Atoi
+	_ = math.Abs
+	flag.Usage = Usage
+	flag.StringVar(&host, "h", "localhost", "Specify host and port")
+	flag.IntVar(&port, "p", 9090, "Specify port")
+	flag.StringVar(&protocol, "P", "binary", "Specify the protocol (binary, compact, simplejson, json)")
+	flag.StringVar(&urlString, "u", "", "Specify the url")
+	flag.BoolVar(&framed, "framed", false, "Use framed transport")
+	flag.BoolVar(&useHttp, "http", false, "Use http")
+	flag.Parse()
+
+	if len(urlString) > 0 {
+		parsedUrl, err := url.Parse(urlString)
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
+			flag.Usage()
+		}
+		host = parsedUrl.Host
+		useHttp = len(parsedUrl.Scheme) <= 0 || parsedUrl.Scheme == "http"
+	} else if useHttp {
+		_, err := url.Parse(fmt.Sprint("http://", host, ":", port))
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "Error parsing URL: ", err)
+			flag.Usage()
+		}
+	}
+
+	cmd := flag.Arg(0)
+	var err error
+	if useHttp {
+		trans, err = thrift.NewTHttpClient(parsedUrl.String())
+	} else {
+		portStr := fmt.Sprint(port)
+		if strings.Contains(host, ":") {
+			host, portStr, err = net.SplitHostPort(host)
+			if err != nil {
+				fmt.Fprintln(os.Stderr, "error with host:", err)
+				os.Exit(1)
+			}
+		}
+		trans, err = thrift.NewTSocket(net.JoinHostPort(host, portStr))
+		if err != nil {
+			fmt.Fprintln(os.Stderr, "error resolving address:", err)
+			os.Exit(1)
+		}
+		if framed {
+			trans = thrift.NewTFramedTransport(trans)
+		}
+	}
+	if err != nil {
+		fmt.Fprintln(os.Stderr, "Error creating transport", err)
+		os.Exit(1)
+	}
+	defer trans.Close()
+	var protocolFactory thrift.TProtocolFactory
+	switch protocol {
+	case "compact":
+		protocolFactory = thrift.NewTCompactProtocolFactory()
+		break
+	case "simplejson":
+		protocolFactory = thrift.NewTSimpleJSONProtocolFactory()
+		break
+	case "json":
+		protocolFactory = thrift.NewTJSONProtocolFactory()
+		break
+	case "binary", "":
+		protocolFactory = thrift.NewTBinaryProtocolFactoryDefault()
+		break
+	default:
+		fmt.Fprintln(os.Stderr, "Invalid protocol specified: ", protocol)
+		Usage()
+		os.Exit(1)
+	}
+	client := aurora.NewReadOnlySchedulerClientFactory(trans, protocolFactory)
+	if err := trans.Open(); err != nil {
+		fmt.Fprintln(os.Stderr, "Error opening socket to ", host, ":", port, " ", err)
+		os.Exit(1)
+	}
+
+	switch cmd {
+	case "getRoleSummary":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "GetRoleSummary requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.GetRoleSummary())
+		fmt.Print("\n")
+		break
+	case "getJobSummary":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobSummary requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetJobSummary(value0))
+		fmt.Print("\n")
+		break
+	case "getTasksStatus":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetTasksStatus requires 1 args")
+			flag.Usage()
+		}
+		arg79 := flag.Arg(1)
+		mbTrans80 := thrift.NewTMemoryBufferLen(len(arg79))
+		defer mbTrans80.Close()
+		_, err81 := mbTrans80.WriteString(arg79)
+		if err81 != nil {
+			Usage()
+			return
+		}
+		factory82 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt83 := factory82.GetProtocol(mbTrans80)
+		argvalue0 := aurora.NewTaskQuery()
+		err84 := argvalue0.Read(jsProt83)
+		if err84 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetTasksStatus(value0))
+		fmt.Print("\n")
+		break
+	case "getTasksWithoutConfigs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetTasksWithoutConfigs requires 1 args")
+			flag.Usage()
+		}
+		arg85 := flag.Arg(1)
+		mbTrans86 := thrift.NewTMemoryBufferLen(len(arg85))
+		defer mbTrans86.Close()
+		_, err87 := mbTrans86.WriteString(arg85)
+		if err87 != nil {
+			Usage()
+			return
+		}
+		factory88 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt89 := factory88.GetProtocol(mbTrans86)
+		argvalue0 := aurora.NewTaskQuery()
+		err90 := argvalue0.Read(jsProt89)
+		if err90 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetTasksWithoutConfigs(value0))
+		fmt.Print("\n")
+		break
+	case "getPendingReason":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetPendingReason requires 1 args")
+			flag.Usage()
+		}
+		arg91 := flag.Arg(1)
+		mbTrans92 := thrift.NewTMemoryBufferLen(len(arg91))
+		defer mbTrans92.Close()
+		_, err93 := mbTrans92.WriteString(arg91)
+		if err93 != nil {
+			Usage()
+			return
+		}
+		factory94 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt95 := factory94.GetProtocol(mbTrans92)
+		argvalue0 := aurora.NewTaskQuery()
+		err96 := argvalue0.Read(jsProt95)
+		if err96 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetPendingReason(value0))
+		fmt.Print("\n")
+		break
+	case "getConfigSummary":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetConfigSummary requires 1 args")
+			flag.Usage()
+		}
+		arg97 := flag.Arg(1)
+		mbTrans98 := thrift.NewTMemoryBufferLen(len(arg97))
+		defer mbTrans98.Close()
+		_, err99 := mbTrans98.WriteString(arg97)
+		if err99 != nil {
+			Usage()
+			return
+		}
+		factory100 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt101 := factory100.GetProtocol(mbTrans98)
+		argvalue0 := aurora.NewJobKey()
+		err102 := argvalue0.Read(jsProt101)
+		if err102 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetConfigSummary(value0))
+		fmt.Print("\n")
+		break
+	case "getJobs":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobs requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetJobs(value0))
+		fmt.Print("\n")
+		break
+	case "getQuota":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetQuota requires 1 args")
+			flag.Usage()
+		}
+		argvalue0 := flag.Arg(1)
+		value0 := argvalue0
+		fmt.Print(client.GetQuota(value0))
+		fmt.Print("\n")
+		break
+	case "populateJobConfig":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "PopulateJobConfig requires 1 args")
+			flag.Usage()
+		}
+		arg105 := flag.Arg(1)
+		mbTrans106 := thrift.NewTMemoryBufferLen(len(arg105))
+		defer mbTrans106.Close()
+		_, err107 := mbTrans106.WriteString(arg105)
+		if err107 != nil {
+			Usage()
+			return
+		}
+		factory108 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt109 := factory108.GetProtocol(mbTrans106)
+		argvalue0 := aurora.NewJobConfiguration()
+		err110 := argvalue0.Read(jsProt109)
+		if err110 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.PopulateJobConfig(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateSummaries":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateSummaries requires 1 args")
+			flag.Usage()
+		}
+		arg111 := flag.Arg(1)
+		mbTrans112 := thrift.NewTMemoryBufferLen(len(arg111))
+		defer mbTrans112.Close()
+		_, err113 := mbTrans112.WriteString(arg111)
+		if err113 != nil {
+			Usage()
+			return
+		}
+		factory114 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt115 := factory114.GetProtocol(mbTrans112)
+		argvalue0 := aurora.NewJobUpdateQuery()
+		err116 := argvalue0.Read(jsProt115)
+		if err116 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateSummaries(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateDetails":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateDetails requires 1 args")
+			flag.Usage()
+		}
+		arg117 := flag.Arg(1)
+		mbTrans118 := thrift.NewTMemoryBufferLen(len(arg117))
+		defer mbTrans118.Close()
+		_, err119 := mbTrans118.WriteString(arg117)
+		if err119 != nil {
+			Usage()
+			return
+		}
+		factory120 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt121 := factory120.GetProtocol(mbTrans118)
+		argvalue0 := aurora.NewJobUpdateKey()
+		err122 := argvalue0.Read(jsProt121)
+		if err122 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateDetails(value0))
+		fmt.Print("\n")
+		break
+	case "getJobUpdateDiff":
+		if flag.NArg()-1 != 1 {
+			fmt.Fprintln(os.Stderr, "GetJobUpdateDiff requires 1 args")
+			flag.Usage()
+		}
+		arg123 := flag.Arg(1)
+		mbTrans124 := thrift.NewTMemoryBufferLen(len(arg123))
+		defer mbTrans124.Close()
+		_, err125 := mbTrans124.WriteString(arg123)
+		if err125 != nil {
+			Usage()
+			return
+		}
+		factory126 := thrift.NewTSimpleJSONProtocolFactory()
+		jsProt127 := factory126.GetProtocol(mbTrans124)
+		argvalue0 := aurora.NewJobUpdateRequest()
+		err128 := argvalue0.Read(jsProt127)
+		if err128 != nil {
+			Usage()
+			return
+		}
+		value0 := argvalue0
+		fmt.Print(client.GetJobUpdateDiff(value0))
+		fmt.Print("\n")
+		break
+	case "getTierConfigs":
+		if flag.NArg()-1 != 0 {
+			fmt.Fprintln(os.Stderr, "GetTierConfigs requires 0 args")
+			flag.Usage()
+		}
+		fmt.Print(client.GetTierConfigs())
+		fmt.Print("\n")
+		break
+	case "":
+		Usage()
+		break
+	default:
+		fmt.Fprintln(os.Stderr, "Invalid function ", cmd)
+	}
+}
diff --git a/gen-go/apache/aurora/readonlyscheduler.go b/gen-go/apache/aurora/readonlyscheduler.go
new file mode 100644
index 0000000..910a991
--- /dev/null
+++ b/gen-go/apache/aurora/readonlyscheduler.go
@@ -0,0 +1,4292 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package aurora
+
+import (
+	"bytes"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+)
+
+// (needed to ensure safety because of naive import list construction.)
+var _ = thrift.ZERO
+var _ = fmt.Printf
+var _ = bytes.Equal
+
+type ReadOnlyScheduler interface {
+	// Returns a summary of the jobs grouped by role.
+	GetRoleSummary() (r *Response, err error)
+	// Returns a summary of jobs, optionally only those owned by a specific role.
+	//
+	// Parameters:
+	//  - Role
+	GetJobSummary(role string) (r *Response, err error)
+	// Fetches the status of tasks.
+	//
+	// Parameters:
+	//  - Query
+	GetTasksStatus(query *TaskQuery) (r *Response, err error)
+	// Same as getTaskStatus but without the TaskConfig.ExecutorConfig data set.
+	// This is an interim solution until we have a better way to query TaskConfigs (AURORA-541).
+	//
+	// Parameters:
+	//  - Query
+	GetTasksWithoutConfigs(query *TaskQuery) (r *Response, err error)
+	// Returns user-friendly reasons (if available) for tasks retained in PENDING state.
+	//
+	// Parameters:
+	//  - Query
+	GetPendingReason(query *TaskQuery) (r *Response, err error)
+	// Fetches the configuration summary of active tasks for the specified job.
+	//
+	// Parameters:
+	//  - Job
+	GetConfigSummary(job *JobKey) (r *Response, err error)
+	// Fetches the status of jobs.
+	// ownerRole is optional, in which case all jobs are returned.
+	//
+	// Parameters:
+	//  - OwnerRole
+	GetJobs(ownerRole string) (r *Response, err error)
+	// Fetches the quota allocated for a user.
+	//
+	// Parameters:
+	//  - OwnerRole
+	GetQuota(ownerRole string) (r *Response, err error)
+	// Populates fields in a job configuration as though it were about to be run.
+	// This can be used to diff a configuration running tasks.
+	//
+	// Parameters:
+	//  - Description
+	PopulateJobConfig(description *JobConfiguration) (r *Response, err error)
+	// Gets job update summaries.
+	//
+	// Parameters:
+	//  - JobUpdateQuery
+	GetJobUpdateSummaries(jobUpdateQuery *JobUpdateQuery) (r *Response, err error)
+	// Gets job update details.
+	//
+	// Parameters:
+	//  - Key
+	GetJobUpdateDetails(key *JobUpdateKey) (r *Response, err error)
+	// Gets the diff between client (desired) and server (current) job states.
+	//
+	// Parameters:
+	//  - Request
+	GetJobUpdateDiff(request *JobUpdateRequest) (r *Response, err error)
+	// Gets tier configurations.
+	GetTierConfigs() (r *Response, err error)
+}
+
+type ReadOnlySchedulerClient struct {
+	Transport       thrift.TTransport
+	ProtocolFactory thrift.TProtocolFactory
+	InputProtocol   thrift.TProtocol
+	OutputProtocol  thrift.TProtocol
+	SeqId           int32
+}
+
+func NewReadOnlySchedulerClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *ReadOnlySchedulerClient {
+	return &ReadOnlySchedulerClient{Transport: t,
+		ProtocolFactory: f,
+		InputProtocol:   f.GetProtocol(t),
+		OutputProtocol:  f.GetProtocol(t),
+		SeqId:           0,
+	}
+}
+
+func NewReadOnlySchedulerClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *ReadOnlySchedulerClient {
+	return &ReadOnlySchedulerClient{Transport: t,
+		ProtocolFactory: nil,
+		InputProtocol:   iprot,
+		OutputProtocol:  oprot,
+		SeqId:           0,
+	}
+}
+
+// Returns a summary of the jobs grouped by role.
+func (p *ReadOnlySchedulerClient) GetRoleSummary() (r *Response, err error) {
+	if err = p.sendGetRoleSummary(); err != nil {
+		return
+	}
+	return p.recvGetRoleSummary()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetRoleSummary() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getRoleSummary", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetRoleSummaryArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetRoleSummary() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getRoleSummary" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getRoleSummary failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getRoleSummary failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error50 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error51 error
+		error51, err = error50.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error51
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getRoleSummary failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetRoleSummaryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Returns a summary of jobs, optionally only those owned by a specific role.
+//
+// Parameters:
+//  - Role
+func (p *ReadOnlySchedulerClient) GetJobSummary(role string) (r *Response, err error) {
+	if err = p.sendGetJobSummary(role); err != nil {
+		return
+	}
+	return p.recvGetJobSummary()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetJobSummary(role string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getJobSummary", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetJobSummaryArgs{
+		Role: role,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetJobSummary() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getJobSummary" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getJobSummary failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getJobSummary failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error52 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error53 error
+		error53, err = error52.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error53
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getJobSummary failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetJobSummaryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Fetches the status of tasks.
+//
+// Parameters:
+//  - Query
+func (p *ReadOnlySchedulerClient) GetTasksStatus(query *TaskQuery) (r *Response, err error) {
+	if err = p.sendGetTasksStatus(query); err != nil {
+		return
+	}
+	return p.recvGetTasksStatus()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetTasksStatus(query *TaskQuery) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getTasksStatus", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetTasksStatusArgs{
+		Query: query,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetTasksStatus() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getTasksStatus" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getTasksStatus failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getTasksStatus failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error54 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error55 error
+		error55, err = error54.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error55
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getTasksStatus failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetTasksStatusResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Same as getTaskStatus but without the TaskConfig.ExecutorConfig data set.
+// This is an interim solution until we have a better way to query TaskConfigs (AURORA-541).
+//
+// Parameters:
+//  - Query
+func (p *ReadOnlySchedulerClient) GetTasksWithoutConfigs(query *TaskQuery) (r *Response, err error) {
+	if err = p.sendGetTasksWithoutConfigs(query); err != nil {
+		return
+	}
+	return p.recvGetTasksWithoutConfigs()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetTasksWithoutConfigs(query *TaskQuery) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getTasksWithoutConfigs", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetTasksWithoutConfigsArgs{
+		Query: query,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetTasksWithoutConfigs() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getTasksWithoutConfigs" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getTasksWithoutConfigs failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getTasksWithoutConfigs failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error56 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error57 error
+		error57, err = error56.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error57
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getTasksWithoutConfigs failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetTasksWithoutConfigsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Returns user-friendly reasons (if available) for tasks retained in PENDING state.
+//
+// Parameters:
+//  - Query
+func (p *ReadOnlySchedulerClient) GetPendingReason(query *TaskQuery) (r *Response, err error) {
+	if err = p.sendGetPendingReason(query); err != nil {
+		return
+	}
+	return p.recvGetPendingReason()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetPendingReason(query *TaskQuery) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getPendingReason", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetPendingReasonArgs{
+		Query: query,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetPendingReason() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getPendingReason" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getPendingReason failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getPendingReason failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error58 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error59 error
+		error59, err = error58.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error59
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getPendingReason failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetPendingReasonResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Fetches the configuration summary of active tasks for the specified job.
+//
+// Parameters:
+//  - Job
+func (p *ReadOnlySchedulerClient) GetConfigSummary(job *JobKey) (r *Response, err error) {
+	if err = p.sendGetConfigSummary(job); err != nil {
+		return
+	}
+	return p.recvGetConfigSummary()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetConfigSummary(job *JobKey) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getConfigSummary", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetConfigSummaryArgs{
+		Job: job,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetConfigSummary() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getConfigSummary" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getConfigSummary failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getConfigSummary failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error60 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error61 error
+		error61, err = error60.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error61
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getConfigSummary failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetConfigSummaryResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Fetches the status of jobs.
+// ownerRole is optional, in which case all jobs are returned.
+//
+// Parameters:
+//  - OwnerRole
+func (p *ReadOnlySchedulerClient) GetJobs(ownerRole string) (r *Response, err error) {
+	if err = p.sendGetJobs(ownerRole); err != nil {
+		return
+	}
+	return p.recvGetJobs()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetJobs(ownerRole string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getJobs", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetJobsArgs{
+		OwnerRole: ownerRole,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetJobs() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getJobs" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getJobs failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getJobs failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error62 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error63 error
+		error63, err = error62.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error63
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getJobs failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetJobsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Fetches the quota allocated for a user.
+//
+// Parameters:
+//  - OwnerRole
+func (p *ReadOnlySchedulerClient) GetQuota(ownerRole string) (r *Response, err error) {
+	if err = p.sendGetQuota(ownerRole); err != nil {
+		return
+	}
+	return p.recvGetQuota()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetQuota(ownerRole string) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getQuota", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetQuotaArgs{
+		OwnerRole: ownerRole,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetQuota() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getQuota" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getQuota failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getQuota failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error64 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error65 error
+		error65, err = error64.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error65
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getQuota failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetQuotaResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Populates fields in a job configuration as though it were about to be run.
+// This can be used to diff a configuration running tasks.
+//
+// Parameters:
+//  - Description
+func (p *ReadOnlySchedulerClient) PopulateJobConfig(description *JobConfiguration) (r *Response, err error) {
+	if err = p.sendPopulateJobConfig(description); err != nil {
+		return
+	}
+	return p.recvPopulateJobConfig()
+}
+
+func (p *ReadOnlySchedulerClient) sendPopulateJobConfig(description *JobConfiguration) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("populateJobConfig", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerPopulateJobConfigArgs{
+		Description: description,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvPopulateJobConfig() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "populateJobConfig" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "populateJobConfig failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "populateJobConfig failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error66 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error67 error
+		error67, err = error66.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error67
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "populateJobConfig failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerPopulateJobConfigResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Gets job update summaries.
+//
+// Parameters:
+//  - JobUpdateQuery
+func (p *ReadOnlySchedulerClient) GetJobUpdateSummaries(jobUpdateQuery *JobUpdateQuery) (r *Response, err error) {
+	if err = p.sendGetJobUpdateSummaries(jobUpdateQuery); err != nil {
+		return
+	}
+	return p.recvGetJobUpdateSummaries()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetJobUpdateSummaries(jobUpdateQuery *JobUpdateQuery) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getJobUpdateSummaries", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetJobUpdateSummariesArgs{
+		JobUpdateQuery: jobUpdateQuery,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetJobUpdateSummaries() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getJobUpdateSummaries" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getJobUpdateSummaries failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getJobUpdateSummaries failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error68 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error69 error
+		error69, err = error68.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error69
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getJobUpdateSummaries failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetJobUpdateSummariesResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Gets job update details.
+//
+// Parameters:
+//  - Key
+func (p *ReadOnlySchedulerClient) GetJobUpdateDetails(key *JobUpdateKey) (r *Response, err error) {
+	if err = p.sendGetJobUpdateDetails(key); err != nil {
+		return
+	}
+	return p.recvGetJobUpdateDetails()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetJobUpdateDetails(key *JobUpdateKey) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getJobUpdateDetails", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetJobUpdateDetailsArgs{
+		Key: key,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetJobUpdateDetails() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getJobUpdateDetails" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getJobUpdateDetails failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getJobUpdateDetails failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error70 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error71 error
+		error71, err = error70.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error71
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getJobUpdateDetails failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetJobUpdateDetailsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Gets the diff between client (desired) and server (current) job states.
+//
+// Parameters:
+//  - Request
+func (p *ReadOnlySchedulerClient) GetJobUpdateDiff(request *JobUpdateRequest) (r *Response, err error) {
+	if err = p.sendGetJobUpdateDiff(request); err != nil {
+		return
+	}
+	return p.recvGetJobUpdateDiff()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetJobUpdateDiff(request *JobUpdateRequest) (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getJobUpdateDiff", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetJobUpdateDiffArgs{
+		Request: request,
+	}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetJobUpdateDiff() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getJobUpdateDiff" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getJobUpdateDiff failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getJobUpdateDiff failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error72 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error73 error
+		error73, err = error72.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error73
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getJobUpdateDiff failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetJobUpdateDiffResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+// Gets tier configurations.
+func (p *ReadOnlySchedulerClient) GetTierConfigs() (r *Response, err error) {
+	if err = p.sendGetTierConfigs(); err != nil {
+		return
+	}
+	return p.recvGetTierConfigs()
+}
+
+func (p *ReadOnlySchedulerClient) sendGetTierConfigs() (err error) {
+	oprot := p.OutputProtocol
+	if oprot == nil {
+		oprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.OutputProtocol = oprot
+	}
+	p.SeqId++
+	if err = oprot.WriteMessageBegin("getTierConfigs", thrift.CALL, p.SeqId); err != nil {
+		return
+	}
+	args := ReadOnlySchedulerGetTierConfigsArgs{}
+	if err = args.Write(oprot); err != nil {
+		return
+	}
+	if err = oprot.WriteMessageEnd(); err != nil {
+		return
+	}
+	return oprot.Flush()
+}
+
+func (p *ReadOnlySchedulerClient) recvGetTierConfigs() (value *Response, err error) {
+	iprot := p.InputProtocol
+	if iprot == nil {
+		iprot = p.ProtocolFactory.GetProtocol(p.Transport)
+		p.InputProtocol = iprot
+	}
+	method, mTypeId, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return
+	}
+	if method != "getTierConfigs" {
+		err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getTierConfigs failed: wrong method name")
+		return
+	}
+	if p.SeqId != seqId {
+		err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getTierConfigs failed: out of sequence response")
+		return
+	}
+	if mTypeId == thrift.EXCEPTION {
+		error74 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
+		var error75 error
+		error75, err = error74.Read(iprot)
+		if err != nil {
+			return
+		}
+		if err = iprot.ReadMessageEnd(); err != nil {
+			return
+		}
+		err = error75
+		return
+	}
+	if mTypeId != thrift.REPLY {
+		err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getTierConfigs failed: invalid message type")
+		return
+	}
+	result := ReadOnlySchedulerGetTierConfigsResult{}
+	if err = result.Read(iprot); err != nil {
+		return
+	}
+	if err = iprot.ReadMessageEnd(); err != nil {
+		return
+	}
+	value = result.GetSuccess()
+	return
+}
+
+type ReadOnlySchedulerProcessor struct {
+	processorMap map[string]thrift.TProcessorFunction
+	handler      ReadOnlyScheduler
+}
+
+func (p *ReadOnlySchedulerProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
+	p.processorMap[key] = processor
+}
+
+func (p *ReadOnlySchedulerProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
+	processor, ok = p.processorMap[key]
+	return processor, ok
+}
+
+func (p *ReadOnlySchedulerProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
+	return p.processorMap
+}
+
+func NewReadOnlySchedulerProcessor(handler ReadOnlyScheduler) *ReadOnlySchedulerProcessor {
+
+	self76 := &ReadOnlySchedulerProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
+	self76.processorMap["getRoleSummary"] = &readOnlySchedulerProcessorGetRoleSummary{handler: handler}
+	self76.processorMap["getJobSummary"] = &readOnlySchedulerProcessorGetJobSummary{handler: handler}
+	self76.processorMap["getTasksStatus"] = &readOnlySchedulerProcessorGetTasksStatus{handler: handler}
+	self76.processorMap["getTasksWithoutConfigs"] = &readOnlySchedulerProcessorGetTasksWithoutConfigs{handler: handler}
+	self76.processorMap["getPendingReason"] = &readOnlySchedulerProcessorGetPendingReason{handler: handler}
+	self76.processorMap["getConfigSummary"] = &readOnlySchedulerProcessorGetConfigSummary{handler: handler}
+	self76.processorMap["getJobs"] = &readOnlySchedulerProcessorGetJobs{handler: handler}
+	self76.processorMap["getQuota"] = &readOnlySchedulerProcessorGetQuota{handler: handler}
+	self76.processorMap["populateJobConfig"] = &readOnlySchedulerProcessorPopulateJobConfig{handler: handler}
+	self76.processorMap["getJobUpdateSummaries"] = &readOnlySchedulerProcessorGetJobUpdateSummaries{handler: handler}
+	self76.processorMap["getJobUpdateDetails"] = &readOnlySchedulerProcessorGetJobUpdateDetails{handler: handler}
+	self76.processorMap["getJobUpdateDiff"] = &readOnlySchedulerProcessorGetJobUpdateDiff{handler: handler}
+	self76.processorMap["getTierConfigs"] = &readOnlySchedulerProcessorGetTierConfigs{handler: handler}
+	return self76
+}
+
+func (p *ReadOnlySchedulerProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	name, _, seqId, err := iprot.ReadMessageBegin()
+	if err != nil {
+		return false, err
+	}
+	if processor, ok := p.GetProcessorFunction(name); ok {
+		return processor.Process(seqId, iprot, oprot)
+	}
+	iprot.Skip(thrift.STRUCT)
+	iprot.ReadMessageEnd()
+	x77 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
+	oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
+	x77.Write(oprot)
+	oprot.WriteMessageEnd()
+	oprot.Flush()
+	return false, x77
+
+}
+
+type readOnlySchedulerProcessorGetRoleSummary struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetRoleSummary) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetRoleSummaryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getRoleSummary", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetRoleSummaryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetRoleSummary(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getRoleSummary: "+err2.Error())
+		oprot.WriteMessageBegin("getRoleSummary", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getRoleSummary", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetJobSummary struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetJobSummary) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetJobSummaryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getJobSummary", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetJobSummaryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetJobSummary(args.Role); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getJobSummary: "+err2.Error())
+		oprot.WriteMessageBegin("getJobSummary", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getJobSummary", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetTasksStatus struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetTasksStatus) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetTasksStatusArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getTasksStatus", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetTasksStatusResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetTasksStatus(args.Query); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getTasksStatus: "+err2.Error())
+		oprot.WriteMessageBegin("getTasksStatus", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getTasksStatus", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetTasksWithoutConfigs struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetTasksWithoutConfigs) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetTasksWithoutConfigsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getTasksWithoutConfigs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetTasksWithoutConfigsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetTasksWithoutConfigs(args.Query); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getTasksWithoutConfigs: "+err2.Error())
+		oprot.WriteMessageBegin("getTasksWithoutConfigs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getTasksWithoutConfigs", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetPendingReason struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetPendingReason) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetPendingReasonArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getPendingReason", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetPendingReasonResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetPendingReason(args.Query); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getPendingReason: "+err2.Error())
+		oprot.WriteMessageBegin("getPendingReason", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getPendingReason", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetConfigSummary struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetConfigSummary) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetConfigSummaryArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getConfigSummary", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetConfigSummaryResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetConfigSummary(args.Job); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getConfigSummary: "+err2.Error())
+		oprot.WriteMessageBegin("getConfigSummary", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getConfigSummary", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetJobs struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetJobs) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetJobsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getJobs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetJobsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetJobs(args.OwnerRole); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getJobs: "+err2.Error())
+		oprot.WriteMessageBegin("getJobs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getJobs", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetQuota struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetQuota) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetQuotaArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getQuota", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetQuotaResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetQuota(args.OwnerRole); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getQuota: "+err2.Error())
+		oprot.WriteMessageBegin("getQuota", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getQuota", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorPopulateJobConfig struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorPopulateJobConfig) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerPopulateJobConfigArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("populateJobConfig", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerPopulateJobConfigResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.PopulateJobConfig(args.Description); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing populateJobConfig: "+err2.Error())
+		oprot.WriteMessageBegin("populateJobConfig", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("populateJobConfig", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetJobUpdateSummaries struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetJobUpdateSummaries) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetJobUpdateSummariesArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getJobUpdateSummaries", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetJobUpdateSummariesResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetJobUpdateSummaries(args.JobUpdateQuery); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getJobUpdateSummaries: "+err2.Error())
+		oprot.WriteMessageBegin("getJobUpdateSummaries", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getJobUpdateSummaries", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetJobUpdateDetails struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetJobUpdateDetails) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetJobUpdateDetailsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getJobUpdateDetails", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetJobUpdateDetailsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetJobUpdateDetails(args.Key); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getJobUpdateDetails: "+err2.Error())
+		oprot.WriteMessageBegin("getJobUpdateDetails", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getJobUpdateDetails", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetJobUpdateDiff struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetJobUpdateDiff) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetJobUpdateDiffArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getJobUpdateDiff", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetJobUpdateDiffResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetJobUpdateDiff(args.Request); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getJobUpdateDiff: "+err2.Error())
+		oprot.WriteMessageBegin("getJobUpdateDiff", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getJobUpdateDiff", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+type readOnlySchedulerProcessorGetTierConfigs struct {
+	handler ReadOnlyScheduler
+}
+
+func (p *readOnlySchedulerProcessorGetTierConfigs) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
+	args := ReadOnlySchedulerGetTierConfigsArgs{}
+	if err = args.Read(iprot); err != nil {
+		iprot.ReadMessageEnd()
+		x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
+		oprot.WriteMessageBegin("getTierConfigs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return false, err
+	}
+
+	iprot.ReadMessageEnd()
+	result := ReadOnlySchedulerGetTierConfigsResult{}
+	var retval *Response
+	var err2 error
+	if retval, err2 = p.handler.GetTierConfigs(); err2 != nil {
+		x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getTierConfigs: "+err2.Error())
+		oprot.WriteMessageBegin("getTierConfigs", thrift.EXCEPTION, seqId)
+		x.Write(oprot)
+		oprot.WriteMessageEnd()
+		oprot.Flush()
+		return true, err2
+	} else {
+		result.Success = retval
+	}
+	if err2 = oprot.WriteMessageBegin("getTierConfigs", thrift.REPLY, seqId); err2 != nil {
+		err = err2
+	}
+	if err2 = result.Write(oprot); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err2 = oprot.Flush(); err == nil && err2 != nil {
+		err = err2
+	}
+	if err != nil {
+		return
+	}
+	return true, err
+}
+
+// HELPER FUNCTIONS AND STRUCTURES
+
+type ReadOnlySchedulerGetRoleSummaryArgs struct {
+}
+
+func NewReadOnlySchedulerGetRoleSummaryArgs() *ReadOnlySchedulerGetRoleSummaryArgs {
+	return &ReadOnlySchedulerGetRoleSummaryArgs{}
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getRoleSummary_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetRoleSummaryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetRoleSummaryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetRoleSummaryResult() *ReadOnlySchedulerGetRoleSummaryResult {
+	return &ReadOnlySchedulerGetRoleSummaryResult{}
+}
+
+var ReadOnlySchedulerGetRoleSummaryResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetRoleSummaryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetRoleSummaryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetRoleSummaryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getRoleSummary_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetRoleSummaryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetRoleSummaryResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Role
+type ReadOnlySchedulerGetJobSummaryArgs struct {
+	Role string `thrift:"role,1" json:"role"`
+}
+
+func NewReadOnlySchedulerGetJobSummaryArgs() *ReadOnlySchedulerGetJobSummaryArgs {
+	return &ReadOnlySchedulerGetJobSummaryArgs{}
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryArgs) GetRole() string {
+	return p.Role
+}
+func (p *ReadOnlySchedulerGetJobSummaryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryArgs) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Role = v
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobSummary_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("role", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:role: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Role)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.role (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:role: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobSummaryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetJobSummaryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetJobSummaryResult() *ReadOnlySchedulerGetJobSummaryResult {
+	return &ReadOnlySchedulerGetJobSummaryResult{}
+}
+
+var ReadOnlySchedulerGetJobSummaryResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetJobSummaryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetJobSummaryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetJobSummaryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobSummary_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobSummaryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobSummaryResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Query
+type ReadOnlySchedulerGetTasksStatusArgs struct {
+	Query *TaskQuery `thrift:"query,1" json:"query"`
+}
+
+func NewReadOnlySchedulerGetTasksStatusArgs() *ReadOnlySchedulerGetTasksStatusArgs {
+	return &ReadOnlySchedulerGetTasksStatusArgs{}
+}
+
+var ReadOnlySchedulerGetTasksStatusArgs_Query_DEFAULT *TaskQuery
+
+func (p *ReadOnlySchedulerGetTasksStatusArgs) GetQuery() *TaskQuery {
+	if !p.IsSetQuery() {
+		return ReadOnlySchedulerGetTasksStatusArgs_Query_DEFAULT
+	}
+	return p.Query
+}
+func (p *ReadOnlySchedulerGetTasksStatusArgs) IsSetQuery() bool {
+	return p.Query != nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusArgs) readField1(iprot thrift.TProtocol) error {
+	p.Query = &TaskQuery{}
+	if err := p.Query.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Query), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getTasksStatus_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("query", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:query: ", p), err)
+	}
+	if err := p.Query.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Query), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:query: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetTasksStatusArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetTasksStatusResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetTasksStatusResult() *ReadOnlySchedulerGetTasksStatusResult {
+	return &ReadOnlySchedulerGetTasksStatusResult{}
+}
+
+var ReadOnlySchedulerGetTasksStatusResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetTasksStatusResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetTasksStatusResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetTasksStatusResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getTasksStatus_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetTasksStatusResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetTasksStatusResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Query
+type ReadOnlySchedulerGetTasksWithoutConfigsArgs struct {
+	Query *TaskQuery `thrift:"query,1" json:"query"`
+}
+
+func NewReadOnlySchedulerGetTasksWithoutConfigsArgs() *ReadOnlySchedulerGetTasksWithoutConfigsArgs {
+	return &ReadOnlySchedulerGetTasksWithoutConfigsArgs{}
+}
+
+var ReadOnlySchedulerGetTasksWithoutConfigsArgs_Query_DEFAULT *TaskQuery
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) GetQuery() *TaskQuery {
+	if !p.IsSetQuery() {
+		return ReadOnlySchedulerGetTasksWithoutConfigsArgs_Query_DEFAULT
+	}
+	return p.Query
+}
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) IsSetQuery() bool {
+	return p.Query != nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) readField1(iprot thrift.TProtocol) error {
+	p.Query = &TaskQuery{}
+	if err := p.Query.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Query), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getTasksWithoutConfigs_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("query", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:query: ", p), err)
+	}
+	if err := p.Query.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Query), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:query: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetTasksWithoutConfigsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetTasksWithoutConfigsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetTasksWithoutConfigsResult() *ReadOnlySchedulerGetTasksWithoutConfigsResult {
+	return &ReadOnlySchedulerGetTasksWithoutConfigsResult{}
+}
+
+var ReadOnlySchedulerGetTasksWithoutConfigsResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetTasksWithoutConfigsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getTasksWithoutConfigs_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetTasksWithoutConfigsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetTasksWithoutConfigsResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Query
+type ReadOnlySchedulerGetPendingReasonArgs struct {
+	Query *TaskQuery `thrift:"query,1" json:"query"`
+}
+
+func NewReadOnlySchedulerGetPendingReasonArgs() *ReadOnlySchedulerGetPendingReasonArgs {
+	return &ReadOnlySchedulerGetPendingReasonArgs{}
+}
+
+var ReadOnlySchedulerGetPendingReasonArgs_Query_DEFAULT *TaskQuery
+
+func (p *ReadOnlySchedulerGetPendingReasonArgs) GetQuery() *TaskQuery {
+	if !p.IsSetQuery() {
+		return ReadOnlySchedulerGetPendingReasonArgs_Query_DEFAULT
+	}
+	return p.Query
+}
+func (p *ReadOnlySchedulerGetPendingReasonArgs) IsSetQuery() bool {
+	return p.Query != nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonArgs) readField1(iprot thrift.TProtocol) error {
+	p.Query = &TaskQuery{}
+	if err := p.Query.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Query), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getPendingReason_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("query", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:query: ", p), err)
+	}
+	if err := p.Query.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Query), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:query: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetPendingReasonArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetPendingReasonResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetPendingReasonResult() *ReadOnlySchedulerGetPendingReasonResult {
+	return &ReadOnlySchedulerGetPendingReasonResult{}
+}
+
+var ReadOnlySchedulerGetPendingReasonResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetPendingReasonResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetPendingReasonResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetPendingReasonResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getPendingReason_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetPendingReasonResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetPendingReasonResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Job
+type ReadOnlySchedulerGetConfigSummaryArgs struct {
+	Job *JobKey `thrift:"job,1" json:"job"`
+}
+
+func NewReadOnlySchedulerGetConfigSummaryArgs() *ReadOnlySchedulerGetConfigSummaryArgs {
+	return &ReadOnlySchedulerGetConfigSummaryArgs{}
+}
+
+var ReadOnlySchedulerGetConfigSummaryArgs_Job_DEFAULT *JobKey
+
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return ReadOnlySchedulerGetConfigSummaryArgs_Job_DEFAULT
+	}
+	return p.Job
+}
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) readField1(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getConfigSummary_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:job: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetConfigSummaryArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetConfigSummaryResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetConfigSummaryResult() *ReadOnlySchedulerGetConfigSummaryResult {
+	return &ReadOnlySchedulerGetConfigSummaryResult{}
+}
+
+var ReadOnlySchedulerGetConfigSummaryResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetConfigSummaryResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetConfigSummaryResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetConfigSummaryResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getConfigSummary_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetConfigSummaryResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetConfigSummaryResult(%+v)", *p)
+}
+
+// Attributes:
+//  - OwnerRole
+type ReadOnlySchedulerGetJobsArgs struct {
+	OwnerRole string `thrift:"ownerRole,1" json:"ownerRole"`
+}
+
+func NewReadOnlySchedulerGetJobsArgs() *ReadOnlySchedulerGetJobsArgs {
+	return &ReadOnlySchedulerGetJobsArgs{}
+}
+
+func (p *ReadOnlySchedulerGetJobsArgs) GetOwnerRole() string {
+	return p.OwnerRole
+}
+func (p *ReadOnlySchedulerGetJobsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobsArgs) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.OwnerRole = v
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobs_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobsArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("ownerRole", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ownerRole: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.OwnerRole)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.ownerRole (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ownerRole: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetJobsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetJobsResult() *ReadOnlySchedulerGetJobsResult {
+	return &ReadOnlySchedulerGetJobsResult{}
+}
+
+var ReadOnlySchedulerGetJobsResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetJobsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetJobsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetJobsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetJobsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobs_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobsResult(%+v)", *p)
+}
+
+// Attributes:
+//  - OwnerRole
+type ReadOnlySchedulerGetQuotaArgs struct {
+	OwnerRole string `thrift:"ownerRole,1" json:"ownerRole"`
+}
+
+func NewReadOnlySchedulerGetQuotaArgs() *ReadOnlySchedulerGetQuotaArgs {
+	return &ReadOnlySchedulerGetQuotaArgs{}
+}
+
+func (p *ReadOnlySchedulerGetQuotaArgs) GetOwnerRole() string {
+	return p.OwnerRole
+}
+func (p *ReadOnlySchedulerGetQuotaArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaArgs) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.OwnerRole = v
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getQuota_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("ownerRole", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ownerRole: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.OwnerRole)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.ownerRole (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ownerRole: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetQuotaArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetQuotaArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetQuotaResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetQuotaResult() *ReadOnlySchedulerGetQuotaResult {
+	return &ReadOnlySchedulerGetQuotaResult{}
+}
+
+var ReadOnlySchedulerGetQuotaResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetQuotaResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetQuotaResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetQuotaResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getQuota_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetQuotaResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetQuotaResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetQuotaResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Description
+type ReadOnlySchedulerPopulateJobConfigArgs struct {
+	Description *JobConfiguration `thrift:"description,1" json:"description"`
+}
+
+func NewReadOnlySchedulerPopulateJobConfigArgs() *ReadOnlySchedulerPopulateJobConfigArgs {
+	return &ReadOnlySchedulerPopulateJobConfigArgs{}
+}
+
+var ReadOnlySchedulerPopulateJobConfigArgs_Description_DEFAULT *JobConfiguration
+
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) GetDescription() *JobConfiguration {
+	if !p.IsSetDescription() {
+		return ReadOnlySchedulerPopulateJobConfigArgs_Description_DEFAULT
+	}
+	return p.Description
+}
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) IsSetDescription() bool {
+	return p.Description != nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) readField1(iprot thrift.TProtocol) error {
+	p.Description = &JobConfiguration{}
+	if err := p.Description.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Description), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("populateJobConfig_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("description", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:description: ", p), err)
+	}
+	if err := p.Description.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Description), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:description: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerPopulateJobConfigArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerPopulateJobConfigResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerPopulateJobConfigResult() *ReadOnlySchedulerPopulateJobConfigResult {
+	return &ReadOnlySchedulerPopulateJobConfigResult{}
+}
+
+var ReadOnlySchedulerPopulateJobConfigResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerPopulateJobConfigResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerPopulateJobConfigResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerPopulateJobConfigResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("populateJobConfig_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerPopulateJobConfigResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerPopulateJobConfigResult(%+v)", *p)
+}
+
+// Attributes:
+//  - JobUpdateQuery
+type ReadOnlySchedulerGetJobUpdateSummariesArgs struct {
+	JobUpdateQuery *JobUpdateQuery `thrift:"jobUpdateQuery,1" json:"jobUpdateQuery"`
+}
+
+func NewReadOnlySchedulerGetJobUpdateSummariesArgs() *ReadOnlySchedulerGetJobUpdateSummariesArgs {
+	return &ReadOnlySchedulerGetJobUpdateSummariesArgs{}
+}
+
+var ReadOnlySchedulerGetJobUpdateSummariesArgs_JobUpdateQuery_DEFAULT *JobUpdateQuery
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) GetJobUpdateQuery() *JobUpdateQuery {
+	if !p.IsSetJobUpdateQuery() {
+		return ReadOnlySchedulerGetJobUpdateSummariesArgs_JobUpdateQuery_DEFAULT
+	}
+	return p.JobUpdateQuery
+}
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) IsSetJobUpdateQuery() bool {
+	return p.JobUpdateQuery != nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) readField1(iprot thrift.TProtocol) error {
+	p.JobUpdateQuery = &JobUpdateQuery{}
+	if err := p.JobUpdateQuery.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.JobUpdateQuery), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobUpdateSummaries_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("jobUpdateQuery", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:jobUpdateQuery: ", p), err)
+	}
+	if err := p.JobUpdateQuery.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.JobUpdateQuery), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:jobUpdateQuery: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobUpdateSummariesArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetJobUpdateSummariesResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetJobUpdateSummariesResult() *ReadOnlySchedulerGetJobUpdateSummariesResult {
+	return &ReadOnlySchedulerGetJobUpdateSummariesResult{}
+}
+
+var ReadOnlySchedulerGetJobUpdateSummariesResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetJobUpdateSummariesResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobUpdateSummaries_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateSummariesResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobUpdateSummariesResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Key
+type ReadOnlySchedulerGetJobUpdateDetailsArgs struct {
+	Key *JobUpdateKey `thrift:"key,1" json:"key"`
+}
+
+func NewReadOnlySchedulerGetJobUpdateDetailsArgs() *ReadOnlySchedulerGetJobUpdateDetailsArgs {
+	return &ReadOnlySchedulerGetJobUpdateDetailsArgs{}
+}
+
+var ReadOnlySchedulerGetJobUpdateDetailsArgs_Key_DEFAULT *JobUpdateKey
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return ReadOnlySchedulerGetJobUpdateDetailsArgs_Key_DEFAULT
+	}
+	return p.Key
+}
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobUpdateDetails_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobUpdateDetailsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetJobUpdateDetailsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetJobUpdateDetailsResult() *ReadOnlySchedulerGetJobUpdateDetailsResult {
+	return &ReadOnlySchedulerGetJobUpdateDetailsResult{}
+}
+
+var ReadOnlySchedulerGetJobUpdateDetailsResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetJobUpdateDetailsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobUpdateDetails_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDetailsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobUpdateDetailsResult(%+v)", *p)
+}
+
+// Attributes:
+//  - Request
+type ReadOnlySchedulerGetJobUpdateDiffArgs struct {
+	Request *JobUpdateRequest `thrift:"request,1" json:"request"`
+}
+
+func NewReadOnlySchedulerGetJobUpdateDiffArgs() *ReadOnlySchedulerGetJobUpdateDiffArgs {
+	return &ReadOnlySchedulerGetJobUpdateDiffArgs{}
+}
+
+var ReadOnlySchedulerGetJobUpdateDiffArgs_Request_DEFAULT *JobUpdateRequest
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) GetRequest() *JobUpdateRequest {
+	if !p.IsSetRequest() {
+		return ReadOnlySchedulerGetJobUpdateDiffArgs_Request_DEFAULT
+	}
+	return p.Request
+}
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) IsSetRequest() bool {
+	return p.Request != nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) readField1(iprot thrift.TProtocol) error {
+	p.Request = &JobUpdateRequest{}
+	if err := p.Request.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Request), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobUpdateDiff_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:request: ", p), err)
+	}
+	if err := p.Request.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Request), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:request: ", p), err)
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobUpdateDiffArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetJobUpdateDiffResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetJobUpdateDiffResult() *ReadOnlySchedulerGetJobUpdateDiffResult {
+	return &ReadOnlySchedulerGetJobUpdateDiffResult{}
+}
+
+var ReadOnlySchedulerGetJobUpdateDiffResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetJobUpdateDiffResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getJobUpdateDiff_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetJobUpdateDiffResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetJobUpdateDiffResult(%+v)", *p)
+}
+
+type ReadOnlySchedulerGetTierConfigsArgs struct {
+}
+
+func NewReadOnlySchedulerGetTierConfigsArgs() *ReadOnlySchedulerGetTierConfigsArgs {
+	return &ReadOnlySchedulerGetTierConfigsArgs{}
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsArgs) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		if err := iprot.Skip(fieldTypeId); err != nil {
+			return err
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsArgs) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getTierConfigs_args"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsArgs) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetTierConfigsArgs(%+v)", *p)
+}
+
+// Attributes:
+//  - Success
+type ReadOnlySchedulerGetTierConfigsResult struct {
+	Success *Response `thrift:"success,0" json:"success,omitempty"`
+}
+
+func NewReadOnlySchedulerGetTierConfigsResult() *ReadOnlySchedulerGetTierConfigsResult {
+	return &ReadOnlySchedulerGetTierConfigsResult{}
+}
+
+var ReadOnlySchedulerGetTierConfigsResult_Success_DEFAULT *Response
+
+func (p *ReadOnlySchedulerGetTierConfigsResult) GetSuccess() *Response {
+	if !p.IsSetSuccess() {
+		return ReadOnlySchedulerGetTierConfigsResult_Success_DEFAULT
+	}
+	return p.Success
+}
+func (p *ReadOnlySchedulerGetTierConfigsResult) IsSetSuccess() bool {
+	return p.Success != nil
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsResult) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 0:
+			if err := p.readField0(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsResult) readField0(iprot thrift.TProtocol) error {
+	p.Success = &Response{}
+	if err := p.Success.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsResult) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("getTierConfigs_result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField0(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsResult) writeField0(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSuccess() {
+		if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
+		}
+		if err := p.Success.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ReadOnlySchedulerGetTierConfigsResult) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ReadOnlySchedulerGetTierConfigsResult(%+v)", *p)
+}
diff --git a/gen-go/apache/aurora/ttypes.go b/gen-go/apache/aurora/ttypes.go
new file mode 100644
index 0000000..a89ba5f
--- /dev/null
+++ b/gen-go/apache/aurora/ttypes.go
@@ -0,0 +1,15611 @@
+// Autogenerated by Thrift Compiler (0.9.3)
+// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+package aurora
+
+import (
+	"bytes"
+	"fmt"
+	"git.apache.org/thrift.git/lib/go/thrift"
+)
+
+// (needed to ensure safety because of naive import list construction.)
+var _ = thrift.ZERO
+var _ = fmt.Printf
+var _ = bytes.Equal
+
+var GoUnusedProtection__ int
+
+type ResponseCode int64
+
+const (
+	ResponseCode_INVALID_REQUEST ResponseCode = 0
+	ResponseCode_OK              ResponseCode = 1
+	ResponseCode_ERROR           ResponseCode = 2
+	ResponseCode_WARNING         ResponseCode = 3
+	ResponseCode_AUTH_FAILED     ResponseCode = 4
+	ResponseCode_LOCK_ERROR      ResponseCode = 5
+	ResponseCode_ERROR_TRANSIENT ResponseCode = 6
+)
+
+func (p ResponseCode) String() string {
+	switch p {
+	case ResponseCode_INVALID_REQUEST:
+		return "INVALID_REQUEST"
+	case ResponseCode_OK:
+		return "OK"
+	case ResponseCode_ERROR:
+		return "ERROR"
+	case ResponseCode_WARNING:
+		return "WARNING"
+	case ResponseCode_AUTH_FAILED:
+		return "AUTH_FAILED"
+	case ResponseCode_LOCK_ERROR:
+		return "LOCK_ERROR"
+	case ResponseCode_ERROR_TRANSIENT:
+		return "ERROR_TRANSIENT"
+	}
+	return "<UNSET>"
+}
+
+func ResponseCodeFromString(s string) (ResponseCode, error) {
+	switch s {
+	case "INVALID_REQUEST":
+		return ResponseCode_INVALID_REQUEST, nil
+	case "OK":
+		return ResponseCode_OK, nil
+	case "ERROR":
+		return ResponseCode_ERROR, nil
+	case "WARNING":
+		return ResponseCode_WARNING, nil
+	case "AUTH_FAILED":
+		return ResponseCode_AUTH_FAILED, nil
+	case "LOCK_ERROR":
+		return ResponseCode_LOCK_ERROR, nil
+	case "ERROR_TRANSIENT":
+		return ResponseCode_ERROR_TRANSIENT, nil
+	}
+	return ResponseCode(0), fmt.Errorf("not a valid ResponseCode string")
+}
+
+func ResponseCodePtr(v ResponseCode) *ResponseCode { return &v }
+
+func (p ResponseCode) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *ResponseCode) UnmarshalText(text []byte) error {
+	q, err := ResponseCodeFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+type MaintenanceMode int64
+
+const (
+	MaintenanceMode_NONE      MaintenanceMode = 1
+	MaintenanceMode_SCHEDULED MaintenanceMode = 2
+	MaintenanceMode_DRAINING  MaintenanceMode = 3
+	MaintenanceMode_DRAINED   MaintenanceMode = 4
+)
+
+func (p MaintenanceMode) String() string {
+	switch p {
+	case MaintenanceMode_NONE:
+		return "NONE"
+	case MaintenanceMode_SCHEDULED:
+		return "SCHEDULED"
+	case MaintenanceMode_DRAINING:
+		return "DRAINING"
+	case MaintenanceMode_DRAINED:
+		return "DRAINED"
+	}
+	return "<UNSET>"
+}
+
+func MaintenanceModeFromString(s string) (MaintenanceMode, error) {
+	switch s {
+	case "NONE":
+		return MaintenanceMode_NONE, nil
+	case "SCHEDULED":
+		return MaintenanceMode_SCHEDULED, nil
+	case "DRAINING":
+		return MaintenanceMode_DRAINING, nil
+	case "DRAINED":
+		return MaintenanceMode_DRAINED, nil
+	}
+	return MaintenanceMode(0), fmt.Errorf("not a valid MaintenanceMode string")
+}
+
+func MaintenanceModePtr(v MaintenanceMode) *MaintenanceMode { return &v }
+
+func (p MaintenanceMode) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *MaintenanceMode) UnmarshalText(text []byte) error {
+	q, err := MaintenanceModeFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+//The mode for a volume mount
+type Mode int64
+
+const (
+	Mode_RW Mode = 1
+	Mode_RO Mode = 2
+)
+
+func (p Mode) String() string {
+	switch p {
+	case Mode_RW:
+		return "RW"
+	case Mode_RO:
+		return "RO"
+	}
+	return "<UNSET>"
+}
+
+func ModeFromString(s string) (Mode, error) {
+	switch s {
+	case "RW":
+		return Mode_RW, nil
+	case "RO":
+		return Mode_RO, nil
+	}
+	return Mode(0), fmt.Errorf("not a valid Mode string")
+}
+
+func ModePtr(v Mode) *Mode { return &v }
+
+func (p Mode) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *Mode) UnmarshalText(text []byte) error {
+	q, err := ModeFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+//Defines the policy for launching a new cron job when one is already running.
+type CronCollisionPolicy int64
+
+const (
+	CronCollisionPolicy_KILL_EXISTING CronCollisionPolicy = 0
+	CronCollisionPolicy_CANCEL_NEW    CronCollisionPolicy = 1
+	CronCollisionPolicy_RUN_OVERLAP   CronCollisionPolicy = 2
+)
+
+func (p CronCollisionPolicy) String() string {
+	switch p {
+	case CronCollisionPolicy_KILL_EXISTING:
+		return "KILL_EXISTING"
+	case CronCollisionPolicy_CANCEL_NEW:
+		return "CANCEL_NEW"
+	case CronCollisionPolicy_RUN_OVERLAP:
+		return "RUN_OVERLAP"
+	}
+	return "<UNSET>"
+}
+
+func CronCollisionPolicyFromString(s string) (CronCollisionPolicy, error) {
+	switch s {
+	case "KILL_EXISTING":
+		return CronCollisionPolicy_KILL_EXISTING, nil
+	case "CANCEL_NEW":
+		return CronCollisionPolicy_CANCEL_NEW, nil
+	case "RUN_OVERLAP":
+		return CronCollisionPolicy_RUN_OVERLAP, nil
+	}
+	return CronCollisionPolicy(0), fmt.Errorf("not a valid CronCollisionPolicy string")
+}
+
+func CronCollisionPolicyPtr(v CronCollisionPolicy) *CronCollisionPolicy { return &v }
+
+func (p CronCollisionPolicy) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *CronCollisionPolicy) UnmarshalText(text []byte) error {
+	q, err := CronCollisionPolicyFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+//States that a task may be in.
+type ScheduleStatus int64
+
+const (
+	ScheduleStatus_INIT       ScheduleStatus = 11
+	ScheduleStatus_THROTTLED  ScheduleStatus = 16
+	ScheduleStatus_PENDING    ScheduleStatus = 0
+	ScheduleStatus_ASSIGNED   ScheduleStatus = 9
+	ScheduleStatus_STARTING   ScheduleStatus = 1
+	ScheduleStatus_RUNNING    ScheduleStatus = 2
+	ScheduleStatus_FINISHED   ScheduleStatus = 3
+	ScheduleStatus_PREEMPTING ScheduleStatus = 13
+	ScheduleStatus_RESTARTING ScheduleStatus = 12
+	ScheduleStatus_DRAINING   ScheduleStatus = 17
+	ScheduleStatus_FAILED     ScheduleStatus = 4
+	ScheduleStatus_KILLED     ScheduleStatus = 5
+	ScheduleStatus_KILLING    ScheduleStatus = 6
+	ScheduleStatus_LOST       ScheduleStatus = 7
+)
+
+func (p ScheduleStatus) String() string {
+	switch p {
+	case ScheduleStatus_INIT:
+		return "INIT"
+	case ScheduleStatus_THROTTLED:
+		return "THROTTLED"
+	case ScheduleStatus_PENDING:
+		return "PENDING"
+	case ScheduleStatus_ASSIGNED:
+		return "ASSIGNED"
+	case ScheduleStatus_STARTING:
+		return "STARTING"
+	case ScheduleStatus_RUNNING:
+		return "RUNNING"
+	case ScheduleStatus_FINISHED:
+		return "FINISHED"
+	case ScheduleStatus_PREEMPTING:
+		return "PREEMPTING"
+	case ScheduleStatus_RESTARTING:
+		return "RESTARTING"
+	case ScheduleStatus_DRAINING:
+		return "DRAINING"
+	case ScheduleStatus_FAILED:
+		return "FAILED"
+	case ScheduleStatus_KILLED:
+		return "KILLED"
+	case ScheduleStatus_KILLING:
+		return "KILLING"
+	case ScheduleStatus_LOST:
+		return "LOST"
+	}
+	return "<UNSET>"
+}
+
+func ScheduleStatusFromString(s string) (ScheduleStatus, error) {
+	switch s {
+	case "INIT":
+		return ScheduleStatus_INIT, nil
+	case "THROTTLED":
+		return ScheduleStatus_THROTTLED, nil
+	case "PENDING":
+		return ScheduleStatus_PENDING, nil
+	case "ASSIGNED":
+		return ScheduleStatus_ASSIGNED, nil
+	case "STARTING":
+		return ScheduleStatus_STARTING, nil
+	case "RUNNING":
+		return ScheduleStatus_RUNNING, nil
+	case "FINISHED":
+		return ScheduleStatus_FINISHED, nil
+	case "PREEMPTING":
+		return ScheduleStatus_PREEMPTING, nil
+	case "RESTARTING":
+		return ScheduleStatus_RESTARTING, nil
+	case "DRAINING":
+		return ScheduleStatus_DRAINING, nil
+	case "FAILED":
+		return ScheduleStatus_FAILED, nil
+	case "KILLED":
+		return ScheduleStatus_KILLED, nil
+	case "KILLING":
+		return ScheduleStatus_KILLING, nil
+	case "LOST":
+		return ScheduleStatus_LOST, nil
+	}
+	return ScheduleStatus(0), fmt.Errorf("not a valid ScheduleStatus string")
+}
+
+func ScheduleStatusPtr(v ScheduleStatus) *ScheduleStatus { return &v }
+
+func (p ScheduleStatus) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *ScheduleStatus) UnmarshalText(text []byte) error {
+	q, err := ScheduleStatusFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+//States that a job update may be in.
+type JobUpdateStatus int64
+
+const (
+	JobUpdateStatus_ROLLING_FORWARD             JobUpdateStatus = 0
+	JobUpdateStatus_ROLLING_BACK                JobUpdateStatus = 1
+	JobUpdateStatus_ROLL_FORWARD_PAUSED         JobUpdateStatus = 2
+	JobUpdateStatus_ROLL_BACK_PAUSED            JobUpdateStatus = 3
+	JobUpdateStatus_ROLLED_FORWARD              JobUpdateStatus = 4
+	JobUpdateStatus_ROLLED_BACK                 JobUpdateStatus = 5
+	JobUpdateStatus_ABORTED                     JobUpdateStatus = 6
+	JobUpdateStatus_ERROR                       JobUpdateStatus = 7
+	JobUpdateStatus_FAILED                      JobUpdateStatus = 8
+	JobUpdateStatus_ROLL_FORWARD_AWAITING_PULSE JobUpdateStatus = 9
+	JobUpdateStatus_ROLL_BACK_AWAITING_PULSE    JobUpdateStatus = 10
+)
+
+func (p JobUpdateStatus) String() string {
+	switch p {
+	case JobUpdateStatus_ROLLING_FORWARD:
+		return "ROLLING_FORWARD"
+	case JobUpdateStatus_ROLLING_BACK:
+		return "ROLLING_BACK"
+	case JobUpdateStatus_ROLL_FORWARD_PAUSED:
+		return "ROLL_FORWARD_PAUSED"
+	case JobUpdateStatus_ROLL_BACK_PAUSED:
+		return "ROLL_BACK_PAUSED"
+	case JobUpdateStatus_ROLLED_FORWARD:
+		return "ROLLED_FORWARD"
+	case JobUpdateStatus_ROLLED_BACK:
+		return "ROLLED_BACK"
+	case JobUpdateStatus_ABORTED:
+		return "ABORTED"
+	case JobUpdateStatus_ERROR:
+		return "ERROR"
+	case JobUpdateStatus_FAILED:
+		return "FAILED"
+	case JobUpdateStatus_ROLL_FORWARD_AWAITING_PULSE:
+		return "ROLL_FORWARD_AWAITING_PULSE"
+	case JobUpdateStatus_ROLL_BACK_AWAITING_PULSE:
+		return "ROLL_BACK_AWAITING_PULSE"
+	}
+	return "<UNSET>"
+}
+
+func JobUpdateStatusFromString(s string) (JobUpdateStatus, error) {
+	switch s {
+	case "ROLLING_FORWARD":
+		return JobUpdateStatus_ROLLING_FORWARD, nil
+	case "ROLLING_BACK":
+		return JobUpdateStatus_ROLLING_BACK, nil
+	case "ROLL_FORWARD_PAUSED":
+		return JobUpdateStatus_ROLL_FORWARD_PAUSED, nil
+	case "ROLL_BACK_PAUSED":
+		return JobUpdateStatus_ROLL_BACK_PAUSED, nil
+	case "ROLLED_FORWARD":
+		return JobUpdateStatus_ROLLED_FORWARD, nil
+	case "ROLLED_BACK":
+		return JobUpdateStatus_ROLLED_BACK, nil
+	case "ABORTED":
+		return JobUpdateStatus_ABORTED, nil
+	case "ERROR":
+		return JobUpdateStatus_ERROR, nil
+	case "FAILED":
+		return JobUpdateStatus_FAILED, nil
+	case "ROLL_FORWARD_AWAITING_PULSE":
+		return JobUpdateStatus_ROLL_FORWARD_AWAITING_PULSE, nil
+	case "ROLL_BACK_AWAITING_PULSE":
+		return JobUpdateStatus_ROLL_BACK_AWAITING_PULSE, nil
+	}
+	return JobUpdateStatus(0), fmt.Errorf("not a valid JobUpdateStatus string")
+}
+
+func JobUpdateStatusPtr(v JobUpdateStatus) *JobUpdateStatus { return &v }
+
+func (p JobUpdateStatus) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *JobUpdateStatus) UnmarshalText(text []byte) error {
+	q, err := JobUpdateStatusFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+//Job update actions that can be applied to job instances.
+type JobUpdateAction int64
+
+const (
+	JobUpdateAction_INSTANCE_UPDATED         JobUpdateAction = 1
+	JobUpdateAction_INSTANCE_ROLLED_BACK     JobUpdateAction = 2
+	JobUpdateAction_INSTANCE_UPDATING        JobUpdateAction = 3
+	JobUpdateAction_INSTANCE_ROLLING_BACK    JobUpdateAction = 4
+	JobUpdateAction_INSTANCE_UPDATE_FAILED   JobUpdateAction = 5
+	JobUpdateAction_INSTANCE_ROLLBACK_FAILED JobUpdateAction = 6
+)
+
+func (p JobUpdateAction) String() string {
+	switch p {
+	case JobUpdateAction_INSTANCE_UPDATED:
+		return "INSTANCE_UPDATED"
+	case JobUpdateAction_INSTANCE_ROLLED_BACK:
+		return "INSTANCE_ROLLED_BACK"
+	case JobUpdateAction_INSTANCE_UPDATING:
+		return "INSTANCE_UPDATING"
+	case JobUpdateAction_INSTANCE_ROLLING_BACK:
+		return "INSTANCE_ROLLING_BACK"
+	case JobUpdateAction_INSTANCE_UPDATE_FAILED:
+		return "INSTANCE_UPDATE_FAILED"
+	case JobUpdateAction_INSTANCE_ROLLBACK_FAILED:
+		return "INSTANCE_ROLLBACK_FAILED"
+	}
+	return "<UNSET>"
+}
+
+func JobUpdateActionFromString(s string) (JobUpdateAction, error) {
+	switch s {
+	case "INSTANCE_UPDATED":
+		return JobUpdateAction_INSTANCE_UPDATED, nil
+	case "INSTANCE_ROLLED_BACK":
+		return JobUpdateAction_INSTANCE_ROLLED_BACK, nil
+	case "INSTANCE_UPDATING":
+		return JobUpdateAction_INSTANCE_UPDATING, nil
+	case "INSTANCE_ROLLING_BACK":
+		return JobUpdateAction_INSTANCE_ROLLING_BACK, nil
+	case "INSTANCE_UPDATE_FAILED":
+		return JobUpdateAction_INSTANCE_UPDATE_FAILED, nil
+	case "INSTANCE_ROLLBACK_FAILED":
+		return JobUpdateAction_INSTANCE_ROLLBACK_FAILED, nil
+	}
+	return JobUpdateAction(0), fmt.Errorf("not a valid JobUpdateAction string")
+}
+
+func JobUpdateActionPtr(v JobUpdateAction) *JobUpdateAction { return &v }
+
+func (p JobUpdateAction) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *JobUpdateAction) UnmarshalText(text []byte) error {
+	q, err := JobUpdateActionFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+//Status of the coordinated update. Intended as a response to pulseJobUpdate RPC.
+type JobUpdatePulseStatus int64
+
+const (
+	JobUpdatePulseStatus_OK       JobUpdatePulseStatus = 1
+	JobUpdatePulseStatus_FINISHED JobUpdatePulseStatus = 2
+)
+
+func (p JobUpdatePulseStatus) String() string {
+	switch p {
+	case JobUpdatePulseStatus_OK:
+		return "OK"
+	case JobUpdatePulseStatus_FINISHED:
+		return "FINISHED"
+	}
+	return "<UNSET>"
+}
+
+func JobUpdatePulseStatusFromString(s string) (JobUpdatePulseStatus, error) {
+	switch s {
+	case "OK":
+		return JobUpdatePulseStatus_OK, nil
+	case "FINISHED":
+		return JobUpdatePulseStatus_FINISHED, nil
+	}
+	return JobUpdatePulseStatus(0), fmt.Errorf("not a valid JobUpdatePulseStatus string")
+}
+
+func JobUpdatePulseStatusPtr(v JobUpdatePulseStatus) *JobUpdatePulseStatus { return &v }
+
+func (p JobUpdatePulseStatus) MarshalText() ([]byte, error) {
+	return []byte(p.String()), nil
+}
+
+func (p *JobUpdatePulseStatus) UnmarshalText(text []byte) error {
+	q, err := JobUpdatePulseStatusFromString(string(text))
+	if err != nil {
+		return err
+	}
+	*p = q
+	return nil
+}
+
+// Attributes:
+//  - User
+type Identity struct {
+	// unused field # 1
+	User string `thrift:"user,2" json:"user"`
+}
+
+func NewIdentity() *Identity {
+	return &Identity{}
+}
+
+func (p *Identity) GetUser() string {
+	return p.User
+}
+func (p *Identity) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Identity) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.User = v
+	}
+	return nil
+}
+
+func (p *Identity) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Identity"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Identity) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("user", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:user: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.User)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.user (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:user: ", p), err)
+	}
+	return err
+}
+
+func (p *Identity) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Identity(%+v)", *p)
+}
+
+// A single host attribute.
+//
+// Attributes:
+//  - Name
+//  - Values
+type Attribute struct {
+	Name   string          `thrift:"name,1" json:"name"`
+	Values map[string]bool `thrift:"values,2" json:"values"`
+}
+
+func NewAttribute() *Attribute {
+	return &Attribute{}
+}
+
+func (p *Attribute) GetName() string {
+	return p.Name
+}
+
+func (p *Attribute) GetValues() map[string]bool {
+	return p.Values
+}
+func (p *Attribute) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Attribute) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *Attribute) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.Values = tSet
+	for i := 0; i < size; i++ {
+		var _elem0 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem0 = v
+		}
+		p.Values[_elem0] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *Attribute) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Attribute"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Attribute) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *Attribute) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("values", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:values: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.Values)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Values {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:values: ", p), err)
+	}
+	return err
+}
+
+func (p *Attribute) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Attribute(%+v)", *p)
+}
+
+// The attributes assigned to a host.
+//
+// Attributes:
+//  - Host
+//  - Attributes
+//  - Mode
+//  - SlaveId
+type HostAttributes struct {
+	Host       string              `thrift:"host,1" json:"host"`
+	Attributes map[*Attribute]bool `thrift:"attributes,2" json:"attributes"`
+	Mode       *MaintenanceMode    `thrift:"mode,3" json:"mode,omitempty"`
+	SlaveId    *string             `thrift:"slaveId,4" json:"slaveId,omitempty"`
+}
+
+func NewHostAttributes() *HostAttributes {
+	return &HostAttributes{}
+}
+
+func (p *HostAttributes) GetHost() string {
+	return p.Host
+}
+
+func (p *HostAttributes) GetAttributes() map[*Attribute]bool {
+	return p.Attributes
+}
+
+var HostAttributes_Mode_DEFAULT MaintenanceMode
+
+func (p *HostAttributes) GetMode() MaintenanceMode {
+	if !p.IsSetMode() {
+		return HostAttributes_Mode_DEFAULT
+	}
+	return *p.Mode
+}
+
+var HostAttributes_SlaveId_DEFAULT string
+
+func (p *HostAttributes) GetSlaveId() string {
+	if !p.IsSetSlaveId() {
+		return HostAttributes_SlaveId_DEFAULT
+	}
+	return *p.SlaveId
+}
+func (p *HostAttributes) IsSetMode() bool {
+	return p.Mode != nil
+}
+
+func (p *HostAttributes) IsSetSlaveId() bool {
+	return p.SlaveId != nil
+}
+
+func (p *HostAttributes) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *HostAttributes) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Host = v
+	}
+	return nil
+}
+
+func (p *HostAttributes) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Attribute]bool, size)
+	p.Attributes = tSet
+	for i := 0; i < size; i++ {
+		_elem1 := &Attribute{}
+		if err := _elem1.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem1), err)
+		}
+		p.Attributes[_elem1] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *HostAttributes) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		temp := MaintenanceMode(v)
+		p.Mode = &temp
+	}
+	return nil
+}
+
+func (p *HostAttributes) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.SlaveId = &v
+	}
+	return nil
+}
+
+func (p *HostAttributes) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("HostAttributes"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *HostAttributes) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("host", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:host: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Host)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.host (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:host: ", p), err)
+	}
+	return err
+}
+
+func (p *HostAttributes) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("attributes", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:attributes: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Attributes)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Attributes {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:attributes: ", p), err)
+	}
+	return err
+}
+
+func (p *HostAttributes) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMode() {
+		if err := oprot.WriteFieldBegin("mode", thrift.I32, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:mode: ", p), err)
+		}
+		if err := oprot.WriteI32(int32(*p.Mode)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.mode (3) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:mode: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *HostAttributes) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetSlaveId() {
+		if err := oprot.WriteFieldBegin("slaveId", thrift.STRING, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:slaveId: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.SlaveId)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.slaveId (4) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:slaveId: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *HostAttributes) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("HostAttributes(%+v)", *p)
+}
+
+// A constraint that specifies an explicit set of values, at least one of which must be present
+// on a host for a task to be scheduled there.
+//
+// Attributes:
+//  - Negated: If true, treat this as a 'not' - to avoid specific values.
+//  - Values
+type ValueConstraint struct {
+	Negated bool            `thrift:"negated,1" json:"negated"`
+	Values  map[string]bool `thrift:"values,2" json:"values"`
+}
+
+func NewValueConstraint() *ValueConstraint {
+	return &ValueConstraint{}
+}
+
+func (p *ValueConstraint) GetNegated() bool {
+	return p.Negated
+}
+
+func (p *ValueConstraint) GetValues() map[string]bool {
+	return p.Values
+}
+func (p *ValueConstraint) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ValueConstraint) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Negated = v
+	}
+	return nil
+}
+
+func (p *ValueConstraint) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.Values = tSet
+	for i := 0; i < size; i++ {
+		var _elem2 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem2 = v
+		}
+		p.Values[_elem2] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *ValueConstraint) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ValueConstraint"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ValueConstraint) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("negated", thrift.BOOL, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:negated: ", p), err)
+	}
+	if err := oprot.WriteBool(bool(p.Negated)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.negated (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:negated: ", p), err)
+	}
+	return err
+}
+
+func (p *ValueConstraint) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("values", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:values: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.Values)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Values {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:values: ", p), err)
+	}
+	return err
+}
+
+func (p *ValueConstraint) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ValueConstraint(%+v)", *p)
+}
+
+// A constraint the specifies the maximum number of active tasks on a host with a matching
+// attribute that may be scheduled simultaneously.
+//
+// Attributes:
+//  - Limit
+type LimitConstraint struct {
+	Limit int32 `thrift:"limit,1" json:"limit"`
+}
+
+func NewLimitConstraint() *LimitConstraint {
+	return &LimitConstraint{}
+}
+
+func (p *LimitConstraint) GetLimit() int32 {
+	return p.Limit
+}
+func (p *LimitConstraint) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *LimitConstraint) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Limit = v
+	}
+	return nil
+}
+
+func (p *LimitConstraint) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("LimitConstraint"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *LimitConstraint) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("limit", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:limit: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Limit)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.limit (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:limit: ", p), err)
+	}
+	return err
+}
+
+func (p *LimitConstraint) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("LimitConstraint(%+v)", *p)
+}
+
+// Types of constraints that may be applied to a task.
+//
+// Attributes:
+//  - Value
+//  - Limit
+type TaskConstraint struct {
+	Value *ValueConstraint `thrift:"value,1" json:"value,omitempty"`
+	Limit *LimitConstraint `thrift:"limit,2" json:"limit,omitempty"`
+}
+
+func NewTaskConstraint() *TaskConstraint {
+	return &TaskConstraint{}
+}
+
+var TaskConstraint_Value_DEFAULT *ValueConstraint
+
+func (p *TaskConstraint) GetValue() *ValueConstraint {
+	if !p.IsSetValue() {
+		return TaskConstraint_Value_DEFAULT
+	}
+	return p.Value
+}
+
+var TaskConstraint_Limit_DEFAULT *LimitConstraint
+
+func (p *TaskConstraint) GetLimit() *LimitConstraint {
+	if !p.IsSetLimit() {
+		return TaskConstraint_Limit_DEFAULT
+	}
+	return p.Limit
+}
+func (p *TaskConstraint) CountSetFieldsTaskConstraint() int {
+	count := 0
+	if p.IsSetValue() {
+		count++
+	}
+	if p.IsSetLimit() {
+		count++
+	}
+	return count
+
+}
+
+func (p *TaskConstraint) IsSetValue() bool {
+	return p.Value != nil
+}
+
+func (p *TaskConstraint) IsSetLimit() bool {
+	return p.Limit != nil
+}
+
+func (p *TaskConstraint) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *TaskConstraint) readField1(iprot thrift.TProtocol) error {
+	p.Value = &ValueConstraint{}
+	if err := p.Value.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Value), err)
+	}
+	return nil
+}
+
+func (p *TaskConstraint) readField2(iprot thrift.TProtocol) error {
+	p.Limit = &LimitConstraint{}
+	if err := p.Limit.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Limit), err)
+	}
+	return nil
+}
+
+func (p *TaskConstraint) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsTaskConstraint(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("TaskConstraint"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConstraint) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetValue() {
+		if err := oprot.WriteFieldBegin("value", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:value: ", p), err)
+		}
+		if err := p.Value.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Value), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:value: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConstraint) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetLimit() {
+		if err := oprot.WriteFieldBegin("limit", thrift.STRUCT, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:limit: ", p), err)
+		}
+		if err := p.Limit.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Limit), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:limit: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConstraint) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("TaskConstraint(%+v)", *p)
+}
+
+// A constraint that defines whether a task may be scheduled on a host.
+//
+// Attributes:
+//  - Name: Mesos slave attribute that the constraint is matched against.
+//  - Constraint
+type Constraint struct {
+	Name       string          `thrift:"name,1" json:"name"`
+	Constraint *TaskConstraint `thrift:"constraint,2" json:"constraint"`
+}
+
+func NewConstraint() *Constraint {
+	return &Constraint{}
+}
+
+func (p *Constraint) GetName() string {
+	return p.Name
+}
+
+var Constraint_Constraint_DEFAULT *TaskConstraint
+
+func (p *Constraint) GetConstraint() *TaskConstraint {
+	if !p.IsSetConstraint() {
+		return Constraint_Constraint_DEFAULT
+	}
+	return p.Constraint
+}
+func (p *Constraint) IsSetConstraint() bool {
+	return p.Constraint != nil
+}
+
+func (p *Constraint) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Constraint) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *Constraint) readField2(iprot thrift.TProtocol) error {
+	p.Constraint = &TaskConstraint{}
+	if err := p.Constraint.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Constraint), err)
+	}
+	return nil
+}
+
+func (p *Constraint) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Constraint"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Constraint) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *Constraint) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("constraint", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:constraint: ", p), err)
+	}
+	if err := p.Constraint.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Constraint), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:constraint: ", p), err)
+	}
+	return err
+}
+
+func (p *Constraint) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Constraint(%+v)", *p)
+}
+
+// Attributes:
+//  - Role
+//  - Name
+//  - Version
+type Package struct {
+	Role    string `thrift:"role,1" json:"role"`
+	Name    string `thrift:"name,2" json:"name"`
+	Version int32  `thrift:"version,3" json:"version"`
+}
+
+func NewPackage() *Package {
+	return &Package{}
+}
+
+func (p *Package) GetRole() string {
+	return p.Role
+}
+
+func (p *Package) GetName() string {
+	return p.Name
+}
+
+func (p *Package) GetVersion() int32 {
+	return p.Version
+}
+func (p *Package) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Package) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Role = v
+	}
+	return nil
+}
+
+func (p *Package) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *Package) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Version = v
+	}
+	return nil
+}
+
+func (p *Package) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Package"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Package) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("role", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:role: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Role)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.role (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:role: ", p), err)
+	}
+	return err
+}
+
+func (p *Package) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:name: ", p), err)
+	}
+	return err
+}
+
+func (p *Package) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("version", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:version: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Version)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.version (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:version: ", p), err)
+	}
+	return err
+}
+
+func (p *Package) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Package(%+v)", *p)
+}
+
+// Arbitrary key-value metadata to be included into TaskConfig.
+//
+// Attributes:
+//  - Key
+//  - Value
+type Metadata struct {
+	Key   string `thrift:"key,1" json:"key"`
+	Value string `thrift:"value,2" json:"value"`
+}
+
+func NewMetadata() *Metadata {
+	return &Metadata{}
+}
+
+func (p *Metadata) GetKey() string {
+	return p.Key
+}
+
+func (p *Metadata) GetValue() string {
+	return p.Value
+}
+func (p *Metadata) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Metadata) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Key = v
+	}
+	return nil
+}
+
+func (p *Metadata) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Value = v
+	}
+	return nil
+}
+
+func (p *Metadata) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Metadata"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Metadata) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Key)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.key (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *Metadata) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("value", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Value)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", p), err)
+	}
+	return err
+}
+
+func (p *Metadata) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Metadata(%+v)", *p)
+}
+
+// A unique identifier for a Job.
+//
+// Attributes:
+//  - Role: User role (Unix service account), for example "mesos"
+//  - Environment: Environment, for example "devel"
+//  - Name: Name, for example "labrat"
+type JobKey struct {
+	Role        string `thrift:"role,1" json:"role"`
+	Environment string `thrift:"environment,2" json:"environment"`
+	Name        string `thrift:"name,3" json:"name"`
+}
+
+func NewJobKey() *JobKey {
+	return &JobKey{}
+}
+
+func (p *JobKey) GetRole() string {
+	return p.Role
+}
+
+func (p *JobKey) GetEnvironment() string {
+	return p.Environment
+}
+
+func (p *JobKey) GetName() string {
+	return p.Name
+}
+func (p *JobKey) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobKey) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Role = v
+	}
+	return nil
+}
+
+func (p *JobKey) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Environment = v
+	}
+	return nil
+}
+
+func (p *JobKey) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *JobKey) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobKey"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobKey) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("role", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:role: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Role)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.role (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:role: ", p), err)
+	}
+	return err
+}
+
+func (p *JobKey) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("environment", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:environment: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Environment)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.environment (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:environment: ", p), err)
+	}
+	return err
+}
+
+func (p *JobKey) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:name: ", p), err)
+	}
+	return err
+}
+
+func (p *JobKey) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobKey(%+v)", *p)
+}
+
+// A unique lock key.
+//
+// Attributes:
+//  - Job
+type LockKey struct {
+	Job *JobKey `thrift:"job,1" json:"job,omitempty"`
+}
+
+func NewLockKey() *LockKey {
+	return &LockKey{}
+}
+
+var LockKey_Job_DEFAULT *JobKey
+
+func (p *LockKey) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return LockKey_Job_DEFAULT
+	}
+	return p.Job
+}
+func (p *LockKey) CountSetFieldsLockKey() int {
+	count := 0
+	if p.IsSetJob() {
+		count++
+	}
+	return count
+
+}
+
+func (p *LockKey) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *LockKey) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *LockKey) readField1(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *LockKey) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsLockKey(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("LockKey"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *LockKey) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetJob() {
+		if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:job: ", p), err)
+		}
+		if err := p.Job.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:job: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *LockKey) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("LockKey(%+v)", *p)
+}
+
+// A generic lock struct to facilitate context specific resource/operation serialization.
+//
+// Attributes:
+//  - Key: ID of the lock - unique per storage
+//  - Token: UUID - facilitating soft lock authorization
+//  - User: Lock creator
+//  - TimestampMs: Lock creation timestamp in milliseconds
+//  - Message: Optional message to record with the lock
+type Lock struct {
+	Key         *LockKey `thrift:"key,1" json:"key"`
+	Token       string   `thrift:"token,2" json:"token"`
+	User        string   `thrift:"user,3" json:"user"`
+	TimestampMs int64    `thrift:"timestampMs,4" json:"timestampMs"`
+	Message     *string  `thrift:"message,5" json:"message,omitempty"`
+}
+
+func NewLock() *Lock {
+	return &Lock{}
+}
+
+var Lock_Key_DEFAULT *LockKey
+
+func (p *Lock) GetKey() *LockKey {
+	if !p.IsSetKey() {
+		return Lock_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *Lock) GetToken() string {
+	return p.Token
+}
+
+func (p *Lock) GetUser() string {
+	return p.User
+}
+
+func (p *Lock) GetTimestampMs() int64 {
+	return p.TimestampMs
+}
+
+var Lock_Message_DEFAULT string
+
+func (p *Lock) GetMessage() string {
+	if !p.IsSetMessage() {
+		return Lock_Message_DEFAULT
+	}
+	return *p.Message
+}
+func (p *Lock) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *Lock) IsSetMessage() bool {
+	return p.Message != nil
+}
+
+func (p *Lock) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Lock) readField1(iprot thrift.TProtocol) error {
+	p.Key = &LockKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *Lock) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Token = v
+	}
+	return nil
+}
+
+func (p *Lock) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.User = v
+	}
+	return nil
+}
+
+func (p *Lock) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.TimestampMs = v
+	}
+	return nil
+}
+
+func (p *Lock) readField5(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 5: ", err)
+	} else {
+		p.Message = &v
+	}
+	return nil
+}
+
+func (p *Lock) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Lock"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Lock) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *Lock) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("token", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:token: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Token)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.token (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:token: ", p), err)
+	}
+	return err
+}
+
+func (p *Lock) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("user", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:user: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.User)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.user (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:user: ", p), err)
+	}
+	return err
+}
+
+func (p *Lock) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("timestampMs", thrift.I64, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:timestampMs: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.TimestampMs)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.timestampMs (4) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:timestampMs: ", p), err)
+	}
+	return err
+}
+
+func (p *Lock) writeField5(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMessage() {
+		if err := oprot.WriteFieldBegin("message", thrift.STRING, 5); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:message: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.Message)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.message (5) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:message: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Lock) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Lock(%+v)", *p)
+}
+
+// A unique identifier for the active task within a job.
+//
+// Attributes:
+//  - JobKey: Key identifying the job.
+//  - InstanceId: Unique instance ID for the active task in a job.
+type InstanceKey struct {
+	JobKey     *JobKey `thrift:"jobKey,1" json:"jobKey"`
+	InstanceId int32   `thrift:"instanceId,2" json:"instanceId"`
+}
+
+func NewInstanceKey() *InstanceKey {
+	return &InstanceKey{}
+}
+
+var InstanceKey_JobKey_DEFAULT *JobKey
+
+func (p *InstanceKey) GetJobKey() *JobKey {
+	if !p.IsSetJobKey() {
+		return InstanceKey_JobKey_DEFAULT
+	}
+	return p.JobKey
+}
+
+func (p *InstanceKey) GetInstanceId() int32 {
+	return p.InstanceId
+}
+func (p *InstanceKey) IsSetJobKey() bool {
+	return p.JobKey != nil
+}
+
+func (p *InstanceKey) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *InstanceKey) readField1(iprot thrift.TProtocol) error {
+	p.JobKey = &JobKey{}
+	if err := p.JobKey.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.JobKey), err)
+	}
+	return nil
+}
+
+func (p *InstanceKey) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.InstanceId = v
+	}
+	return nil
+}
+
+func (p *InstanceKey) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("InstanceKey"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *InstanceKey) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("jobKey", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:jobKey: ", p), err)
+	}
+	if err := p.JobKey.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.JobKey), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:jobKey: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceKey) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceId", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:instanceId: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.InstanceId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.instanceId (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:instanceId: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceKey) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("InstanceKey(%+v)", *p)
+}
+
+// URI which mirrors CommandInfo.URI in the Mesos Protobuf
+//
+// Attributes:
+//  - Value: Where to get the resource from
+//  - Extract: Extract compressed archive after downloading
+//  - Cache: Cache value using Mesos Fetcher caching mechanism *
+type MesosFetcherURI struct {
+	Value   string `thrift:"value,1" json:"value"`
+	Extract *bool  `thrift:"extract,2" json:"extract,omitempty"`
+	Cache   *bool  `thrift:"cache,3" json:"cache,omitempty"`
+}
+
+func NewMesosFetcherURI() *MesosFetcherURI {
+	return &MesosFetcherURI{}
+}
+
+func (p *MesosFetcherURI) GetValue() string {
+	return p.Value
+}
+
+var MesosFetcherURI_Extract_DEFAULT bool
+
+func (p *MesosFetcherURI) GetExtract() bool {
+	if !p.IsSetExtract() {
+		return MesosFetcherURI_Extract_DEFAULT
+	}
+	return *p.Extract
+}
+
+var MesosFetcherURI_Cache_DEFAULT bool
+
+func (p *MesosFetcherURI) GetCache() bool {
+	if !p.IsSetCache() {
+		return MesosFetcherURI_Cache_DEFAULT
+	}
+	return *p.Cache
+}
+func (p *MesosFetcherURI) IsSetExtract() bool {
+	return p.Extract != nil
+}
+
+func (p *MesosFetcherURI) IsSetCache() bool {
+	return p.Cache != nil
+}
+
+func (p *MesosFetcherURI) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *MesosFetcherURI) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Value = v
+	}
+	return nil
+}
+
+func (p *MesosFetcherURI) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Extract = &v
+	}
+	return nil
+}
+
+func (p *MesosFetcherURI) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Cache = &v
+	}
+	return nil
+}
+
+func (p *MesosFetcherURI) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("MesosFetcherURI"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *MesosFetcherURI) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("value", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:value: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Value)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.value (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:value: ", p), err)
+	}
+	return err
+}
+
+func (p *MesosFetcherURI) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetExtract() {
+		if err := oprot.WriteFieldBegin("extract", thrift.BOOL, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:extract: ", p), err)
+		}
+		if err := oprot.WriteBool(bool(*p.Extract)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.extract (2) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:extract: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *MesosFetcherURI) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetCache() {
+		if err := oprot.WriteFieldBegin("cache", thrift.BOOL, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:cache: ", p), err)
+		}
+		if err := oprot.WriteBool(bool(*p.Cache)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.cache (3) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:cache: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *MesosFetcherURI) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("MesosFetcherURI(%+v)", *p)
+}
+
+// Attributes:
+//  - Name: Name identifying the Executor.
+//  - Data: Executor configuration data.
+type ExecutorConfig struct {
+	Name string `thrift:"name,1" json:"name"`
+	Data string `thrift:"data,2" json:"data"`
+}
+
+func NewExecutorConfig() *ExecutorConfig {
+	return &ExecutorConfig{}
+}
+
+func (p *ExecutorConfig) GetName() string {
+	return p.Name
+}
+
+func (p *ExecutorConfig) GetData() string {
+	return p.Data
+}
+func (p *ExecutorConfig) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ExecutorConfig) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *ExecutorConfig) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Data = v
+	}
+	return nil
+}
+
+func (p *ExecutorConfig) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ExecutorConfig"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ExecutorConfig) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *ExecutorConfig) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("data", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:data: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Data)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.data (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:data: ", p), err)
+	}
+	return err
+}
+
+func (p *ExecutorConfig) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ExecutorConfig(%+v)", *p)
+}
+
+// A volume mount point within a container
+//
+// Attributes:
+//  - ContainerPath: The path inside the container where the mount will be created.
+//  - HostPath: The path on the host that will serve as the source for the mount.
+//  - Mode: The access mode
+type Volume struct {
+	ContainerPath string `thrift:"containerPath,1" json:"containerPath"`
+	HostPath      string `thrift:"hostPath,2" json:"hostPath"`
+	Mode          Mode   `thrift:"mode,3" json:"mode"`
+}
+
+func NewVolume() *Volume {
+	return &Volume{}
+}
+
+func (p *Volume) GetContainerPath() string {
+	return p.ContainerPath
+}
+
+func (p *Volume) GetHostPath() string {
+	return p.HostPath
+}
+
+func (p *Volume) GetMode() Mode {
+	return p.Mode
+}
+func (p *Volume) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Volume) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.ContainerPath = v
+	}
+	return nil
+}
+
+func (p *Volume) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.HostPath = v
+	}
+	return nil
+}
+
+func (p *Volume) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		temp := Mode(v)
+		p.Mode = temp
+	}
+	return nil
+}
+
+func (p *Volume) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Volume"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Volume) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("containerPath", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:containerPath: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.ContainerPath)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.containerPath (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:containerPath: ", p), err)
+	}
+	return err
+}
+
+func (p *Volume) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("hostPath", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:hostPath: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.HostPath)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.hostPath (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:hostPath: ", p), err)
+	}
+	return err
+}
+
+func (p *Volume) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("mode", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:mode: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Mode)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.mode (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:mode: ", p), err)
+	}
+	return err
+}
+
+func (p *Volume) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Volume(%+v)", *p)
+}
+
+// Describes an image for use with the Mesos unified containerizer in the Docker format
+//
+// Attributes:
+//  - Name: The name of the image to run
+//  - Tag: The Docker tag identifying the image
+type DockerImage struct {
+	Name string `thrift:"name,1" json:"name"`
+	Tag  string `thrift:"tag,2" json:"tag"`
+}
+
+func NewDockerImage() *DockerImage {
+	return &DockerImage{}
+}
+
+func (p *DockerImage) GetName() string {
+	return p.Name
+}
+
+func (p *DockerImage) GetTag() string {
+	return p.Tag
+}
+func (p *DockerImage) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *DockerImage) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *DockerImage) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Tag = v
+	}
+	return nil
+}
+
+func (p *DockerImage) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("DockerImage"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *DockerImage) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *DockerImage) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("tag", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:tag: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Tag)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.tag (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:tag: ", p), err)
+	}
+	return err
+}
+
+func (p *DockerImage) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("DockerImage(%+v)", *p)
+}
+
+// Describes an image for use with the Mesos unified containerizer in the AppC format
+//
+// Attributes:
+//  - Name: The name of the image to run
+//  - ImageId: The appc image id identifying the image
+type AppcImage struct {
+	Name    string `thrift:"name,1" json:"name"`
+	ImageId string `thrift:"imageId,2" json:"imageId"`
+}
+
+func NewAppcImage() *AppcImage {
+	return &AppcImage{}
+}
+
+func (p *AppcImage) GetName() string {
+	return p.Name
+}
+
+func (p *AppcImage) GetImageId() string {
+	return p.ImageId
+}
+func (p *AppcImage) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AppcImage) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *AppcImage) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.ImageId = v
+	}
+	return nil
+}
+
+func (p *AppcImage) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("AppcImage"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AppcImage) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *AppcImage) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("imageId", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:imageId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.ImageId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.imageId (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:imageId: ", p), err)
+	}
+	return err
+}
+
+func (p *AppcImage) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AppcImage(%+v)", *p)
+}
+
+// Describes an image to be used with the Mesos unified containerizer
+//
+// Attributes:
+//  - Docker
+//  - Appc
+type Image struct {
+	Docker *DockerImage `thrift:"docker,1" json:"docker,omitempty"`
+	Appc   *AppcImage   `thrift:"appc,2" json:"appc,omitempty"`
+}
+
+func NewImage() *Image {
+	return &Image{}
+}
+
+var Image_Docker_DEFAULT *DockerImage
+
+func (p *Image) GetDocker() *DockerImage {
+	if !p.IsSetDocker() {
+		return Image_Docker_DEFAULT
+	}
+	return p.Docker
+}
+
+var Image_Appc_DEFAULT *AppcImage
+
+func (p *Image) GetAppc() *AppcImage {
+	if !p.IsSetAppc() {
+		return Image_Appc_DEFAULT
+	}
+	return p.Appc
+}
+func (p *Image) CountSetFieldsImage() int {
+	count := 0
+	if p.IsSetDocker() {
+		count++
+	}
+	if p.IsSetAppc() {
+		count++
+	}
+	return count
+
+}
+
+func (p *Image) IsSetDocker() bool {
+	return p.Docker != nil
+}
+
+func (p *Image) IsSetAppc() bool {
+	return p.Appc != nil
+}
+
+func (p *Image) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Image) readField1(iprot thrift.TProtocol) error {
+	p.Docker = &DockerImage{}
+	if err := p.Docker.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Docker), err)
+	}
+	return nil
+}
+
+func (p *Image) readField2(iprot thrift.TProtocol) error {
+	p.Appc = &AppcImage{}
+	if err := p.Appc.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Appc), err)
+	}
+	return nil
+}
+
+func (p *Image) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsImage(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("Image"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Image) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetDocker() {
+		if err := oprot.WriteFieldBegin("docker", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:docker: ", p), err)
+		}
+		if err := p.Docker.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Docker), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:docker: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Image) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetAppc() {
+		if err := oprot.WriteFieldBegin("appc", thrift.STRUCT, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:appc: ", p), err)
+		}
+		if err := p.Appc.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Appc), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:appc: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Image) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Image(%+v)", *p)
+}
+
+// Describes a mesos container, this is the default
+//
+// Attributes:
+//  - Image: the optional filesystem image to use when launching this task.
+type MesosContainer struct {
+	Image *Image `thrift:"image,1" json:"image,omitempty"`
+}
+
+func NewMesosContainer() *MesosContainer {
+	return &MesosContainer{}
+}
+
+var MesosContainer_Image_DEFAULT *Image
+
+func (p *MesosContainer) GetImage() *Image {
+	if !p.IsSetImage() {
+		return MesosContainer_Image_DEFAULT
+	}
+	return p.Image
+}
+func (p *MesosContainer) IsSetImage() bool {
+	return p.Image != nil
+}
+
+func (p *MesosContainer) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *MesosContainer) readField1(iprot thrift.TProtocol) error {
+	p.Image = &Image{}
+	if err := p.Image.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Image), err)
+	}
+	return nil
+}
+
+func (p *MesosContainer) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("MesosContainer"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *MesosContainer) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetImage() {
+		if err := oprot.WriteFieldBegin("image", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:image: ", p), err)
+		}
+		if err := p.Image.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Image), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:image: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *MesosContainer) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("MesosContainer(%+v)", *p)
+}
+
+// Describes a parameter passed to docker cli
+//
+// Attributes:
+//  - Name: a parameter to pass to docker. (e.g. volume)
+//  - Value: the value to pass to a parameter (e.g. /src/webapp:/opt/webapp)
+type DockerParameter struct {
+	Name  string `thrift:"name,1" json:"name"`
+	Value string `thrift:"value,2" json:"value"`
+}
+
+func NewDockerParameter() *DockerParameter {
+	return &DockerParameter{}
+}
+
+func (p *DockerParameter) GetName() string {
+	return p.Name
+}
+
+func (p *DockerParameter) GetValue() string {
+	return p.Value
+}
+func (p *DockerParameter) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *DockerParameter) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *DockerParameter) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Value = v
+	}
+	return nil
+}
+
+func (p *DockerParameter) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("DockerParameter"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *DockerParameter) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *DockerParameter) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("value", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Value)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", p), err)
+	}
+	return err
+}
+
+func (p *DockerParameter) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("DockerParameter(%+v)", *p)
+}
+
+// Describes a docker container
+//
+// Attributes:
+//  - Image: The container image to be run
+//  - Parameters: The arbitrary parameters to pass to container
+type DockerContainer struct {
+	Image      string             `thrift:"image,1" json:"image"`
+	Parameters []*DockerParameter `thrift:"parameters,2" json:"parameters,omitempty"`
+}
+
+func NewDockerContainer() *DockerContainer {
+	return &DockerContainer{}
+}
+
+func (p *DockerContainer) GetImage() string {
+	return p.Image
+}
+
+var DockerContainer_Parameters_DEFAULT []*DockerParameter
+
+func (p *DockerContainer) GetParameters() []*DockerParameter {
+	return p.Parameters
+}
+func (p *DockerContainer) IsSetParameters() bool {
+	return p.Parameters != nil
+}
+
+func (p *DockerContainer) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *DockerContainer) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Image = v
+	}
+	return nil
+}
+
+func (p *DockerContainer) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*DockerParameter, 0, size)
+	p.Parameters = tSlice
+	for i := 0; i < size; i++ {
+		_elem3 := &DockerParameter{}
+		if err := _elem3.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem3), err)
+		}
+		p.Parameters = append(p.Parameters, _elem3)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *DockerContainer) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("DockerContainer"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *DockerContainer) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("image", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:image: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Image)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.image (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:image: ", p), err)
+	}
+	return err
+}
+
+func (p *DockerContainer) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetParameters() {
+		if err := oprot.WriteFieldBegin("parameters", thrift.LIST, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:parameters: ", p), err)
+		}
+		if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Parameters)); err != nil {
+			return thrift.PrependError("error writing list begin: ", err)
+		}
+		for _, v := range p.Parameters {
+			if err := v.Write(oprot); err != nil {
+				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+			}
+		}
+		if err := oprot.WriteListEnd(); err != nil {
+			return thrift.PrependError("error writing list end: ", err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:parameters: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *DockerContainer) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("DockerContainer(%+v)", *p)
+}
+
+// Describes a container to be used in a task
+//
+// Attributes:
+//  - Mesos
+//  - Docker
+type Container struct {
+	Mesos  *MesosContainer  `thrift:"mesos,1" json:"mesos,omitempty"`
+	Docker *DockerContainer `thrift:"docker,2" json:"docker,omitempty"`
+}
+
+func NewContainer() *Container {
+	return &Container{}
+}
+
+var Container_Mesos_DEFAULT *MesosContainer
+
+func (p *Container) GetMesos() *MesosContainer {
+	if !p.IsSetMesos() {
+		return Container_Mesos_DEFAULT
+	}
+	return p.Mesos
+}
+
+var Container_Docker_DEFAULT *DockerContainer
+
+func (p *Container) GetDocker() *DockerContainer {
+	if !p.IsSetDocker() {
+		return Container_Docker_DEFAULT
+	}
+	return p.Docker
+}
+func (p *Container) CountSetFieldsContainer() int {
+	count := 0
+	if p.IsSetMesos() {
+		count++
+	}
+	if p.IsSetDocker() {
+		count++
+	}
+	return count
+
+}
+
+func (p *Container) IsSetMesos() bool {
+	return p.Mesos != nil
+}
+
+func (p *Container) IsSetDocker() bool {
+	return p.Docker != nil
+}
+
+func (p *Container) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Container) readField1(iprot thrift.TProtocol) error {
+	p.Mesos = &MesosContainer{}
+	if err := p.Mesos.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Mesos), err)
+	}
+	return nil
+}
+
+func (p *Container) readField2(iprot thrift.TProtocol) error {
+	p.Docker = &DockerContainer{}
+	if err := p.Docker.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Docker), err)
+	}
+	return nil
+}
+
+func (p *Container) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsContainer(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("Container"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Container) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMesos() {
+		if err := oprot.WriteFieldBegin("mesos", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:mesos: ", p), err)
+		}
+		if err := p.Mesos.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Mesos), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:mesos: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Container) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetDocker() {
+		if err := oprot.WriteFieldBegin("docker", thrift.STRUCT, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:docker: ", p), err)
+		}
+		if err := p.Docker.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Docker), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:docker: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Container) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Container(%+v)", *p)
+}
+
+// Describes resource value required to run a task.
+//
+// Attributes:
+//  - NumCpus
+//  - RamMb
+//  - DiskMb
+//  - NamedPort
+//  - NumGpus
+type Resource struct {
+	NumCpus   *float64 `thrift:"numCpus,1" json:"numCpus,omitempty"`
+	RamMb     *int64   `thrift:"ramMb,2" json:"ramMb,omitempty"`
+	DiskMb    *int64   `thrift:"diskMb,3" json:"diskMb,omitempty"`
+	NamedPort *string  `thrift:"namedPort,4" json:"namedPort,omitempty"`
+	NumGpus   *int64   `thrift:"numGpus,5" json:"numGpus,omitempty"`
+}
+
+func NewResource() *Resource {
+	return &Resource{}
+}
+
+var Resource_NumCpus_DEFAULT float64
+
+func (p *Resource) GetNumCpus() float64 {
+	if !p.IsSetNumCpus() {
+		return Resource_NumCpus_DEFAULT
+	}
+	return *p.NumCpus
+}
+
+var Resource_RamMb_DEFAULT int64
+
+func (p *Resource) GetRamMb() int64 {
+	if !p.IsSetRamMb() {
+		return Resource_RamMb_DEFAULT
+	}
+	return *p.RamMb
+}
+
+var Resource_DiskMb_DEFAULT int64
+
+func (p *Resource) GetDiskMb() int64 {
+	if !p.IsSetDiskMb() {
+		return Resource_DiskMb_DEFAULT
+	}
+	return *p.DiskMb
+}
+
+var Resource_NamedPort_DEFAULT string
+
+func (p *Resource) GetNamedPort() string {
+	if !p.IsSetNamedPort() {
+		return Resource_NamedPort_DEFAULT
+	}
+	return *p.NamedPort
+}
+
+var Resource_NumGpus_DEFAULT int64
+
+func (p *Resource) GetNumGpus() int64 {
+	if !p.IsSetNumGpus() {
+		return Resource_NumGpus_DEFAULT
+	}
+	return *p.NumGpus
+}
+func (p *Resource) CountSetFieldsResource() int {
+	count := 0
+	if p.IsSetNumCpus() {
+		count++
+	}
+	if p.IsSetRamMb() {
+		count++
+	}
+	if p.IsSetDiskMb() {
+		count++
+	}
+	if p.IsSetNamedPort() {
+		count++
+	}
+	if p.IsSetNumGpus() {
+		count++
+	}
+	return count
+
+}
+
+func (p *Resource) IsSetNumCpus() bool {
+	return p.NumCpus != nil
+}
+
+func (p *Resource) IsSetRamMb() bool {
+	return p.RamMb != nil
+}
+
+func (p *Resource) IsSetDiskMb() bool {
+	return p.DiskMb != nil
+}
+
+func (p *Resource) IsSetNamedPort() bool {
+	return p.NamedPort != nil
+}
+
+func (p *Resource) IsSetNumGpus() bool {
+	return p.NumGpus != nil
+}
+
+func (p *Resource) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Resource) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadDouble(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.NumCpus = &v
+	}
+	return nil
+}
+
+func (p *Resource) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.RamMb = &v
+	}
+	return nil
+}
+
+func (p *Resource) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.DiskMb = &v
+	}
+	return nil
+}
+
+func (p *Resource) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.NamedPort = &v
+	}
+	return nil
+}
+
+func (p *Resource) readField5(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 5: ", err)
+	} else {
+		p.NumGpus = &v
+	}
+	return nil
+}
+
+func (p *Resource) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsResource(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("Resource"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Resource) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetNumCpus() {
+		if err := oprot.WriteFieldBegin("numCpus", thrift.DOUBLE, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:numCpus: ", p), err)
+		}
+		if err := oprot.WriteDouble(float64(*p.NumCpus)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.numCpus (1) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:numCpus: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Resource) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetRamMb() {
+		if err := oprot.WriteFieldBegin("ramMb", thrift.I64, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:ramMb: ", p), err)
+		}
+		if err := oprot.WriteI64(int64(*p.RamMb)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.ramMb (2) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:ramMb: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Resource) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetDiskMb() {
+		if err := oprot.WriteFieldBegin("diskMb", thrift.I64, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:diskMb: ", p), err)
+		}
+		if err := oprot.WriteI64(int64(*p.DiskMb)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.diskMb (3) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:diskMb: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Resource) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetNamedPort() {
+		if err := oprot.WriteFieldBegin("namedPort", thrift.STRING, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:namedPort: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.NamedPort)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.namedPort (4) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:namedPort: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Resource) writeField5(oprot thrift.TProtocol) (err error) {
+	if p.IsSetNumGpus() {
+		if err := oprot.WriteFieldBegin("numGpus", thrift.I64, 5); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:numGpus: ", p), err)
+		}
+		if err := oprot.WriteI64(int64(*p.NumGpus)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.numGpus (5) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:numGpus: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Resource) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Resource(%+v)", *p)
+}
+
+// Description of the tasks contained within a job.
+//
+// Attributes:
+//  - Job: Job task belongs to.
+//  - Owner: contains the role component of JobKey
+//  - IsService
+//  - NumCpus
+//  - RamMb
+//  - DiskMb
+//  - Priority
+//  - MaxTaskFailures
+//  - Production: Whether this is a production task, which can preempt.
+//  - Tier: Task tier type.
+//  - Resources: All resources required to run a task.
+//  - Constraints
+//  - RequestedPorts: a list of named ports this task requests
+//  - MesosFetcherUris: Resources to retrieve with Mesos Fetcher
+//  - TaskLinks: Custom links to include when displaying this task on the scheduler dashboard. Keys are anchor
+// text, values are URLs. Wildcards are supported for dynamic link crafting based on host, ports,
+// instance, etc.
+//  - ContactEmail
+//  - ExecutorConfig: Executor configuration
+//  - Metadata: Used to display additional details in the UI.
+//  - Container: the container the task should use to execute
+type TaskConfig struct {
+	// unused fields # 1 to 6
+	IsService bool    `thrift:"isService,7" json:"isService"`
+	NumCpus   float64 `thrift:"numCpus,8" json:"numCpus"`
+	RamMb     int64   `thrift:"ramMb,9" json:"ramMb"`
+	DiskMb    int64   `thrift:"diskMb,10" json:"diskMb"`
+	Priority  int32   `thrift:"priority,11" json:"priority"`
+	// unused field # 12
+	MaxTaskFailures int32 `thrift:"maxTaskFailures,13" json:"maxTaskFailures"`
+	// unused fields # 14 to 16
+	Owner      *Identity `thrift:"owner,17" json:"owner"`
+	Production *bool     `thrift:"production,18" json:"production,omitempty"`
+	// unused field # 19
+	Constraints    map[*Constraint]bool `thrift:"constraints,20" json:"constraints"`
+	RequestedPorts map[string]bool      `thrift:"requestedPorts,21" json:"requestedPorts"`
+	TaskLinks      map[string]string    `thrift:"taskLinks,22" json:"taskLinks,omitempty"`
+	ContactEmail   *string              `thrift:"contactEmail,23" json:"contactEmail,omitempty"`
+	// unused field # 24
+	ExecutorConfig *ExecutorConfig `thrift:"executorConfig,25" json:"executorConfig,omitempty"`
+	// unused field # 26
+	Metadata  map[*Metadata]bool `thrift:"metadata,27" json:"metadata,omitempty"`
+	Job       *JobKey            `thrift:"job,28" json:"job"`
+	Container *Container         `thrift:"container,29" json:"container"`
+	Tier      *string            `thrift:"tier,30" json:"tier,omitempty"`
+	// unused field # 31
+	Resources        map[*Resource]bool        `thrift:"resources,32" json:"resources"`
+	MesosFetcherUris map[*MesosFetcherURI]bool `thrift:"mesosFetcherUris,33" json:"mesosFetcherUris,omitempty"`
+}
+
+func NewTaskConfig() *TaskConfig {
+	return &TaskConfig{}
+}
+
+var TaskConfig_Job_DEFAULT *JobKey
+
+func (p *TaskConfig) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return TaskConfig_Job_DEFAULT
+	}
+	return p.Job
+}
+
+var TaskConfig_Owner_DEFAULT *Identity
+
+func (p *TaskConfig) GetOwner() *Identity {
+	if !p.IsSetOwner() {
+		return TaskConfig_Owner_DEFAULT
+	}
+	return p.Owner
+}
+
+func (p *TaskConfig) GetIsService() bool {
+	return p.IsService
+}
+
+func (p *TaskConfig) GetNumCpus() float64 {
+	return p.NumCpus
+}
+
+func (p *TaskConfig) GetRamMb() int64 {
+	return p.RamMb
+}
+
+func (p *TaskConfig) GetDiskMb() int64 {
+	return p.DiskMb
+}
+
+func (p *TaskConfig) GetPriority() int32 {
+	return p.Priority
+}
+
+func (p *TaskConfig) GetMaxTaskFailures() int32 {
+	return p.MaxTaskFailures
+}
+
+var TaskConfig_Production_DEFAULT bool
+
+func (p *TaskConfig) GetProduction() bool {
+	if !p.IsSetProduction() {
+		return TaskConfig_Production_DEFAULT
+	}
+	return *p.Production
+}
+
+var TaskConfig_Tier_DEFAULT string
+
+func (p *TaskConfig) GetTier() string {
+	if !p.IsSetTier() {
+		return TaskConfig_Tier_DEFAULT
+	}
+	return *p.Tier
+}
+
+func (p *TaskConfig) GetResources() map[*Resource]bool {
+	return p.Resources
+}
+
+func (p *TaskConfig) GetConstraints() map[*Constraint]bool {
+	return p.Constraints
+}
+
+func (p *TaskConfig) GetRequestedPorts() map[string]bool {
+	return p.RequestedPorts
+}
+
+var TaskConfig_MesosFetcherUris_DEFAULT map[*MesosFetcherURI]bool
+
+func (p *TaskConfig) GetMesosFetcherUris() map[*MesosFetcherURI]bool {
+	return p.MesosFetcherUris
+}
+
+var TaskConfig_TaskLinks_DEFAULT map[string]string
+
+func (p *TaskConfig) GetTaskLinks() map[string]string {
+	return p.TaskLinks
+}
+
+var TaskConfig_ContactEmail_DEFAULT string
+
+func (p *TaskConfig) GetContactEmail() string {
+	if !p.IsSetContactEmail() {
+		return TaskConfig_ContactEmail_DEFAULT
+	}
+	return *p.ContactEmail
+}
+
+var TaskConfig_ExecutorConfig_DEFAULT *ExecutorConfig
+
+func (p *TaskConfig) GetExecutorConfig() *ExecutorConfig {
+	if !p.IsSetExecutorConfig() {
+		return TaskConfig_ExecutorConfig_DEFAULT
+	}
+	return p.ExecutorConfig
+}
+
+var TaskConfig_Metadata_DEFAULT map[*Metadata]bool
+
+func (p *TaskConfig) GetMetadata() map[*Metadata]bool {
+	return p.Metadata
+}
+
+var TaskConfig_Container_DEFAULT *Container = &Container{
+	Mesos: &MesosContainer{},
+}
+
+func (p *TaskConfig) GetContainer() *Container {
+	if !p.IsSetContainer() {
+		return TaskConfig_Container_DEFAULT
+	}
+	return p.Container
+}
+func (p *TaskConfig) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *TaskConfig) IsSetOwner() bool {
+	return p.Owner != nil
+}
+
+func (p *TaskConfig) IsSetProduction() bool {
+	return p.Production != nil
+}
+
+func (p *TaskConfig) IsSetTier() bool {
+	return p.Tier != nil
+}
+
+func (p *TaskConfig) IsSetMesosFetcherUris() bool {
+	return p.MesosFetcherUris != nil
+}
+
+func (p *TaskConfig) IsSetTaskLinks() bool {
+	return p.TaskLinks != nil
+}
+
+func (p *TaskConfig) IsSetContactEmail() bool {
+	return p.ContactEmail != nil
+}
+
+func (p *TaskConfig) IsSetExecutorConfig() bool {
+	return p.ExecutorConfig != nil
+}
+
+func (p *TaskConfig) IsSetMetadata() bool {
+	return p.Metadata != nil
+}
+
+func (p *TaskConfig) IsSetContainer() bool {
+	return p.Container != nil
+}
+
+func (p *TaskConfig) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 28:
+			if err := p.readField28(iprot); err != nil {
+				return err
+			}
+		case 17:
+			if err := p.readField17(iprot); err != nil {
+				return err
+			}
+		case 7:
+			if err := p.readField7(iprot); err != nil {
+				return err
+			}
+		case 8:
+			if err := p.readField8(iprot); err != nil {
+				return err
+			}
+		case 9:
+			if err := p.readField9(iprot); err != nil {
+				return err
+			}
+		case 10:
+			if err := p.readField10(iprot); err != nil {
+				return err
+			}
+		case 11:
+			if err := p.readField11(iprot); err != nil {
+				return err
+			}
+		case 13:
+			if err := p.readField13(iprot); err != nil {
+				return err
+			}
+		case 18:
+			if err := p.readField18(iprot); err != nil {
+				return err
+			}
+		case 30:
+			if err := p.readField30(iprot); err != nil {
+				return err
+			}
+		case 32:
+			if err := p.readField32(iprot); err != nil {
+				return err
+			}
+		case 20:
+			if err := p.readField20(iprot); err != nil {
+				return err
+			}
+		case 21:
+			if err := p.readField21(iprot); err != nil {
+				return err
+			}
+		case 33:
+			if err := p.readField33(iprot); err != nil {
+				return err
+			}
+		case 22:
+			if err := p.readField22(iprot); err != nil {
+				return err
+			}
+		case 23:
+			if err := p.readField23(iprot); err != nil {
+				return err
+			}
+		case 25:
+			if err := p.readField25(iprot); err != nil {
+				return err
+			}
+		case 27:
+			if err := p.readField27(iprot); err != nil {
+				return err
+			}
+		case 29:
+			if err := p.readField29(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField28(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField17(iprot thrift.TProtocol) error {
+	p.Owner = &Identity{}
+	if err := p.Owner.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Owner), err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField7(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 7: ", err)
+	} else {
+		p.IsService = v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField8(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadDouble(); err != nil {
+		return thrift.PrependError("error reading field 8: ", err)
+	} else {
+		p.NumCpus = v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField9(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 9: ", err)
+	} else {
+		p.RamMb = v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField10(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 10: ", err)
+	} else {
+		p.DiskMb = v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField11(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 11: ", err)
+	} else {
+		p.Priority = v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField13(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 13: ", err)
+	} else {
+		p.MaxTaskFailures = v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField18(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 18: ", err)
+	} else {
+		p.Production = &v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField30(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 30: ", err)
+	} else {
+		p.Tier = &v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField32(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Resource]bool, size)
+	p.Resources = tSet
+	for i := 0; i < size; i++ {
+		_elem4 := &Resource{}
+		if err := _elem4.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem4), err)
+		}
+		p.Resources[_elem4] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField20(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Constraint]bool, size)
+	p.Constraints = tSet
+	for i := 0; i < size; i++ {
+		_elem5 := &Constraint{}
+		if err := _elem5.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem5), err)
+		}
+		p.Constraints[_elem5] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField21(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.RequestedPorts = tSet
+	for i := 0; i < size; i++ {
+		var _elem6 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem6 = v
+		}
+		p.RequestedPorts[_elem6] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField33(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*MesosFetcherURI]bool, size)
+	p.MesosFetcherUris = tSet
+	for i := 0; i < size; i++ {
+		_elem7 := &MesosFetcherURI{}
+		if err := _elem7.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem7), err)
+		}
+		p.MesosFetcherUris[_elem7] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField22(iprot thrift.TProtocol) error {
+	_, _, size, err := iprot.ReadMapBegin()
+	if err != nil {
+		return thrift.PrependError("error reading map begin: ", err)
+	}
+	tMap := make(map[string]string, size)
+	p.TaskLinks = tMap
+	for i := 0; i < size; i++ {
+		var _key8 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_key8 = v
+		}
+		var _val9 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_val9 = v
+		}
+		p.TaskLinks[_key8] = _val9
+	}
+	if err := iprot.ReadMapEnd(); err != nil {
+		return thrift.PrependError("error reading map end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField23(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 23: ", err)
+	} else {
+		p.ContactEmail = &v
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField25(iprot thrift.TProtocol) error {
+	p.ExecutorConfig = &ExecutorConfig{}
+	if err := p.ExecutorConfig.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ExecutorConfig), err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField27(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Metadata]bool, size)
+	p.Metadata = tSet
+	for i := 0; i < size; i++ {
+		_elem10 := &Metadata{}
+		if err := _elem10.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem10), err)
+		}
+		p.Metadata[_elem10] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) readField29(iprot thrift.TProtocol) error {
+	p.Container = &Container{}
+	if err := p.Container.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Container), err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("TaskConfig"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField7(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField8(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField9(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField10(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField11(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField13(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField17(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField18(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField20(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField21(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField22(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField23(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField25(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField27(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField28(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField29(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField30(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField32(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField33(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *TaskConfig) writeField7(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("isService", thrift.BOOL, 7); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:isService: ", p), err)
+	}
+	if err := oprot.WriteBool(bool(p.IsService)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.isService (7) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 7:isService: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField8(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("numCpus", thrift.DOUBLE, 8); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:numCpus: ", p), err)
+	}
+	if err := oprot.WriteDouble(float64(p.NumCpus)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.numCpus (8) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 8:numCpus: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField9(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("ramMb", thrift.I64, 9); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:ramMb: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.RamMb)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.ramMb (9) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 9:ramMb: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField10(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("diskMb", thrift.I64, 10); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:diskMb: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.DiskMb)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.diskMb (10) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 10:diskMb: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField11(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("priority", thrift.I32, 11); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:priority: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Priority)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.priority (11) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 11:priority: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField13(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("maxTaskFailures", thrift.I32, 13); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 13:maxTaskFailures: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.MaxTaskFailures)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.maxTaskFailures (13) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 13:maxTaskFailures: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField17(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("owner", thrift.STRUCT, 17); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 17:owner: ", p), err)
+	}
+	if err := p.Owner.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Owner), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 17:owner: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField18(oprot thrift.TProtocol) (err error) {
+	if p.IsSetProduction() {
+		if err := oprot.WriteFieldBegin("production", thrift.BOOL, 18); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 18:production: ", p), err)
+		}
+		if err := oprot.WriteBool(bool(*p.Production)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.production (18) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 18:production: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField20(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("constraints", thrift.SET, 20); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 20:constraints: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Constraints)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Constraints {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 20:constraints: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField21(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("requestedPorts", thrift.SET, 21); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 21:requestedPorts: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.RequestedPorts)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.RequestedPorts {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 21:requestedPorts: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField22(oprot thrift.TProtocol) (err error) {
+	if p.IsSetTaskLinks() {
+		if err := oprot.WriteFieldBegin("taskLinks", thrift.MAP, 22); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 22:taskLinks: ", p), err)
+		}
+		if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.TaskLinks)); err != nil {
+			return thrift.PrependError("error writing map begin: ", err)
+		}
+		for k, v := range p.TaskLinks {
+			if err := oprot.WriteString(string(k)); err != nil {
+				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+			}
+			if err := oprot.WriteString(string(v)); err != nil {
+				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+			}
+		}
+		if err := oprot.WriteMapEnd(); err != nil {
+			return thrift.PrependError("error writing map end: ", err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 22:taskLinks: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField23(oprot thrift.TProtocol) (err error) {
+	if p.IsSetContactEmail() {
+		if err := oprot.WriteFieldBegin("contactEmail", thrift.STRING, 23); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 23:contactEmail: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.ContactEmail)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.contactEmail (23) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 23:contactEmail: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField25(oprot thrift.TProtocol) (err error) {
+	if p.IsSetExecutorConfig() {
+		if err := oprot.WriteFieldBegin("executorConfig", thrift.STRUCT, 25); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 25:executorConfig: ", p), err)
+		}
+		if err := p.ExecutorConfig.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ExecutorConfig), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 25:executorConfig: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField27(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMetadata() {
+		if err := oprot.WriteFieldBegin("metadata", thrift.SET, 27); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 27:metadata: ", p), err)
+		}
+		if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Metadata)); err != nil {
+			return thrift.PrependError("error writing set begin: ", err)
+		}
+		for v, _ := range p.Metadata {
+			if err := v.Write(oprot); err != nil {
+				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+			}
+		}
+		if err := oprot.WriteSetEnd(); err != nil {
+			return thrift.PrependError("error writing set end: ", err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 27:metadata: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField28(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 28); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 28:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 28:job: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField29(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("container", thrift.STRUCT, 29); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 29:container: ", p), err)
+	}
+	if err := p.Container.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Container), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 29:container: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField30(oprot thrift.TProtocol) (err error) {
+	if p.IsSetTier() {
+		if err := oprot.WriteFieldBegin("tier", thrift.STRING, 30); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 30:tier: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.Tier)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.tier (30) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 30:tier: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField32(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("resources", thrift.SET, 32); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 32:resources: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Resources)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Resources {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 32:resources: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskConfig) writeField33(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMesosFetcherUris() {
+		if err := oprot.WriteFieldBegin("mesosFetcherUris", thrift.SET, 33); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 33:mesosFetcherUris: ", p), err)
+		}
+		if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.MesosFetcherUris)); err != nil {
+			return thrift.PrependError("error writing set begin: ", err)
+		}
+		for v, _ := range p.MesosFetcherUris {
+			if err := v.Write(oprot); err != nil {
+				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+			}
+		}
+		if err := oprot.WriteSetEnd(); err != nil {
+			return thrift.PrependError("error writing set end: ", err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 33:mesosFetcherUris: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskConfig) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("TaskConfig(%+v)", *p)
+}
+
+// Attributes:
+//  - NumCpus: Number of CPU cores allotted.
+//  - RamMb: Megabytes of RAM allotted.
+//  - DiskMb: Megabytes of disk space allotted.
+//  - Resources: Aggregated resource values.
+type ResourceAggregate struct {
+	NumCpus   float64            `thrift:"numCpus,1" json:"numCpus"`
+	RamMb     int64              `thrift:"ramMb,2" json:"ramMb"`
+	DiskMb    int64              `thrift:"diskMb,3" json:"diskMb"`
+	Resources map[*Resource]bool `thrift:"resources,4" json:"resources"`
+}
+
+func NewResourceAggregate() *ResourceAggregate {
+	return &ResourceAggregate{}
+}
+
+func (p *ResourceAggregate) GetNumCpus() float64 {
+	return p.NumCpus
+}
+
+func (p *ResourceAggregate) GetRamMb() int64 {
+	return p.RamMb
+}
+
+func (p *ResourceAggregate) GetDiskMb() int64 {
+	return p.DiskMb
+}
+
+func (p *ResourceAggregate) GetResources() map[*Resource]bool {
+	return p.Resources
+}
+func (p *ResourceAggregate) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ResourceAggregate) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadDouble(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.NumCpus = v
+	}
+	return nil
+}
+
+func (p *ResourceAggregate) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.RamMb = v
+	}
+	return nil
+}
+
+func (p *ResourceAggregate) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.DiskMb = v
+	}
+	return nil
+}
+
+func (p *ResourceAggregate) readField4(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Resource]bool, size)
+	p.Resources = tSet
+	for i := 0; i < size; i++ {
+		_elem11 := &Resource{}
+		if err := _elem11.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem11), err)
+		}
+		p.Resources[_elem11] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *ResourceAggregate) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ResourceAggregate"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ResourceAggregate) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("numCpus", thrift.DOUBLE, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:numCpus: ", p), err)
+	}
+	if err := oprot.WriteDouble(float64(p.NumCpus)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.numCpus (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:numCpus: ", p), err)
+	}
+	return err
+}
+
+func (p *ResourceAggregate) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("ramMb", thrift.I64, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:ramMb: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.RamMb)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.ramMb (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:ramMb: ", p), err)
+	}
+	return err
+}
+
+func (p *ResourceAggregate) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("diskMb", thrift.I64, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:diskMb: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.DiskMb)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.diskMb (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:diskMb: ", p), err)
+	}
+	return err
+}
+
+func (p *ResourceAggregate) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("resources", thrift.SET, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:resources: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Resources)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Resources {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:resources: ", p), err)
+	}
+	return err
+}
+
+func (p *ResourceAggregate) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ResourceAggregate(%+v)", *p)
+}
+
+// Description of an Aurora job. One task will be scheduled for each instance within the job.
+//
+// Attributes:
+//  - Key: Key for this job. If not specified name, owner.role, and a reasonable default environment are
+// used to construct it server-side.
+//  - Owner: Owner of this job.
+//  - CronSchedule: If present, the job will be handled as a cron job with this crontab-syntax schedule.
+// This currently differs from the thrift API found in the main repo where it is not optional
+//  - CronCollisionPolicy: Collision policy to use when handling overlapping cron runs.  Default is KILL_EXISTING.
+//  - TaskConfig: Task configuration for this job.
+//  - InstanceCount: The number of instances in the job. Generated instance IDs for tasks will be in the range
+// [0, instances).
+type JobConfiguration struct {
+	// unused fields # 1 to 3
+	CronSchedule        *string             `thrift:"cronSchedule,4" json:"cronSchedule,omitempty"`
+	CronCollisionPolicy CronCollisionPolicy `thrift:"cronCollisionPolicy,5" json:"cronCollisionPolicy"`
+	TaskConfig          *TaskConfig         `thrift:"taskConfig,6" json:"taskConfig"`
+	Owner               *Identity           `thrift:"owner,7" json:"owner"`
+	InstanceCount       int32               `thrift:"instanceCount,8" json:"instanceCount"`
+	Key                 *JobKey             `thrift:"key,9" json:"key"`
+}
+
+func NewJobConfiguration() *JobConfiguration {
+	return &JobConfiguration{}
+}
+
+var JobConfiguration_Key_DEFAULT *JobKey
+
+func (p *JobConfiguration) GetKey() *JobKey {
+	if !p.IsSetKey() {
+		return JobConfiguration_Key_DEFAULT
+	}
+	return p.Key
+}
+
+var JobConfiguration_Owner_DEFAULT *Identity
+
+func (p *JobConfiguration) GetOwner() *Identity {
+	if !p.IsSetOwner() {
+		return JobConfiguration_Owner_DEFAULT
+	}
+	return p.Owner
+}
+
+var JobConfiguration_CronSchedule_DEFAULT string
+
+func (p *JobConfiguration) GetCronSchedule() string {
+	if !p.IsSetCronSchedule() {
+		return JobConfiguration_CronSchedule_DEFAULT
+	}
+	return *p.CronSchedule
+}
+
+func (p *JobConfiguration) GetCronCollisionPolicy() CronCollisionPolicy {
+	return p.CronCollisionPolicy
+}
+
+var JobConfiguration_TaskConfig_DEFAULT *TaskConfig
+
+func (p *JobConfiguration) GetTaskConfig() *TaskConfig {
+	if !p.IsSetTaskConfig() {
+		return JobConfiguration_TaskConfig_DEFAULT
+	}
+	return p.TaskConfig
+}
+
+func (p *JobConfiguration) GetInstanceCount() int32 {
+	return p.InstanceCount
+}
+func (p *JobConfiguration) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *JobConfiguration) IsSetOwner() bool {
+	return p.Owner != nil
+}
+
+func (p *JobConfiguration) IsSetCronSchedule() bool {
+	return p.CronSchedule != nil
+}
+
+func (p *JobConfiguration) IsSetTaskConfig() bool {
+	return p.TaskConfig != nil
+}
+
+func (p *JobConfiguration) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 9:
+			if err := p.readField9(iprot); err != nil {
+				return err
+			}
+		case 7:
+			if err := p.readField7(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 6:
+			if err := p.readField6(iprot); err != nil {
+				return err
+			}
+		case 8:
+			if err := p.readField8(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobConfiguration) readField9(iprot thrift.TProtocol) error {
+	p.Key = &JobKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *JobConfiguration) readField7(iprot thrift.TProtocol) error {
+	p.Owner = &Identity{}
+	if err := p.Owner.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Owner), err)
+	}
+	return nil
+}
+
+func (p *JobConfiguration) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.CronSchedule = &v
+	}
+	return nil
+}
+
+func (p *JobConfiguration) readField5(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 5: ", err)
+	} else {
+		temp := CronCollisionPolicy(v)
+		p.CronCollisionPolicy = temp
+	}
+	return nil
+}
+
+func (p *JobConfiguration) readField6(iprot thrift.TProtocol) error {
+	p.TaskConfig = &TaskConfig{}
+	if err := p.TaskConfig.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.TaskConfig), err)
+	}
+	return nil
+}
+
+func (p *JobConfiguration) readField8(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 8: ", err)
+	} else {
+		p.InstanceCount = v
+	}
+	return nil
+}
+
+func (p *JobConfiguration) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobConfiguration"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField6(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField7(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField8(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField9(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobConfiguration) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetCronSchedule() {
+		if err := oprot.WriteFieldBegin("cronSchedule", thrift.STRING, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:cronSchedule: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.CronSchedule)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.cronSchedule (4) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:cronSchedule: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *JobConfiguration) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("cronCollisionPolicy", thrift.I32, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:cronCollisionPolicy: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.CronCollisionPolicy)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.cronCollisionPolicy (5) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:cronCollisionPolicy: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfiguration) writeField6(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskConfig", thrift.STRUCT, 6); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:taskConfig: ", p), err)
+	}
+	if err := p.TaskConfig.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.TaskConfig), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:taskConfig: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfiguration) writeField7(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("owner", thrift.STRUCT, 7); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:owner: ", p), err)
+	}
+	if err := p.Owner.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Owner), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 7:owner: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfiguration) writeField8(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceCount", thrift.I32, 8); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:instanceCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.InstanceCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.instanceCount (8) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 8:instanceCount: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfiguration) writeField9(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 9); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 9:key: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfiguration) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobConfiguration(%+v)", *p)
+}
+
+// Attributes:
+//  - ActiveTaskCount: Number of tasks in active state for this job.
+//  - FinishedTaskCount: Number of tasks in finished state for this job.
+//  - FailedTaskCount: Number of failed tasks for this job.
+//  - PendingTaskCount: Number of tasks in pending state for this job.
+type JobStats struct {
+	ActiveTaskCount   int32 `thrift:"activeTaskCount,1" json:"activeTaskCount"`
+	FinishedTaskCount int32 `thrift:"finishedTaskCount,2" json:"finishedTaskCount"`
+	FailedTaskCount   int32 `thrift:"failedTaskCount,3" json:"failedTaskCount"`
+	PendingTaskCount  int32 `thrift:"pendingTaskCount,4" json:"pendingTaskCount"`
+}
+
+func NewJobStats() *JobStats {
+	return &JobStats{}
+}
+
+func (p *JobStats) GetActiveTaskCount() int32 {
+	return p.ActiveTaskCount
+}
+
+func (p *JobStats) GetFinishedTaskCount() int32 {
+	return p.FinishedTaskCount
+}
+
+func (p *JobStats) GetFailedTaskCount() int32 {
+	return p.FailedTaskCount
+}
+
+func (p *JobStats) GetPendingTaskCount() int32 {
+	return p.PendingTaskCount
+}
+func (p *JobStats) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobStats) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.ActiveTaskCount = v
+	}
+	return nil
+}
+
+func (p *JobStats) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.FinishedTaskCount = v
+	}
+	return nil
+}
+
+func (p *JobStats) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.FailedTaskCount = v
+	}
+	return nil
+}
+
+func (p *JobStats) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.PendingTaskCount = v
+	}
+	return nil
+}
+
+func (p *JobStats) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobStats"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobStats) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("activeTaskCount", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:activeTaskCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.ActiveTaskCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.activeTaskCount (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:activeTaskCount: ", p), err)
+	}
+	return err
+}
+
+func (p *JobStats) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("finishedTaskCount", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:finishedTaskCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.FinishedTaskCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.finishedTaskCount (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:finishedTaskCount: ", p), err)
+	}
+	return err
+}
+
+func (p *JobStats) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("failedTaskCount", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:failedTaskCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.FailedTaskCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.failedTaskCount (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:failedTaskCount: ", p), err)
+	}
+	return err
+}
+
+func (p *JobStats) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("pendingTaskCount", thrift.I32, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:pendingTaskCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.PendingTaskCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.pendingTaskCount (4) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:pendingTaskCount: ", p), err)
+	}
+	return err
+}
+
+func (p *JobStats) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobStats(%+v)", *p)
+}
+
+// Attributes:
+//  - Job
+//  - Stats
+//  - NextCronRunMs: Timestamp of next cron run in ms since epoch, for a cron job
+type JobSummary struct {
+	Job           *JobConfiguration `thrift:"job,1" json:"job"`
+	Stats         *JobStats         `thrift:"stats,2" json:"stats"`
+	NextCronRunMs *int64            `thrift:"nextCronRunMs,3" json:"nextCronRunMs,omitempty"`
+}
+
+func NewJobSummary() *JobSummary {
+	return &JobSummary{}
+}
+
+var JobSummary_Job_DEFAULT *JobConfiguration
+
+func (p *JobSummary) GetJob() *JobConfiguration {
+	if !p.IsSetJob() {
+		return JobSummary_Job_DEFAULT
+	}
+	return p.Job
+}
+
+var JobSummary_Stats_DEFAULT *JobStats
+
+func (p *JobSummary) GetStats() *JobStats {
+	if !p.IsSetStats() {
+		return JobSummary_Stats_DEFAULT
+	}
+	return p.Stats
+}
+
+var JobSummary_NextCronRunMs_DEFAULT int64
+
+func (p *JobSummary) GetNextCronRunMs() int64 {
+	if !p.IsSetNextCronRunMs() {
+		return JobSummary_NextCronRunMs_DEFAULT
+	}
+	return *p.NextCronRunMs
+}
+func (p *JobSummary) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *JobSummary) IsSetStats() bool {
+	return p.Stats != nil
+}
+
+func (p *JobSummary) IsSetNextCronRunMs() bool {
+	return p.NextCronRunMs != nil
+}
+
+func (p *JobSummary) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobSummary) readField1(iprot thrift.TProtocol) error {
+	p.Job = &JobConfiguration{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *JobSummary) readField2(iprot thrift.TProtocol) error {
+	p.Stats = &JobStats{}
+	if err := p.Stats.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Stats), err)
+	}
+	return nil
+}
+
+func (p *JobSummary) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.NextCronRunMs = &v
+	}
+	return nil
+}
+
+func (p *JobSummary) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobSummary"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobSummary) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:job: ", p), err)
+	}
+	return err
+}
+
+func (p *JobSummary) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("stats", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:stats: ", p), err)
+	}
+	if err := p.Stats.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Stats), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:stats: ", p), err)
+	}
+	return err
+}
+
+func (p *JobSummary) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetNextCronRunMs() {
+		if err := oprot.WriteFieldBegin("nextCronRunMs", thrift.I64, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:nextCronRunMs: ", p), err)
+		}
+		if err := oprot.WriteI64(int64(*p.NextCronRunMs)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.nextCronRunMs (3) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:nextCronRunMs: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *JobSummary) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobSummary(%+v)", *p)
+}
+
+// Closed range of integers.
+//
+// Attributes:
+//  - First
+//  - Last
+type Range struct {
+	First int32 `thrift:"first,1" json:"first"`
+	Last  int32 `thrift:"last,2" json:"last"`
+}
+
+func NewRange() *Range {
+	return &Range{}
+}
+
+func (p *Range) GetFirst() int32 {
+	return p.First
+}
+
+func (p *Range) GetLast() int32 {
+	return p.Last
+}
+func (p *Range) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Range) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.First = v
+	}
+	return nil
+}
+
+func (p *Range) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Last = v
+	}
+	return nil
+}
+
+func (p *Range) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Range"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Range) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("first", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:first: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.First)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.first (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:first: ", p), err)
+	}
+	return err
+}
+
+func (p *Range) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("last", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:last: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Last)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.last (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:last: ", p), err)
+	}
+	return err
+}
+
+func (p *Range) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Range(%+v)", *p)
+}
+
+// Attributes:
+//  - Config
+//  - Instances
+type ConfigGroup struct {
+	Config *TaskConfig `thrift:"config,1" json:"config"`
+	// unused field # 2
+	Instances map[*Range]bool `thrift:"instances,3" json:"instances"`
+}
+
+func NewConfigGroup() *ConfigGroup {
+	return &ConfigGroup{}
+}
+
+var ConfigGroup_Config_DEFAULT *TaskConfig
+
+func (p *ConfigGroup) GetConfig() *TaskConfig {
+	if !p.IsSetConfig() {
+		return ConfigGroup_Config_DEFAULT
+	}
+	return p.Config
+}
+
+func (p *ConfigGroup) GetInstances() map[*Range]bool {
+	return p.Instances
+}
+func (p *ConfigGroup) IsSetConfig() bool {
+	return p.Config != nil
+}
+
+func (p *ConfigGroup) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ConfigGroup) readField1(iprot thrift.TProtocol) error {
+	p.Config = &TaskConfig{}
+	if err := p.Config.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Config), err)
+	}
+	return nil
+}
+
+func (p *ConfigGroup) readField3(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Range]bool, size)
+	p.Instances = tSet
+	for i := 0; i < size; i++ {
+		_elem12 := &Range{}
+		if err := _elem12.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem12), err)
+		}
+		p.Instances[_elem12] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *ConfigGroup) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ConfigGroup"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ConfigGroup) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("config", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:config: ", p), err)
+	}
+	if err := p.Config.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Config), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:config: ", p), err)
+	}
+	return err
+}
+
+func (p *ConfigGroup) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instances", thrift.SET, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:instances: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Instances)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Instances {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:instances: ", p), err)
+	}
+	return err
+}
+
+func (p *ConfigGroup) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ConfigGroup(%+v)", *p)
+}
+
+// Attributes:
+//  - Key
+//  - Groups
+type ConfigSummary struct {
+	Key    *JobKey               `thrift:"key,1" json:"key"`
+	Groups map[*ConfigGroup]bool `thrift:"groups,2" json:"groups"`
+}
+
+func NewConfigSummary() *ConfigSummary {
+	return &ConfigSummary{}
+}
+
+var ConfigSummary_Key_DEFAULT *JobKey
+
+func (p *ConfigSummary) GetKey() *JobKey {
+	if !p.IsSetKey() {
+		return ConfigSummary_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *ConfigSummary) GetGroups() map[*ConfigGroup]bool {
+	return p.Groups
+}
+func (p *ConfigSummary) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *ConfigSummary) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ConfigSummary) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *ConfigSummary) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*ConfigGroup]bool, size)
+	p.Groups = tSet
+	for i := 0; i < size; i++ {
+		_elem13 := &ConfigGroup{}
+		if err := _elem13.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem13), err)
+		}
+		p.Groups[_elem13] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *ConfigSummary) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ConfigSummary"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ConfigSummary) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *ConfigSummary) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("groups", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:groups: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Groups)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Groups {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:groups: ", p), err)
+	}
+	return err
+}
+
+func (p *ConfigSummary) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ConfigSummary(%+v)", *p)
+}
+
+// Attributes:
+//  - TaskConfig
+type PopulateJobResult_ struct {
+	// unused field # 1
+	TaskConfig *TaskConfig `thrift:"taskConfig,2" json:"taskConfig"`
+}
+
+func NewPopulateJobResult_() *PopulateJobResult_ {
+	return &PopulateJobResult_{}
+}
+
+var PopulateJobResult__TaskConfig_DEFAULT *TaskConfig
+
+func (p *PopulateJobResult_) GetTaskConfig() *TaskConfig {
+	if !p.IsSetTaskConfig() {
+		return PopulateJobResult__TaskConfig_DEFAULT
+	}
+	return p.TaskConfig
+}
+func (p *PopulateJobResult_) IsSetTaskConfig() bool {
+	return p.TaskConfig != nil
+}
+
+func (p *PopulateJobResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *PopulateJobResult_) readField2(iprot thrift.TProtocol) error {
+	p.TaskConfig = &TaskConfig{}
+	if err := p.TaskConfig.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.TaskConfig), err)
+	}
+	return nil
+}
+
+func (p *PopulateJobResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("PopulateJobResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *PopulateJobResult_) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskConfig", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:taskConfig: ", p), err)
+	}
+	if err := p.TaskConfig.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.TaskConfig), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:taskConfig: ", p), err)
+	}
+	return err
+}
+
+func (p *PopulateJobResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("PopulateJobResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Quota: Total allocated resource quota.
+//  - ProdSharedConsumption: Resources consumed by production jobs from a shared resource pool.
+//  - NonProdSharedConsumption: Resources consumed by non-production jobs from a shared resource pool.
+//  - ProdDedicatedConsumption: Resources consumed by production jobs from a dedicated resource pool.
+//  - NonProdDedicatedConsumption: Resources consumed by non-production jobs from a dedicated resource pool.
+type GetQuotaResult_ struct {
+	Quota                       *ResourceAggregate `thrift:"quota,1" json:"quota"`
+	ProdSharedConsumption       *ResourceAggregate `thrift:"prodSharedConsumption,2" json:"prodSharedConsumption,omitempty"`
+	NonProdSharedConsumption    *ResourceAggregate `thrift:"nonProdSharedConsumption,3" json:"nonProdSharedConsumption,omitempty"`
+	ProdDedicatedConsumption    *ResourceAggregate `thrift:"prodDedicatedConsumption,4" json:"prodDedicatedConsumption,omitempty"`
+	NonProdDedicatedConsumption *ResourceAggregate `thrift:"nonProdDedicatedConsumption,5" json:"nonProdDedicatedConsumption,omitempty"`
+}
+
+func NewGetQuotaResult_() *GetQuotaResult_ {
+	return &GetQuotaResult_{}
+}
+
+var GetQuotaResult__Quota_DEFAULT *ResourceAggregate
+
+func (p *GetQuotaResult_) GetQuota() *ResourceAggregate {
+	if !p.IsSetQuota() {
+		return GetQuotaResult__Quota_DEFAULT
+	}
+	return p.Quota
+}
+
+var GetQuotaResult__ProdSharedConsumption_DEFAULT *ResourceAggregate
+
+func (p *GetQuotaResult_) GetProdSharedConsumption() *ResourceAggregate {
+	if !p.IsSetProdSharedConsumption() {
+		return GetQuotaResult__ProdSharedConsumption_DEFAULT
+	}
+	return p.ProdSharedConsumption
+}
+
+var GetQuotaResult__NonProdSharedConsumption_DEFAULT *ResourceAggregate
+
+func (p *GetQuotaResult_) GetNonProdSharedConsumption() *ResourceAggregate {
+	if !p.IsSetNonProdSharedConsumption() {
+		return GetQuotaResult__NonProdSharedConsumption_DEFAULT
+	}
+	return p.NonProdSharedConsumption
+}
+
+var GetQuotaResult__ProdDedicatedConsumption_DEFAULT *ResourceAggregate
+
+func (p *GetQuotaResult_) GetProdDedicatedConsumption() *ResourceAggregate {
+	if !p.IsSetProdDedicatedConsumption() {
+		return GetQuotaResult__ProdDedicatedConsumption_DEFAULT
+	}
+	return p.ProdDedicatedConsumption
+}
+
+var GetQuotaResult__NonProdDedicatedConsumption_DEFAULT *ResourceAggregate
+
+func (p *GetQuotaResult_) GetNonProdDedicatedConsumption() *ResourceAggregate {
+	if !p.IsSetNonProdDedicatedConsumption() {
+		return GetQuotaResult__NonProdDedicatedConsumption_DEFAULT
+	}
+	return p.NonProdDedicatedConsumption
+}
+func (p *GetQuotaResult_) IsSetQuota() bool {
+	return p.Quota != nil
+}
+
+func (p *GetQuotaResult_) IsSetProdSharedConsumption() bool {
+	return p.ProdSharedConsumption != nil
+}
+
+func (p *GetQuotaResult_) IsSetNonProdSharedConsumption() bool {
+	return p.NonProdSharedConsumption != nil
+}
+
+func (p *GetQuotaResult_) IsSetProdDedicatedConsumption() bool {
+	return p.ProdDedicatedConsumption != nil
+}
+
+func (p *GetQuotaResult_) IsSetNonProdDedicatedConsumption() bool {
+	return p.NonProdDedicatedConsumption != nil
+}
+
+func (p *GetQuotaResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) readField1(iprot thrift.TProtocol) error {
+	p.Quota = &ResourceAggregate{}
+	if err := p.Quota.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Quota), err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) readField2(iprot thrift.TProtocol) error {
+	p.ProdSharedConsumption = &ResourceAggregate{}
+	if err := p.ProdSharedConsumption.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ProdSharedConsumption), err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) readField3(iprot thrift.TProtocol) error {
+	p.NonProdSharedConsumption = &ResourceAggregate{}
+	if err := p.NonProdSharedConsumption.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.NonProdSharedConsumption), err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) readField4(iprot thrift.TProtocol) error {
+	p.ProdDedicatedConsumption = &ResourceAggregate{}
+	if err := p.ProdDedicatedConsumption.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ProdDedicatedConsumption), err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) readField5(iprot thrift.TProtocol) error {
+	p.NonProdDedicatedConsumption = &ResourceAggregate{}
+	if err := p.NonProdDedicatedConsumption.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.NonProdDedicatedConsumption), err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetQuotaResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetQuotaResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("quota", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:quota: ", p), err)
+	}
+	if err := p.Quota.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Quota), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:quota: ", p), err)
+	}
+	return err
+}
+
+func (p *GetQuotaResult_) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetProdSharedConsumption() {
+		if err := oprot.WriteFieldBegin("prodSharedConsumption", thrift.STRUCT, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:prodSharedConsumption: ", p), err)
+		}
+		if err := p.ProdSharedConsumption.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ProdSharedConsumption), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:prodSharedConsumption: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *GetQuotaResult_) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetNonProdSharedConsumption() {
+		if err := oprot.WriteFieldBegin("nonProdSharedConsumption", thrift.STRUCT, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:nonProdSharedConsumption: ", p), err)
+		}
+		if err := p.NonProdSharedConsumption.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.NonProdSharedConsumption), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:nonProdSharedConsumption: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *GetQuotaResult_) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetProdDedicatedConsumption() {
+		if err := oprot.WriteFieldBegin("prodDedicatedConsumption", thrift.STRUCT, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:prodDedicatedConsumption: ", p), err)
+		}
+		if err := p.ProdDedicatedConsumption.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ProdDedicatedConsumption), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:prodDedicatedConsumption: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *GetQuotaResult_) writeField5(oprot thrift.TProtocol) (err error) {
+	if p.IsSetNonProdDedicatedConsumption() {
+		if err := oprot.WriteFieldBegin("nonProdDedicatedConsumption", thrift.STRUCT, 5); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:nonProdDedicatedConsumption: ", p), err)
+		}
+		if err := p.NonProdDedicatedConsumption.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.NonProdDedicatedConsumption), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:nonProdDedicatedConsumption: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *GetQuotaResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetQuotaResult_(%+v)", *p)
+}
+
+// Event marking a state transition within a task's lifecycle.
+//
+// Attributes:
+//  - Timestamp: Epoch timestamp in milliseconds.
+//  - Status: New status of the task.
+//  - Message: Audit message that explains why a transition occurred.
+//  - Scheduler: Hostname of the scheduler machine that performed the event.
+type TaskEvent struct {
+	Timestamp int64          `thrift:"timestamp,1" json:"timestamp"`
+	Status    ScheduleStatus `thrift:"status,2" json:"status"`
+	Message   *string        `thrift:"message,3" json:"message,omitempty"`
+	Scheduler *string        `thrift:"scheduler,4" json:"scheduler,omitempty"`
+}
+
+func NewTaskEvent() *TaskEvent {
+	return &TaskEvent{}
+}
+
+func (p *TaskEvent) GetTimestamp() int64 {
+	return p.Timestamp
+}
+
+func (p *TaskEvent) GetStatus() ScheduleStatus {
+	return p.Status
+}
+
+var TaskEvent_Message_DEFAULT string
+
+func (p *TaskEvent) GetMessage() string {
+	if !p.IsSetMessage() {
+		return TaskEvent_Message_DEFAULT
+	}
+	return *p.Message
+}
+
+var TaskEvent_Scheduler_DEFAULT string
+
+func (p *TaskEvent) GetScheduler() string {
+	if !p.IsSetScheduler() {
+		return TaskEvent_Scheduler_DEFAULT
+	}
+	return *p.Scheduler
+}
+func (p *TaskEvent) IsSetMessage() bool {
+	return p.Message != nil
+}
+
+func (p *TaskEvent) IsSetScheduler() bool {
+	return p.Scheduler != nil
+}
+
+func (p *TaskEvent) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *TaskEvent) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Timestamp = v
+	}
+	return nil
+}
+
+func (p *TaskEvent) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		temp := ScheduleStatus(v)
+		p.Status = temp
+	}
+	return nil
+}
+
+func (p *TaskEvent) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.Message = &v
+	}
+	return nil
+}
+
+func (p *TaskEvent) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.Scheduler = &v
+	}
+	return nil
+}
+
+func (p *TaskEvent) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("TaskEvent"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *TaskEvent) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("timestamp", thrift.I64, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:timestamp: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.Timestamp)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.timestamp (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:timestamp: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskEvent) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("status", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:status: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Status)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.status (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:status: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskEvent) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMessage() {
+		if err := oprot.WriteFieldBegin("message", thrift.STRING, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:message: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.Message)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.message (3) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:message: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskEvent) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetScheduler() {
+		if err := oprot.WriteFieldBegin("scheduler", thrift.STRING, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:scheduler: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.Scheduler)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.scheduler (4) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:scheduler: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *TaskEvent) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("TaskEvent(%+v)", *p)
+}
+
+// A task assignment that is provided to an executor.
+//
+// Attributes:
+//  - TaskId: The mesos task ID for this task.  Guaranteed to be globally unique
+//  - SlaveId: The mesos slave ID that this task has been assigned to.
+// This will not be populated for a PENDING task.
+//  - SlaveHost: The name of the machine that this task has been assigned to.
+// This will not be populated for a PENDING task.
+//  - Task: Information about how to run this task.
+//  - AssignedPorts: Ports reserved on the machine while this task is running.
+//  - InstanceId: The instance ID assigned to this task. Instance IDs must be unique and contiguous within a
+// job, and will be in the range [0, N-1] (inclusive) for a job that has N instances.
+type AssignedTask struct {
+	TaskId        string           `thrift:"taskId,1" json:"taskId"`
+	SlaveId       string           `thrift:"slaveId,2" json:"slaveId"`
+	SlaveHost     string           `thrift:"slaveHost,3" json:"slaveHost"`
+	Task          *TaskConfig      `thrift:"task,4" json:"task"`
+	AssignedPorts map[string]int32 `thrift:"assignedPorts,5" json:"assignedPorts"`
+	InstanceId    int32            `thrift:"instanceId,6" json:"instanceId"`
+}
+
+func NewAssignedTask() *AssignedTask {
+	return &AssignedTask{}
+}
+
+func (p *AssignedTask) GetTaskId() string {
+	return p.TaskId
+}
+
+func (p *AssignedTask) GetSlaveId() string {
+	return p.SlaveId
+}
+
+func (p *AssignedTask) GetSlaveHost() string {
+	return p.SlaveHost
+}
+
+var AssignedTask_Task_DEFAULT *TaskConfig
+
+func (p *AssignedTask) GetTask() *TaskConfig {
+	if !p.IsSetTask() {
+		return AssignedTask_Task_DEFAULT
+	}
+	return p.Task
+}
+
+func (p *AssignedTask) GetAssignedPorts() map[string]int32 {
+	return p.AssignedPorts
+}
+
+func (p *AssignedTask) GetInstanceId() int32 {
+	return p.InstanceId
+}
+func (p *AssignedTask) IsSetTask() bool {
+	return p.Task != nil
+}
+
+func (p *AssignedTask) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 6:
+			if err := p.readField6(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *AssignedTask) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.TaskId = v
+	}
+	return nil
+}
+
+func (p *AssignedTask) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.SlaveId = v
+	}
+	return nil
+}
+
+func (p *AssignedTask) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.SlaveHost = v
+	}
+	return nil
+}
+
+func (p *AssignedTask) readField4(iprot thrift.TProtocol) error {
+	p.Task = &TaskConfig{}
+	if err := p.Task.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Task), err)
+	}
+	return nil
+}
+
+func (p *AssignedTask) readField5(iprot thrift.TProtocol) error {
+	_, _, size, err := iprot.ReadMapBegin()
+	if err != nil {
+		return thrift.PrependError("error reading map begin: ", err)
+	}
+	tMap := make(map[string]int32, size)
+	p.AssignedPorts = tMap
+	for i := 0; i < size; i++ {
+		var _key14 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_key14 = v
+		}
+		var _val15 int32
+		if v, err := iprot.ReadI32(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_val15 = v
+		}
+		p.AssignedPorts[_key14] = _val15
+	}
+	if err := iprot.ReadMapEnd(); err != nil {
+		return thrift.PrependError("error reading map end: ", err)
+	}
+	return nil
+}
+
+func (p *AssignedTask) readField6(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 6: ", err)
+	} else {
+		p.InstanceId = v
+	}
+	return nil
+}
+
+func (p *AssignedTask) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("AssignedTask"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField6(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *AssignedTask) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskId", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:taskId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.TaskId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.taskId (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:taskId: ", p), err)
+	}
+	return err
+}
+
+func (p *AssignedTask) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("slaveId", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:slaveId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.SlaveId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.slaveId (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:slaveId: ", p), err)
+	}
+	return err
+}
+
+func (p *AssignedTask) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("slaveHost", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:slaveHost: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.SlaveHost)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.slaveHost (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:slaveHost: ", p), err)
+	}
+	return err
+}
+
+func (p *AssignedTask) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("task", thrift.STRUCT, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:task: ", p), err)
+	}
+	if err := p.Task.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Task), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:task: ", p), err)
+	}
+	return err
+}
+
+func (p *AssignedTask) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("assignedPorts", thrift.MAP, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:assignedPorts: ", p), err)
+	}
+	if err := oprot.WriteMapBegin(thrift.STRING, thrift.I32, len(p.AssignedPorts)); err != nil {
+		return thrift.PrependError("error writing map begin: ", err)
+	}
+	for k, v := range p.AssignedPorts {
+		if err := oprot.WriteString(string(k)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+		if err := oprot.WriteI32(int32(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteMapEnd(); err != nil {
+		return thrift.PrependError("error writing map end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:assignedPorts: ", p), err)
+	}
+	return err
+}
+
+func (p *AssignedTask) writeField6(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceId", thrift.I32, 6); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:instanceId: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.InstanceId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.instanceId (6) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:instanceId: ", p), err)
+	}
+	return err
+}
+
+func (p *AssignedTask) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("AssignedTask(%+v)", *p)
+}
+
+// A task that has been scheduled.
+//
+// Attributes:
+//  - AssignedTask: The task that was scheduled.
+//  - Status: The current status of this task.
+//  - FailureCount: The number of failures that this task has accumulated over the multi-generational history of
+// this task.
+//  - TaskEvents: State change history for this task.
+//  - AncestorId: The task ID of the previous generation of this task.  When a task is automatically rescheduled,
+// a copy of the task is created and ancestor ID of the previous task's task ID.
+type ScheduledTask struct {
+	AssignedTask *AssignedTask  `thrift:"assignedTask,1" json:"assignedTask"`
+	Status       ScheduleStatus `thrift:"status,2" json:"status"`
+	FailureCount int32          `thrift:"failureCount,3" json:"failureCount"`
+	TaskEvents   []*TaskEvent   `thrift:"taskEvents,4" json:"taskEvents"`
+	AncestorId   string         `thrift:"ancestorId,5" json:"ancestorId"`
+}
+
+func NewScheduledTask() *ScheduledTask {
+	return &ScheduledTask{}
+}
+
+var ScheduledTask_AssignedTask_DEFAULT *AssignedTask
+
+func (p *ScheduledTask) GetAssignedTask() *AssignedTask {
+	if !p.IsSetAssignedTask() {
+		return ScheduledTask_AssignedTask_DEFAULT
+	}
+	return p.AssignedTask
+}
+
+func (p *ScheduledTask) GetStatus() ScheduleStatus {
+	return p.Status
+}
+
+func (p *ScheduledTask) GetFailureCount() int32 {
+	return p.FailureCount
+}
+
+func (p *ScheduledTask) GetTaskEvents() []*TaskEvent {
+	return p.TaskEvents
+}
+
+func (p *ScheduledTask) GetAncestorId() string {
+	return p.AncestorId
+}
+func (p *ScheduledTask) IsSetAssignedTask() bool {
+	return p.AssignedTask != nil
+}
+
+func (p *ScheduledTask) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ScheduledTask) readField1(iprot thrift.TProtocol) error {
+	p.AssignedTask = &AssignedTask{}
+	if err := p.AssignedTask.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.AssignedTask), err)
+	}
+	return nil
+}
+
+func (p *ScheduledTask) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		temp := ScheduleStatus(v)
+		p.Status = temp
+	}
+	return nil
+}
+
+func (p *ScheduledTask) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.FailureCount = v
+	}
+	return nil
+}
+
+func (p *ScheduledTask) readField4(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*TaskEvent, 0, size)
+	p.TaskEvents = tSlice
+	for i := 0; i < size; i++ {
+		_elem16 := &TaskEvent{}
+		if err := _elem16.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem16), err)
+		}
+		p.TaskEvents = append(p.TaskEvents, _elem16)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *ScheduledTask) readField5(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 5: ", err)
+	} else {
+		p.AncestorId = v
+	}
+	return nil
+}
+
+func (p *ScheduledTask) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ScheduledTask"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ScheduledTask) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("assignedTask", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:assignedTask: ", p), err)
+	}
+	if err := p.AssignedTask.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.AssignedTask), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:assignedTask: ", p), err)
+	}
+	return err
+}
+
+func (p *ScheduledTask) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("status", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:status: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Status)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.status (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:status: ", p), err)
+	}
+	return err
+}
+
+func (p *ScheduledTask) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("failureCount", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:failureCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.FailureCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.failureCount (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:failureCount: ", p), err)
+	}
+	return err
+}
+
+func (p *ScheduledTask) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskEvents", thrift.LIST, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:taskEvents: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.TaskEvents)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.TaskEvents {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:taskEvents: ", p), err)
+	}
+	return err
+}
+
+func (p *ScheduledTask) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("ancestorId", thrift.STRING, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:ancestorId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.AncestorId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.ancestorId (5) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:ancestorId: ", p), err)
+	}
+	return err
+}
+
+func (p *ScheduledTask) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ScheduledTask(%+v)", *p)
+}
+
+// Attributes:
+//  - Tasks
+type ScheduleStatusResult_ struct {
+	Tasks []*ScheduledTask `thrift:"tasks,1" json:"tasks"`
+}
+
+func NewScheduleStatusResult_() *ScheduleStatusResult_ {
+	return &ScheduleStatusResult_{}
+}
+
+func (p *ScheduleStatusResult_) GetTasks() []*ScheduledTask {
+	return p.Tasks
+}
+func (p *ScheduleStatusResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ScheduleStatusResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*ScheduledTask, 0, size)
+	p.Tasks = tSlice
+	for i := 0; i < size; i++ {
+		_elem17 := &ScheduledTask{}
+		if err := _elem17.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem17), err)
+		}
+		p.Tasks = append(p.Tasks, _elem17)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *ScheduleStatusResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ScheduleStatusResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ScheduleStatusResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("tasks", thrift.LIST, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:tasks: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Tasks)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.Tasks {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:tasks: ", p), err)
+	}
+	return err
+}
+
+func (p *ScheduleStatusResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ScheduleStatusResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Configs
+type GetJobsResult_ struct {
+	Configs map[*JobConfiguration]bool `thrift:"configs,1" json:"configs"`
+}
+
+func NewGetJobsResult_() *GetJobsResult_ {
+	return &GetJobsResult_{}
+}
+
+func (p *GetJobsResult_) GetConfigs() map[*JobConfiguration]bool {
+	return p.Configs
+}
+func (p *GetJobsResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetJobsResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*JobConfiguration]bool, size)
+	p.Configs = tSet
+	for i := 0; i < size; i++ {
+		_elem18 := &JobConfiguration{}
+		if err := _elem18.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem18), err)
+		}
+		p.Configs[_elem18] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobsResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetJobsResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobsResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("configs", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:configs: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Configs)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Configs {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:configs: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobsResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetJobsResult_(%+v)", *p)
+}
+
+// Contains a set of restrictions on matching tasks where all restrictions must be met
+// (terms are AND'ed together).
+//
+// Attributes:
+//  - Role
+//  - Environment
+//  - JobName
+//  - TaskIds
+//  - Statuses
+//  - InstanceIds
+//  - SlaveHosts
+//  - JobKeys
+//  - Offset
+//  - Limit
+type TaskQuery struct {
+	// unused field # 1
+	JobName string `thrift:"jobName,2" json:"jobName"`
+	// unused field # 3
+	TaskIds  map[string]bool         `thrift:"taskIds,4" json:"taskIds"`
+	Statuses map[ScheduleStatus]bool `thrift:"statuses,5" json:"statuses"`
+	// unused field # 6
+	InstanceIds map[int32]bool `thrift:"instanceIds,7" json:"instanceIds"`
+	// unused field # 8
+	Environment string           `thrift:"environment,9" json:"environment"`
+	SlaveHosts  map[string]bool  `thrift:"slaveHosts,10" json:"slaveHosts"`
+	JobKeys     map[*JobKey]bool `thrift:"jobKeys,11" json:"jobKeys"`
+	Offset      int32            `thrift:"offset,12" json:"offset"`
+	Limit       int32            `thrift:"limit,13" json:"limit"`
+	Role        string           `thrift:"role,14" json:"role"`
+}
+
+func NewTaskQuery() *TaskQuery {
+	return &TaskQuery{}
+}
+
+func (p *TaskQuery) GetRole() string {
+	return p.Role
+}
+
+func (p *TaskQuery) GetEnvironment() string {
+	return p.Environment
+}
+
+func (p *TaskQuery) GetJobName() string {
+	return p.JobName
+}
+
+func (p *TaskQuery) GetTaskIds() map[string]bool {
+	return p.TaskIds
+}
+
+func (p *TaskQuery) GetStatuses() map[ScheduleStatus]bool {
+	return p.Statuses
+}
+
+func (p *TaskQuery) GetInstanceIds() map[int32]bool {
+	return p.InstanceIds
+}
+
+func (p *TaskQuery) GetSlaveHosts() map[string]bool {
+	return p.SlaveHosts
+}
+
+func (p *TaskQuery) GetJobKeys() map[*JobKey]bool {
+	return p.JobKeys
+}
+
+func (p *TaskQuery) GetOffset() int32 {
+	return p.Offset
+}
+
+func (p *TaskQuery) GetLimit() int32 {
+	return p.Limit
+}
+func (p *TaskQuery) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 14:
+			if err := p.readField14(iprot); err != nil {
+				return err
+			}
+		case 9:
+			if err := p.readField9(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 7:
+			if err := p.readField7(iprot); err != nil {
+				return err
+			}
+		case 10:
+			if err := p.readField10(iprot); err != nil {
+				return err
+			}
+		case 11:
+			if err := p.readField11(iprot); err != nil {
+				return err
+			}
+		case 12:
+			if err := p.readField12(iprot); err != nil {
+				return err
+			}
+		case 13:
+			if err := p.readField13(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField14(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 14: ", err)
+	} else {
+		p.Role = v
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField9(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 9: ", err)
+	} else {
+		p.Environment = v
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.JobName = v
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField4(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.TaskIds = tSet
+	for i := 0; i < size; i++ {
+		var _elem19 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem19 = v
+		}
+		p.TaskIds[_elem19] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField5(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[ScheduleStatus]bool, size)
+	p.Statuses = tSet
+	for i := 0; i < size; i++ {
+		var _elem20 ScheduleStatus
+		if v, err := iprot.ReadI32(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			temp := ScheduleStatus(v)
+			_elem20 = temp
+		}
+		p.Statuses[_elem20] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField7(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[int32]bool, size)
+	p.InstanceIds = tSet
+	for i := 0; i < size; i++ {
+		var _elem21 int32
+		if v, err := iprot.ReadI32(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem21 = v
+		}
+		p.InstanceIds[_elem21] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField10(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.SlaveHosts = tSet
+	for i := 0; i < size; i++ {
+		var _elem22 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem22 = v
+		}
+		p.SlaveHosts[_elem22] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField11(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*JobKey]bool, size)
+	p.JobKeys = tSet
+	for i := 0; i < size; i++ {
+		_elem23 := &JobKey{}
+		if err := _elem23.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem23), err)
+		}
+		p.JobKeys[_elem23] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField12(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 12: ", err)
+	} else {
+		p.Offset = v
+	}
+	return nil
+}
+
+func (p *TaskQuery) readField13(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 13: ", err)
+	} else {
+		p.Limit = v
+	}
+	return nil
+}
+
+func (p *TaskQuery) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("TaskQuery"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField7(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField9(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField10(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField11(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField12(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField13(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField14(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *TaskQuery) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("jobName", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:jobName: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.JobName)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.jobName (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:jobName: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskIds", thrift.SET, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:taskIds: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.TaskIds)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.TaskIds {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:taskIds: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("statuses", thrift.SET, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:statuses: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.I32, len(p.Statuses)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Statuses {
+		if err := oprot.WriteI32(int32(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:statuses: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField7(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceIds", thrift.SET, 7); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:instanceIds: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.I32, len(p.InstanceIds)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.InstanceIds {
+		if err := oprot.WriteI32(int32(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 7:instanceIds: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField9(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("environment", thrift.STRING, 9); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:environment: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Environment)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.environment (9) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 9:environment: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField10(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("slaveHosts", thrift.SET, 10); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:slaveHosts: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.SlaveHosts)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.SlaveHosts {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 10:slaveHosts: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField11(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("jobKeys", thrift.SET, 11); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:jobKeys: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.JobKeys)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.JobKeys {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 11:jobKeys: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField12(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("offset", thrift.I32, 12); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 12:offset: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Offset)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.offset (12) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 12:offset: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField13(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("limit", thrift.I32, 13); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 13:limit: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Limit)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.limit (13) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 13:limit: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) writeField14(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("role", thrift.STRING, 14); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 14:role: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Role)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.role (14) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 14:role: ", p), err)
+	}
+	return err
+}
+
+func (p *TaskQuery) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("TaskQuery(%+v)", *p)
+}
+
+// Attributes:
+//  - Host
+//  - Mode
+type HostStatus struct {
+	Host string          `thrift:"host,1" json:"host"`
+	Mode MaintenanceMode `thrift:"mode,2" json:"mode"`
+}
+
+func NewHostStatus() *HostStatus {
+	return &HostStatus{}
+}
+
+func (p *HostStatus) GetHost() string {
+	return p.Host
+}
+
+func (p *HostStatus) GetMode() MaintenanceMode {
+	return p.Mode
+}
+func (p *HostStatus) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *HostStatus) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Host = v
+	}
+	return nil
+}
+
+func (p *HostStatus) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		temp := MaintenanceMode(v)
+		p.Mode = temp
+	}
+	return nil
+}
+
+func (p *HostStatus) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("HostStatus"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *HostStatus) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("host", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:host: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Host)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.host (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:host: ", p), err)
+	}
+	return err
+}
+
+func (p *HostStatus) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("mode", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:mode: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Mode)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.mode (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:mode: ", p), err)
+	}
+	return err
+}
+
+func (p *HostStatus) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("HostStatus(%+v)", *p)
+}
+
+// Attributes:
+//  - Role
+//  - JobCount
+//  - CronJobCount
+type RoleSummary struct {
+	Role         string `thrift:"role,1" json:"role"`
+	JobCount     int32  `thrift:"jobCount,2" json:"jobCount"`
+	CronJobCount int32  `thrift:"cronJobCount,3" json:"cronJobCount"`
+}
+
+func NewRoleSummary() *RoleSummary {
+	return &RoleSummary{}
+}
+
+func (p *RoleSummary) GetRole() string {
+	return p.Role
+}
+
+func (p *RoleSummary) GetJobCount() int32 {
+	return p.JobCount
+}
+
+func (p *RoleSummary) GetCronJobCount() int32 {
+	return p.CronJobCount
+}
+func (p *RoleSummary) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *RoleSummary) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Role = v
+	}
+	return nil
+}
+
+func (p *RoleSummary) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.JobCount = v
+	}
+	return nil
+}
+
+func (p *RoleSummary) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.CronJobCount = v
+	}
+	return nil
+}
+
+func (p *RoleSummary) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("RoleSummary"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *RoleSummary) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("role", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:role: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Role)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.role (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:role: ", p), err)
+	}
+	return err
+}
+
+func (p *RoleSummary) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("jobCount", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:jobCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.JobCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.jobCount (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:jobCount: ", p), err)
+	}
+	return err
+}
+
+func (p *RoleSummary) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("cronJobCount", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:cronJobCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.CronJobCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.cronJobCount (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:cronJobCount: ", p), err)
+	}
+	return err
+}
+
+func (p *RoleSummary) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("RoleSummary(%+v)", *p)
+}
+
+// Attributes:
+//  - HostNames
+type Hosts struct {
+	HostNames map[string]bool `thrift:"hostNames,1" json:"hostNames"`
+}
+
+func NewHosts() *Hosts {
+	return &Hosts{}
+}
+
+func (p *Hosts) GetHostNames() map[string]bool {
+	return p.HostNames
+}
+func (p *Hosts) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Hosts) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.HostNames = tSet
+	for i := 0; i < size; i++ {
+		var _elem24 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem24 = v
+		}
+		p.HostNames[_elem24] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *Hosts) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Hosts"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Hosts) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("hostNames", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:hostNames: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.HostNames)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.HostNames {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:hostNames: ", p), err)
+	}
+	return err
+}
+
+func (p *Hosts) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Hosts(%+v)", *p)
+}
+
+// Attributes:
+//  - TaskId
+//  - Reason
+type PendingReason struct {
+	TaskId string `thrift:"taskId,1" json:"taskId"`
+	Reason string `thrift:"reason,2" json:"reason"`
+}
+
+func NewPendingReason() *PendingReason {
+	return &PendingReason{}
+}
+
+func (p *PendingReason) GetTaskId() string {
+	return p.TaskId
+}
+
+func (p *PendingReason) GetReason() string {
+	return p.Reason
+}
+func (p *PendingReason) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *PendingReason) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.TaskId = v
+	}
+	return nil
+}
+
+func (p *PendingReason) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Reason = v
+	}
+	return nil
+}
+
+func (p *PendingReason) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("PendingReason"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *PendingReason) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskId", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:taskId: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.TaskId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.taskId (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:taskId: ", p), err)
+	}
+	return err
+}
+
+func (p *PendingReason) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("reason", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:reason: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Reason)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.reason (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:reason: ", p), err)
+	}
+	return err
+}
+
+func (p *PendingReason) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("PendingReason(%+v)", *p)
+}
+
+// Job update key.
+//
+// Attributes:
+//  - Job: Job being updated
+//  - ID: Update ID.
+type JobUpdateKey struct {
+	Job *JobKey `thrift:"job,1" json:"job"`
+	ID  string  `thrift:"id,2" json:"id"`
+}
+
+func NewJobUpdateKey() *JobUpdateKey {
+	return &JobUpdateKey{}
+}
+
+var JobUpdateKey_Job_DEFAULT *JobKey
+
+func (p *JobUpdateKey) GetJob() *JobKey {
+	if !p.IsSetJob() {
+		return JobUpdateKey_Job_DEFAULT
+	}
+	return p.Job
+}
+
+func (p *JobUpdateKey) GetID() string {
+	return p.ID
+}
+func (p *JobUpdateKey) IsSetJob() bool {
+	return p.Job != nil
+}
+
+func (p *JobUpdateKey) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateKey) readField1(iprot thrift.TProtocol) error {
+	p.Job = &JobKey{}
+	if err := p.Job.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Job), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateKey) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.ID = v
+	}
+	return nil
+}
+
+func (p *JobUpdateKey) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateKey"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateKey) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("job", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:job: ", p), err)
+	}
+	if err := p.Job.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Job), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:job: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateKey) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("id", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:id: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.ID)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.id (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:id: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateKey) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateKey(%+v)", *p)
+}
+
+// Job update thresholds and limits.
+//
+// Attributes:
+//  - UpdateGroupSize: Max number of instances being updated at any given moment.
+//  - MaxPerInstanceFailures: Max number of instance failures to tolerate before marking instance as FAILED.
+//  - MaxFailedInstances: Max number of FAILED instances to tolerate before terminating the update.
+//  - MinWaitInInstanceRunningMs: Min time to watch a RUNNING instance.
+//  - RollbackOnFailure: If true, enables failed update rollback.
+//  - UpdateOnlyTheseInstances: Instance IDs to act on. All instances will be affected if this is not set.
+//  - WaitForBatchCompletion: If true, use updateGroupSize as strict batching boundaries, and avoid proceeding to another
+// batch until the preceding batch finishes updating.
+//  - BlockIfNoPulsesAfterMs: If set, requires external calls to pulseJobUpdate RPC within the specified rate for the
+// update to make progress. If no pulses received within specified interval the update will
+// block. A blocked update is unable to continue but retains its current status. It may only get
+// unblocked by a fresh pulseJobUpdate call.
+type JobUpdateSettings struct {
+	UpdateGroupSize        int32 `thrift:"updateGroupSize,1" json:"updateGroupSize"`
+	MaxPerInstanceFailures int32 `thrift:"maxPerInstanceFailures,2" json:"maxPerInstanceFailures"`
+	MaxFailedInstances     int32 `thrift:"maxFailedInstances,3" json:"maxFailedInstances"`
+	// unused field # 4
+	MinWaitInInstanceRunningMs int32           `thrift:"minWaitInInstanceRunningMs,5" json:"minWaitInInstanceRunningMs"`
+	RollbackOnFailure          bool            `thrift:"rollbackOnFailure,6" json:"rollbackOnFailure"`
+	UpdateOnlyTheseInstances   map[*Range]bool `thrift:"updateOnlyTheseInstances,7" json:"updateOnlyTheseInstances"`
+	WaitForBatchCompletion     bool            `thrift:"waitForBatchCompletion,8" json:"waitForBatchCompletion"`
+	BlockIfNoPulsesAfterMs     *int32          `thrift:"blockIfNoPulsesAfterMs,9" json:"blockIfNoPulsesAfterMs,omitempty"`
+}
+
+func NewJobUpdateSettings() *JobUpdateSettings {
+	return &JobUpdateSettings{}
+}
+
+func (p *JobUpdateSettings) GetUpdateGroupSize() int32 {
+	return p.UpdateGroupSize
+}
+
+func (p *JobUpdateSettings) GetMaxPerInstanceFailures() int32 {
+	return p.MaxPerInstanceFailures
+}
+
+func (p *JobUpdateSettings) GetMaxFailedInstances() int32 {
+	return p.MaxFailedInstances
+}
+
+func (p *JobUpdateSettings) GetMinWaitInInstanceRunningMs() int32 {
+	return p.MinWaitInInstanceRunningMs
+}
+
+func (p *JobUpdateSettings) GetRollbackOnFailure() bool {
+	return p.RollbackOnFailure
+}
+
+func (p *JobUpdateSettings) GetUpdateOnlyTheseInstances() map[*Range]bool {
+	return p.UpdateOnlyTheseInstances
+}
+
+func (p *JobUpdateSettings) GetWaitForBatchCompletion() bool {
+	return p.WaitForBatchCompletion
+}
+
+var JobUpdateSettings_BlockIfNoPulsesAfterMs_DEFAULT int32
+
+func (p *JobUpdateSettings) GetBlockIfNoPulsesAfterMs() int32 {
+	if !p.IsSetBlockIfNoPulsesAfterMs() {
+		return JobUpdateSettings_BlockIfNoPulsesAfterMs_DEFAULT
+	}
+	return *p.BlockIfNoPulsesAfterMs
+}
+func (p *JobUpdateSettings) IsSetBlockIfNoPulsesAfterMs() bool {
+	return p.BlockIfNoPulsesAfterMs != nil
+}
+
+func (p *JobUpdateSettings) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 6:
+			if err := p.readField6(iprot); err != nil {
+				return err
+			}
+		case 7:
+			if err := p.readField7(iprot); err != nil {
+				return err
+			}
+		case 8:
+			if err := p.readField8(iprot); err != nil {
+				return err
+			}
+		case 9:
+			if err := p.readField9(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.UpdateGroupSize = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.MaxPerInstanceFailures = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.MaxFailedInstances = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField5(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 5: ", err)
+	} else {
+		p.MinWaitInInstanceRunningMs = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField6(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 6: ", err)
+	} else {
+		p.RollbackOnFailure = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField7(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Range]bool, size)
+	p.UpdateOnlyTheseInstances = tSet
+	for i := 0; i < size; i++ {
+		_elem25 := &Range{}
+		if err := _elem25.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem25), err)
+		}
+		p.UpdateOnlyTheseInstances[_elem25] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField8(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadBool(); err != nil {
+		return thrift.PrependError("error reading field 8: ", err)
+	} else {
+		p.WaitForBatchCompletion = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) readField9(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 9: ", err)
+	} else {
+		p.BlockIfNoPulsesAfterMs = &v
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateSettings"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField6(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField7(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField8(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField9(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSettings) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("updateGroupSize", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:updateGroupSize: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.UpdateGroupSize)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.updateGroupSize (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:updateGroupSize: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("maxPerInstanceFailures", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:maxPerInstanceFailures: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.MaxPerInstanceFailures)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.maxPerInstanceFailures (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:maxPerInstanceFailures: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("maxFailedInstances", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:maxFailedInstances: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.MaxFailedInstances)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.maxFailedInstances (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:maxFailedInstances: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("minWaitInInstanceRunningMs", thrift.I32, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:minWaitInInstanceRunningMs: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.MinWaitInInstanceRunningMs)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.minWaitInInstanceRunningMs (5) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:minWaitInInstanceRunningMs: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField6(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("rollbackOnFailure", thrift.BOOL, 6); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:rollbackOnFailure: ", p), err)
+	}
+	if err := oprot.WriteBool(bool(p.RollbackOnFailure)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.rollbackOnFailure (6) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:rollbackOnFailure: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField7(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("updateOnlyTheseInstances", thrift.SET, 7); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:updateOnlyTheseInstances: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.UpdateOnlyTheseInstances)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.UpdateOnlyTheseInstances {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 7:updateOnlyTheseInstances: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField8(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("waitForBatchCompletion", thrift.BOOL, 8); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:waitForBatchCompletion: ", p), err)
+	}
+	if err := oprot.WriteBool(bool(p.WaitForBatchCompletion)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.waitForBatchCompletion (8) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 8:waitForBatchCompletion: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) writeField9(oprot thrift.TProtocol) (err error) {
+	if p.IsSetBlockIfNoPulsesAfterMs() {
+		if err := oprot.WriteFieldBegin("blockIfNoPulsesAfterMs", thrift.I32, 9); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:blockIfNoPulsesAfterMs: ", p), err)
+		}
+		if err := oprot.WriteI32(int32(*p.BlockIfNoPulsesAfterMs)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.blockIfNoPulsesAfterMs (9) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 9:blockIfNoPulsesAfterMs: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *JobUpdateSettings) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateSettings(%+v)", *p)
+}
+
+// Event marking a state transition in job update lifecycle.
+//
+// Attributes:
+//  - Status: Update status.
+//  - TimestampMs: Epoch timestamp in milliseconds.
+//  - User: User who performed this event (if user-initiated).
+//  - Message: Message from the user (for user-initiated transitions) or the scheduler about why the state was
+// changed.
+type JobUpdateEvent struct {
+	Status      JobUpdateStatus `thrift:"status,1" json:"status"`
+	TimestampMs int64           `thrift:"timestampMs,2" json:"timestampMs"`
+	User        *string         `thrift:"user,3" json:"user,omitempty"`
+	Message     *string         `thrift:"message,4" json:"message,omitempty"`
+}
+
+func NewJobUpdateEvent() *JobUpdateEvent {
+	return &JobUpdateEvent{}
+}
+
+func (p *JobUpdateEvent) GetStatus() JobUpdateStatus {
+	return p.Status
+}
+
+func (p *JobUpdateEvent) GetTimestampMs() int64 {
+	return p.TimestampMs
+}
+
+var JobUpdateEvent_User_DEFAULT string
+
+func (p *JobUpdateEvent) GetUser() string {
+	if !p.IsSetUser() {
+		return JobUpdateEvent_User_DEFAULT
+	}
+	return *p.User
+}
+
+var JobUpdateEvent_Message_DEFAULT string
+
+func (p *JobUpdateEvent) GetMessage() string {
+	if !p.IsSetMessage() {
+		return JobUpdateEvent_Message_DEFAULT
+	}
+	return *p.Message
+}
+func (p *JobUpdateEvent) IsSetUser() bool {
+	return p.User != nil
+}
+
+func (p *JobUpdateEvent) IsSetMessage() bool {
+	return p.Message != nil
+}
+
+func (p *JobUpdateEvent) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateEvent) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		temp := JobUpdateStatus(v)
+		p.Status = temp
+	}
+	return nil
+}
+
+func (p *JobUpdateEvent) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.TimestampMs = v
+	}
+	return nil
+}
+
+func (p *JobUpdateEvent) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.User = &v
+	}
+	return nil
+}
+
+func (p *JobUpdateEvent) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.Message = &v
+	}
+	return nil
+}
+
+func (p *JobUpdateEvent) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateEvent"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateEvent) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("status", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:status: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Status)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.status (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:status: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateEvent) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("timestampMs", thrift.I64, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:timestampMs: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.TimestampMs)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.timestampMs (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:timestampMs: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateEvent) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetUser() {
+		if err := oprot.WriteFieldBegin("user", thrift.STRING, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:user: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.User)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.user (3) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:user: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *JobUpdateEvent) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMessage() {
+		if err := oprot.WriteFieldBegin("message", thrift.STRING, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:message: ", p), err)
+		}
+		if err := oprot.WriteString(string(*p.Message)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T.message (4) field write error: ", p), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:message: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *JobUpdateEvent) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateEvent(%+v)", *p)
+}
+
+// Event marking a state transition in job instance update lifecycle.
+//
+// Attributes:
+//  - InstanceId: Job instance ID.
+//  - TimestampMs: Epoch timestamp in milliseconds.
+//  - Action: Job update action taken on the instance.
+type JobInstanceUpdateEvent struct {
+	InstanceId  int32           `thrift:"instanceId,1" json:"instanceId"`
+	TimestampMs int64           `thrift:"timestampMs,2" json:"timestampMs"`
+	Action      JobUpdateAction `thrift:"action,3" json:"action"`
+}
+
+func NewJobInstanceUpdateEvent() *JobInstanceUpdateEvent {
+	return &JobInstanceUpdateEvent{}
+}
+
+func (p *JobInstanceUpdateEvent) GetInstanceId() int32 {
+	return p.InstanceId
+}
+
+func (p *JobInstanceUpdateEvent) GetTimestampMs() int64 {
+	return p.TimestampMs
+}
+
+func (p *JobInstanceUpdateEvent) GetAction() JobUpdateAction {
+	return p.Action
+}
+func (p *JobInstanceUpdateEvent) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobInstanceUpdateEvent) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.InstanceId = v
+	}
+	return nil
+}
+
+func (p *JobInstanceUpdateEvent) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.TimestampMs = v
+	}
+	return nil
+}
+
+func (p *JobInstanceUpdateEvent) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		temp := JobUpdateAction(v)
+		p.Action = temp
+	}
+	return nil
+}
+
+func (p *JobInstanceUpdateEvent) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobInstanceUpdateEvent"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobInstanceUpdateEvent) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceId", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:instanceId: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.InstanceId)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.instanceId (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:instanceId: ", p), err)
+	}
+	return err
+}
+
+func (p *JobInstanceUpdateEvent) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("timestampMs", thrift.I64, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:timestampMs: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.TimestampMs)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.timestampMs (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:timestampMs: ", p), err)
+	}
+	return err
+}
+
+func (p *JobInstanceUpdateEvent) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("action", thrift.I32, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:action: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Action)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.action (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:action: ", p), err)
+	}
+	return err
+}
+
+func (p *JobInstanceUpdateEvent) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobInstanceUpdateEvent(%+v)", *p)
+}
+
+// Maps instance IDs to TaskConfigs it.
+//
+// Attributes:
+//  - Task: A TaskConfig associated with instances.
+//  - Instances: Instances associated with the TaskConfig.
+type InstanceTaskConfig struct {
+	Task      *TaskConfig     `thrift:"task,1" json:"task"`
+	Instances map[*Range]bool `thrift:"instances,2" json:"instances"`
+}
+
+func NewInstanceTaskConfig() *InstanceTaskConfig {
+	return &InstanceTaskConfig{}
+}
+
+var InstanceTaskConfig_Task_DEFAULT *TaskConfig
+
+func (p *InstanceTaskConfig) GetTask() *TaskConfig {
+	if !p.IsSetTask() {
+		return InstanceTaskConfig_Task_DEFAULT
+	}
+	return p.Task
+}
+
+func (p *InstanceTaskConfig) GetInstances() map[*Range]bool {
+	return p.Instances
+}
+func (p *InstanceTaskConfig) IsSetTask() bool {
+	return p.Task != nil
+}
+
+func (p *InstanceTaskConfig) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *InstanceTaskConfig) readField1(iprot thrift.TProtocol) error {
+	p.Task = &TaskConfig{}
+	if err := p.Task.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Task), err)
+	}
+	return nil
+}
+
+func (p *InstanceTaskConfig) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*Range]bool, size)
+	p.Instances = tSet
+	for i := 0; i < size; i++ {
+		_elem26 := &Range{}
+		if err := _elem26.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem26), err)
+		}
+		p.Instances[_elem26] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *InstanceTaskConfig) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("InstanceTaskConfig"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *InstanceTaskConfig) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("task", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:task: ", p), err)
+	}
+	if err := p.Task.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Task), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:task: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceTaskConfig) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instances", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:instances: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Instances)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Instances {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:instances: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceTaskConfig) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("InstanceTaskConfig(%+v)", *p)
+}
+
+// Current job update state including status and created/modified timestamps.
+//
+// Attributes:
+//  - Status: Current status of the update.
+//  - CreatedTimestampMs: Created timestamp in milliseconds.
+//  - LastModifiedTimestampMs: Last modified timestamp in milliseconds.
+type JobUpdateState struct {
+	Status                  JobUpdateStatus `thrift:"status,1" json:"status"`
+	CreatedTimestampMs      int64           `thrift:"createdTimestampMs,2" json:"createdTimestampMs"`
+	LastModifiedTimestampMs int64           `thrift:"lastModifiedTimestampMs,3" json:"lastModifiedTimestampMs"`
+}
+
+func NewJobUpdateState() *JobUpdateState {
+	return &JobUpdateState{}
+}
+
+func (p *JobUpdateState) GetStatus() JobUpdateStatus {
+	return p.Status
+}
+
+func (p *JobUpdateState) GetCreatedTimestampMs() int64 {
+	return p.CreatedTimestampMs
+}
+
+func (p *JobUpdateState) GetLastModifiedTimestampMs() int64 {
+	return p.LastModifiedTimestampMs
+}
+func (p *JobUpdateState) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateState) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		temp := JobUpdateStatus(v)
+		p.Status = temp
+	}
+	return nil
+}
+
+func (p *JobUpdateState) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.CreatedTimestampMs = v
+	}
+	return nil
+}
+
+func (p *JobUpdateState) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI64(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.LastModifiedTimestampMs = v
+	}
+	return nil
+}
+
+func (p *JobUpdateState) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateState"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateState) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("status", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:status: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Status)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.status (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:status: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateState) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("createdTimestampMs", thrift.I64, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:createdTimestampMs: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.CreatedTimestampMs)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.createdTimestampMs (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:createdTimestampMs: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateState) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("lastModifiedTimestampMs", thrift.I64, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:lastModifiedTimestampMs: ", p), err)
+	}
+	if err := oprot.WriteI64(int64(p.LastModifiedTimestampMs)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.lastModifiedTimestampMs (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:lastModifiedTimestampMs: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateState) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateState(%+v)", *p)
+}
+
+// Summary of the job update including job key, user and current state.
+//
+// Attributes:
+//  - Key: Unique identifier for the update.
+//  - User: User initiated an update.
+//  - State: Current job update state.
+type JobUpdateSummary struct {
+	// unused fields # 1 to 2
+	User  string          `thrift:"user,3" json:"user"`
+	State *JobUpdateState `thrift:"state,4" json:"state"`
+	Key   *JobUpdateKey   `thrift:"key,5" json:"key"`
+}
+
+func NewJobUpdateSummary() *JobUpdateSummary {
+	return &JobUpdateSummary{}
+}
+
+var JobUpdateSummary_Key_DEFAULT *JobUpdateKey
+
+func (p *JobUpdateSummary) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return JobUpdateSummary_Key_DEFAULT
+	}
+	return p.Key
+}
+
+func (p *JobUpdateSummary) GetUser() string {
+	return p.User
+}
+
+var JobUpdateSummary_State_DEFAULT *JobUpdateState
+
+func (p *JobUpdateSummary) GetState() *JobUpdateState {
+	if !p.IsSetState() {
+		return JobUpdateSummary_State_DEFAULT
+	}
+	return p.State
+}
+func (p *JobUpdateSummary) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *JobUpdateSummary) IsSetState() bool {
+	return p.State != nil
+}
+
+func (p *JobUpdateSummary) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSummary) readField5(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSummary) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.User = v
+	}
+	return nil
+}
+
+func (p *JobUpdateSummary) readField4(iprot thrift.TProtocol) error {
+	p.State = &JobUpdateState{}
+	if err := p.State.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.State), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSummary) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateSummary"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateSummary) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("user", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:user: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.User)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.user (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:user: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSummary) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("state", thrift.STRUCT, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:state: ", p), err)
+	}
+	if err := p.State.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.State), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:state: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSummary) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:key: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateSummary) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateSummary(%+v)", *p)
+}
+
+// Update configuration and setting details.
+//
+// Attributes:
+//  - InitialState: Actual InstanceId -> TaskConfig mapping when the update was requested.
+//  - DesiredState: Desired configuration when the update completes.
+//  - Settings: Update specific settings.
+type JobUpdateInstructions struct {
+	InitialState map[*InstanceTaskConfig]bool `thrift:"initialState,1" json:"initialState"`
+	DesiredState *InstanceTaskConfig          `thrift:"desiredState,2" json:"desiredState"`
+	Settings     *JobUpdateSettings           `thrift:"settings,3" json:"settings"`
+}
+
+func NewJobUpdateInstructions() *JobUpdateInstructions {
+	return &JobUpdateInstructions{}
+}
+
+func (p *JobUpdateInstructions) GetInitialState() map[*InstanceTaskConfig]bool {
+	return p.InitialState
+}
+
+var JobUpdateInstructions_DesiredState_DEFAULT *InstanceTaskConfig
+
+func (p *JobUpdateInstructions) GetDesiredState() *InstanceTaskConfig {
+	if !p.IsSetDesiredState() {
+		return JobUpdateInstructions_DesiredState_DEFAULT
+	}
+	return p.DesiredState
+}
+
+var JobUpdateInstructions_Settings_DEFAULT *JobUpdateSettings
+
+func (p *JobUpdateInstructions) GetSettings() *JobUpdateSettings {
+	if !p.IsSetSettings() {
+		return JobUpdateInstructions_Settings_DEFAULT
+	}
+	return p.Settings
+}
+func (p *JobUpdateInstructions) IsSetDesiredState() bool {
+	return p.DesiredState != nil
+}
+
+func (p *JobUpdateInstructions) IsSetSettings() bool {
+	return p.Settings != nil
+}
+
+func (p *JobUpdateInstructions) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateInstructions) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*InstanceTaskConfig]bool, size)
+	p.InitialState = tSet
+	for i := 0; i < size; i++ {
+		_elem27 := &InstanceTaskConfig{}
+		if err := _elem27.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem27), err)
+		}
+		p.InitialState[_elem27] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateInstructions) readField2(iprot thrift.TProtocol) error {
+	p.DesiredState = &InstanceTaskConfig{}
+	if err := p.DesiredState.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.DesiredState), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateInstructions) readField3(iprot thrift.TProtocol) error {
+	p.Settings = &JobUpdateSettings{}
+	if err := p.Settings.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Settings), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateInstructions) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateInstructions"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateInstructions) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("initialState", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:initialState: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.InitialState)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.InitialState {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:initialState: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateInstructions) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("desiredState", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:desiredState: ", p), err)
+	}
+	if err := p.DesiredState.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.DesiredState), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:desiredState: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateInstructions) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("settings", thrift.STRUCT, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:settings: ", p), err)
+	}
+	if err := p.Settings.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Settings), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:settings: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateInstructions) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateInstructions(%+v)", *p)
+}
+
+// Full definition of the job update.
+//
+// Attributes:
+//  - Summary: Update summary.
+//  - Instructions: Update configuration.
+type JobUpdate struct {
+	Summary      *JobUpdateSummary      `thrift:"summary,1" json:"summary"`
+	Instructions *JobUpdateInstructions `thrift:"instructions,2" json:"instructions"`
+}
+
+func NewJobUpdate() *JobUpdate {
+	return &JobUpdate{}
+}
+
+var JobUpdate_Summary_DEFAULT *JobUpdateSummary
+
+func (p *JobUpdate) GetSummary() *JobUpdateSummary {
+	if !p.IsSetSummary() {
+		return JobUpdate_Summary_DEFAULT
+	}
+	return p.Summary
+}
+
+var JobUpdate_Instructions_DEFAULT *JobUpdateInstructions
+
+func (p *JobUpdate) GetInstructions() *JobUpdateInstructions {
+	if !p.IsSetInstructions() {
+		return JobUpdate_Instructions_DEFAULT
+	}
+	return p.Instructions
+}
+func (p *JobUpdate) IsSetSummary() bool {
+	return p.Summary != nil
+}
+
+func (p *JobUpdate) IsSetInstructions() bool {
+	return p.Instructions != nil
+}
+
+func (p *JobUpdate) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdate) readField1(iprot thrift.TProtocol) error {
+	p.Summary = &JobUpdateSummary{}
+	if err := p.Summary.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Summary), err)
+	}
+	return nil
+}
+
+func (p *JobUpdate) readField2(iprot thrift.TProtocol) error {
+	p.Instructions = &JobUpdateInstructions{}
+	if err := p.Instructions.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Instructions), err)
+	}
+	return nil
+}
+
+func (p *JobUpdate) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdate"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdate) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("summary", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:summary: ", p), err)
+	}
+	if err := p.Summary.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Summary), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:summary: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdate) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instructions", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:instructions: ", p), err)
+	}
+	if err := p.Instructions.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Instructions), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:instructions: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdate) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdate(%+v)", *p)
+}
+
+// Attributes:
+//  - Update: Update definition.
+//  - UpdateEvents: History for this update.
+//  - InstanceEvents: History for the individual instances updated.
+type JobUpdateDetails struct {
+	Update         *JobUpdate                `thrift:"update,1" json:"update"`
+	UpdateEvents   []*JobUpdateEvent         `thrift:"updateEvents,2" json:"updateEvents"`
+	InstanceEvents []*JobInstanceUpdateEvent `thrift:"instanceEvents,3" json:"instanceEvents"`
+}
+
+func NewJobUpdateDetails() *JobUpdateDetails {
+	return &JobUpdateDetails{}
+}
+
+var JobUpdateDetails_Update_DEFAULT *JobUpdate
+
+func (p *JobUpdateDetails) GetUpdate() *JobUpdate {
+	if !p.IsSetUpdate() {
+		return JobUpdateDetails_Update_DEFAULT
+	}
+	return p.Update
+}
+
+func (p *JobUpdateDetails) GetUpdateEvents() []*JobUpdateEvent {
+	return p.UpdateEvents
+}
+
+func (p *JobUpdateDetails) GetInstanceEvents() []*JobInstanceUpdateEvent {
+	return p.InstanceEvents
+}
+func (p *JobUpdateDetails) IsSetUpdate() bool {
+	return p.Update != nil
+}
+
+func (p *JobUpdateDetails) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateDetails) readField1(iprot thrift.TProtocol) error {
+	p.Update = &JobUpdate{}
+	if err := p.Update.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Update), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateDetails) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*JobUpdateEvent, 0, size)
+	p.UpdateEvents = tSlice
+	for i := 0; i < size; i++ {
+		_elem28 := &JobUpdateEvent{}
+		if err := _elem28.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem28), err)
+		}
+		p.UpdateEvents = append(p.UpdateEvents, _elem28)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateDetails) readField3(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*JobInstanceUpdateEvent, 0, size)
+	p.InstanceEvents = tSlice
+	for i := 0; i < size; i++ {
+		_elem29 := &JobInstanceUpdateEvent{}
+		if err := _elem29.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem29), err)
+		}
+		p.InstanceEvents = append(p.InstanceEvents, _elem29)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateDetails) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateDetails"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateDetails) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("update", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:update: ", p), err)
+	}
+	if err := p.Update.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Update), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:update: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateDetails) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("updateEvents", thrift.LIST, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:updateEvents: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.UpdateEvents)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.UpdateEvents {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:updateEvents: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateDetails) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceEvents", thrift.LIST, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:instanceEvents: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.InstanceEvents)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.InstanceEvents {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:instanceEvents: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateDetails) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateDetails(%+v)", *p)
+}
+
+// A request to update the following instances of an existing job. Used by startUpdate.
+//
+// Attributes:
+//  - TaskConfig: Desired TaskConfig to apply.
+//  - InstanceCount: Desired number of instances of the task config.
+//  - Settings: Update settings and limits.
+type JobUpdateRequest struct {
+	TaskConfig    *TaskConfig        `thrift:"taskConfig,1" json:"taskConfig"`
+	InstanceCount int32              `thrift:"instanceCount,2" json:"instanceCount"`
+	Settings      *JobUpdateSettings `thrift:"settings,3" json:"settings"`
+}
+
+func NewJobUpdateRequest() *JobUpdateRequest {
+	return &JobUpdateRequest{}
+}
+
+var JobUpdateRequest_TaskConfig_DEFAULT *TaskConfig
+
+func (p *JobUpdateRequest) GetTaskConfig() *TaskConfig {
+	if !p.IsSetTaskConfig() {
+		return JobUpdateRequest_TaskConfig_DEFAULT
+	}
+	return p.TaskConfig
+}
+
+func (p *JobUpdateRequest) GetInstanceCount() int32 {
+	return p.InstanceCount
+}
+
+var JobUpdateRequest_Settings_DEFAULT *JobUpdateSettings
+
+func (p *JobUpdateRequest) GetSettings() *JobUpdateSettings {
+	if !p.IsSetSettings() {
+		return JobUpdateRequest_Settings_DEFAULT
+	}
+	return p.Settings
+}
+func (p *JobUpdateRequest) IsSetTaskConfig() bool {
+	return p.TaskConfig != nil
+}
+
+func (p *JobUpdateRequest) IsSetSettings() bool {
+	return p.Settings != nil
+}
+
+func (p *JobUpdateRequest) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateRequest) readField1(iprot thrift.TProtocol) error {
+	p.TaskConfig = &TaskConfig{}
+	if err := p.TaskConfig.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.TaskConfig), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateRequest) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.InstanceCount = v
+	}
+	return nil
+}
+
+func (p *JobUpdateRequest) readField3(iprot thrift.TProtocol) error {
+	p.Settings = &JobUpdateSettings{}
+	if err := p.Settings.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Settings), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateRequest) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateRequest"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateRequest) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("taskConfig", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:taskConfig: ", p), err)
+	}
+	if err := p.TaskConfig.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.TaskConfig), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:taskConfig: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateRequest) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceCount", thrift.I32, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:instanceCount: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.InstanceCount)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.instanceCount (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:instanceCount: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateRequest) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("settings", thrift.STRUCT, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:settings: ", p), err)
+	}
+	if err := p.Settings.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Settings), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:settings: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateRequest) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateRequest(%+v)", *p)
+}
+
+// Contains a set of restrictions on matching job updates where all restrictions must be met
+// (terms are AND'ed together).
+//
+// Attributes:
+//  - Role: Job role.
+//  - Key: Unique identifier for a job update.
+//  - JobKey: Job key.
+//  - User: User who created the update.
+//  - UpdateStatuses: Set of update statuses.
+//  - Offset: Offset to serve data from. Used by pagination.
+//  - Limit: Number or records to serve. Used by pagination.
+type JobUpdateQuery struct {
+	// unused field # 1
+	Role           string                   `thrift:"role,2" json:"role"`
+	JobKey         *JobKey                  `thrift:"jobKey,3" json:"jobKey"`
+	User           string                   `thrift:"user,4" json:"user"`
+	UpdateStatuses map[JobUpdateStatus]bool `thrift:"updateStatuses,5" json:"updateStatuses"`
+	Offset         int32                    `thrift:"offset,6" json:"offset"`
+	Limit          int32                    `thrift:"limit,7" json:"limit"`
+	Key            *JobUpdateKey            `thrift:"key,8" json:"key"`
+}
+
+func NewJobUpdateQuery() *JobUpdateQuery {
+	return &JobUpdateQuery{}
+}
+
+func (p *JobUpdateQuery) GetRole() string {
+	return p.Role
+}
+
+var JobUpdateQuery_Key_DEFAULT *JobUpdateKey
+
+func (p *JobUpdateQuery) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return JobUpdateQuery_Key_DEFAULT
+	}
+	return p.Key
+}
+
+var JobUpdateQuery_JobKey_DEFAULT *JobKey
+
+func (p *JobUpdateQuery) GetJobKey() *JobKey {
+	if !p.IsSetJobKey() {
+		return JobUpdateQuery_JobKey_DEFAULT
+	}
+	return p.JobKey
+}
+
+func (p *JobUpdateQuery) GetUser() string {
+	return p.User
+}
+
+func (p *JobUpdateQuery) GetUpdateStatuses() map[JobUpdateStatus]bool {
+	return p.UpdateStatuses
+}
+
+func (p *JobUpdateQuery) GetOffset() int32 {
+	return p.Offset
+}
+
+func (p *JobUpdateQuery) GetLimit() int32 {
+	return p.Limit
+}
+func (p *JobUpdateQuery) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *JobUpdateQuery) IsSetJobKey() bool {
+	return p.JobKey != nil
+}
+
+func (p *JobUpdateQuery) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 8:
+			if err := p.readField8(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 6:
+			if err := p.readField6(iprot); err != nil {
+				return err
+			}
+		case 7:
+			if err := p.readField7(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField2(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 2: ", err)
+	} else {
+		p.Role = v
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField8(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField3(iprot thrift.TProtocol) error {
+	p.JobKey = &JobKey{}
+	if err := p.JobKey.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.JobKey), err)
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField4(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 4: ", err)
+	} else {
+		p.User = v
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField5(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[JobUpdateStatus]bool, size)
+	p.UpdateStatuses = tSet
+	for i := 0; i < size; i++ {
+		var _elem30 JobUpdateStatus
+		if v, err := iprot.ReadI32(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			temp := JobUpdateStatus(v)
+			_elem30 = temp
+		}
+		p.UpdateStatuses[_elem30] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField6(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 6: ", err)
+	} else {
+		p.Offset = v
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) readField7(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 7: ", err)
+	} else {
+		p.Limit = v
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobUpdateQuery"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField6(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField7(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField8(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobUpdateQuery) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("role", thrift.STRING, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:role: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Role)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.role (2) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:role: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("jobKey", thrift.STRUCT, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:jobKey: ", p), err)
+	}
+	if err := p.JobKey.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.JobKey), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:jobKey: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("user", thrift.STRING, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:user: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.User)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.user (4) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:user: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("updateStatuses", thrift.SET, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:updateStatuses: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.I32, len(p.UpdateStatuses)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.UpdateStatuses {
+		if err := oprot.WriteI32(int32(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:updateStatuses: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) writeField6(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("offset", thrift.I32, 6); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:offset: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Offset)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.offset (6) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:offset: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) writeField7(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("limit", thrift.I32, 7); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:limit: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Limit)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.limit (7) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 7:limit: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) writeField8(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 8); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 8:key: ", p), err)
+	}
+	return err
+}
+
+func (p *JobUpdateQuery) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobUpdateQuery(%+v)", *p)
+}
+
+// Attributes:
+//  - Backups
+type ListBackupsResult_ struct {
+	Backups map[string]bool `thrift:"backups,1" json:"backups"`
+}
+
+func NewListBackupsResult_() *ListBackupsResult_ {
+	return &ListBackupsResult_{}
+}
+
+func (p *ListBackupsResult_) GetBackups() map[string]bool {
+	return p.Backups
+}
+func (p *ListBackupsResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ListBackupsResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[string]bool, size)
+	p.Backups = tSet
+	for i := 0; i < size; i++ {
+		var _elem31 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_elem31 = v
+		}
+		p.Backups[_elem31] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *ListBackupsResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ListBackupsResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ListBackupsResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("backups", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:backups: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRING, len(p.Backups)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Backups {
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:backups: ", p), err)
+	}
+	return err
+}
+
+func (p *ListBackupsResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ListBackupsResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Statuses
+type StartMaintenanceResult_ struct {
+	Statuses map[*HostStatus]bool `thrift:"statuses,1" json:"statuses"`
+}
+
+func NewStartMaintenanceResult_() *StartMaintenanceResult_ {
+	return &StartMaintenanceResult_{}
+}
+
+func (p *StartMaintenanceResult_) GetStatuses() map[*HostStatus]bool {
+	return p.Statuses
+}
+func (p *StartMaintenanceResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *StartMaintenanceResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*HostStatus]bool, size)
+	p.Statuses = tSet
+	for i := 0; i < size; i++ {
+		_elem32 := &HostStatus{}
+		if err := _elem32.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem32), err)
+		}
+		p.Statuses[_elem32] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *StartMaintenanceResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("StartMaintenanceResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *StartMaintenanceResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("statuses", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:statuses: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Statuses)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Statuses {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:statuses: ", p), err)
+	}
+	return err
+}
+
+func (p *StartMaintenanceResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("StartMaintenanceResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Statuses
+type DrainHostsResult_ struct {
+	Statuses map[*HostStatus]bool `thrift:"statuses,1" json:"statuses"`
+}
+
+func NewDrainHostsResult_() *DrainHostsResult_ {
+	return &DrainHostsResult_{}
+}
+
+func (p *DrainHostsResult_) GetStatuses() map[*HostStatus]bool {
+	return p.Statuses
+}
+func (p *DrainHostsResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *DrainHostsResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*HostStatus]bool, size)
+	p.Statuses = tSet
+	for i := 0; i < size; i++ {
+		_elem33 := &HostStatus{}
+		if err := _elem33.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem33), err)
+		}
+		p.Statuses[_elem33] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *DrainHostsResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("DrainHostsResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *DrainHostsResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("statuses", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:statuses: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Statuses)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Statuses {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:statuses: ", p), err)
+	}
+	return err
+}
+
+func (p *DrainHostsResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("DrainHostsResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Tasks
+type QueryRecoveryResult_ struct {
+	Tasks map[*ScheduledTask]bool `thrift:"tasks,1" json:"tasks"`
+}
+
+func NewQueryRecoveryResult_() *QueryRecoveryResult_ {
+	return &QueryRecoveryResult_{}
+}
+
+func (p *QueryRecoveryResult_) GetTasks() map[*ScheduledTask]bool {
+	return p.Tasks
+}
+func (p *QueryRecoveryResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *QueryRecoveryResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*ScheduledTask]bool, size)
+	p.Tasks = tSet
+	for i := 0; i < size; i++ {
+		_elem34 := &ScheduledTask{}
+		if err := _elem34.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem34), err)
+		}
+		p.Tasks[_elem34] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *QueryRecoveryResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("QueryRecoveryResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *QueryRecoveryResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("tasks", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:tasks: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Tasks)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Tasks {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:tasks: ", p), err)
+	}
+	return err
+}
+
+func (p *QueryRecoveryResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("QueryRecoveryResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Statuses
+type MaintenanceStatusResult_ struct {
+	Statuses map[*HostStatus]bool `thrift:"statuses,1" json:"statuses"`
+}
+
+func NewMaintenanceStatusResult_() *MaintenanceStatusResult_ {
+	return &MaintenanceStatusResult_{}
+}
+
+func (p *MaintenanceStatusResult_) GetStatuses() map[*HostStatus]bool {
+	return p.Statuses
+}
+func (p *MaintenanceStatusResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *MaintenanceStatusResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*HostStatus]bool, size)
+	p.Statuses = tSet
+	for i := 0; i < size; i++ {
+		_elem35 := &HostStatus{}
+		if err := _elem35.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem35), err)
+		}
+		p.Statuses[_elem35] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *MaintenanceStatusResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("MaintenanceStatusResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *MaintenanceStatusResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("statuses", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:statuses: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Statuses)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Statuses {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:statuses: ", p), err)
+	}
+	return err
+}
+
+func (p *MaintenanceStatusResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("MaintenanceStatusResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Statuses
+type EndMaintenanceResult_ struct {
+	Statuses map[*HostStatus]bool `thrift:"statuses,1" json:"statuses"`
+}
+
+func NewEndMaintenanceResult_() *EndMaintenanceResult_ {
+	return &EndMaintenanceResult_{}
+}
+
+func (p *EndMaintenanceResult_) GetStatuses() map[*HostStatus]bool {
+	return p.Statuses
+}
+func (p *EndMaintenanceResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *EndMaintenanceResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*HostStatus]bool, size)
+	p.Statuses = tSet
+	for i := 0; i < size; i++ {
+		_elem36 := &HostStatus{}
+		if err := _elem36.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem36), err)
+		}
+		p.Statuses[_elem36] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *EndMaintenanceResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("EndMaintenanceResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *EndMaintenanceResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("statuses", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:statuses: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Statuses)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Statuses {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:statuses: ", p), err)
+	}
+	return err
+}
+
+func (p *EndMaintenanceResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("EndMaintenanceResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Summaries
+type RoleSummaryResult_ struct {
+	Summaries map[*RoleSummary]bool `thrift:"summaries,1" json:"summaries"`
+}
+
+func NewRoleSummaryResult_() *RoleSummaryResult_ {
+	return &RoleSummaryResult_{}
+}
+
+func (p *RoleSummaryResult_) GetSummaries() map[*RoleSummary]bool {
+	return p.Summaries
+}
+func (p *RoleSummaryResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *RoleSummaryResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*RoleSummary]bool, size)
+	p.Summaries = tSet
+	for i := 0; i < size; i++ {
+		_elem37 := &RoleSummary{}
+		if err := _elem37.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem37), err)
+		}
+		p.Summaries[_elem37] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *RoleSummaryResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("RoleSummaryResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *RoleSummaryResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("summaries", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:summaries: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Summaries)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Summaries {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:summaries: ", p), err)
+	}
+	return err
+}
+
+func (p *RoleSummaryResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("RoleSummaryResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Summaries
+type JobSummaryResult_ struct {
+	Summaries map[*JobSummary]bool `thrift:"summaries,1" json:"summaries"`
+}
+
+func NewJobSummaryResult_() *JobSummaryResult_ {
+	return &JobSummaryResult_{}
+}
+
+func (p *JobSummaryResult_) GetSummaries() map[*JobSummary]bool {
+	return p.Summaries
+}
+func (p *JobSummaryResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobSummaryResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*JobSummary]bool, size)
+	p.Summaries = tSet
+	for i := 0; i < size; i++ {
+		_elem38 := &JobSummary{}
+		if err := _elem38.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem38), err)
+		}
+		p.Summaries[_elem38] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *JobSummaryResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobSummaryResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobSummaryResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("summaries", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:summaries: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Summaries)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Summaries {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:summaries: ", p), err)
+	}
+	return err
+}
+
+func (p *JobSummaryResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobSummaryResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Summary
+type ConfigSummaryResult_ struct {
+	Summary *ConfigSummary `thrift:"summary,1" json:"summary"`
+}
+
+func NewConfigSummaryResult_() *ConfigSummaryResult_ {
+	return &ConfigSummaryResult_{}
+}
+
+var ConfigSummaryResult__Summary_DEFAULT *ConfigSummary
+
+func (p *ConfigSummaryResult_) GetSummary() *ConfigSummary {
+	if !p.IsSetSummary() {
+		return ConfigSummaryResult__Summary_DEFAULT
+	}
+	return p.Summary
+}
+func (p *ConfigSummaryResult_) IsSetSummary() bool {
+	return p.Summary != nil
+}
+
+func (p *ConfigSummaryResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ConfigSummaryResult_) readField1(iprot thrift.TProtocol) error {
+	p.Summary = &ConfigSummary{}
+	if err := p.Summary.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Summary), err)
+	}
+	return nil
+}
+
+func (p *ConfigSummaryResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ConfigSummaryResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ConfigSummaryResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("summary", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:summary: ", p), err)
+	}
+	if err := p.Summary.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Summary), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:summary: ", p), err)
+	}
+	return err
+}
+
+func (p *ConfigSummaryResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ConfigSummaryResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Reasons
+type GetPendingReasonResult_ struct {
+	Reasons map[*PendingReason]bool `thrift:"reasons,1" json:"reasons"`
+}
+
+func NewGetPendingReasonResult_() *GetPendingReasonResult_ {
+	return &GetPendingReasonResult_{}
+}
+
+func (p *GetPendingReasonResult_) GetReasons() map[*PendingReason]bool {
+	return p.Reasons
+}
+func (p *GetPendingReasonResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetPendingReasonResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*PendingReason]bool, size)
+	p.Reasons = tSet
+	for i := 0; i < size; i++ {
+		_elem39 := &PendingReason{}
+		if err := _elem39.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem39), err)
+		}
+		p.Reasons[_elem39] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetPendingReasonResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetPendingReasonResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetPendingReasonResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("reasons", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:reasons: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Reasons)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Reasons {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:reasons: ", p), err)
+	}
+	return err
+}
+
+func (p *GetPendingReasonResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetPendingReasonResult_(%+v)", *p)
+}
+
+// Result of the startUpdate call.
+//
+// Attributes:
+//  - Key: Unique identifier for the job update.
+type StartJobUpdateResult_ struct {
+	Key *JobUpdateKey `thrift:"key,1" json:"key"`
+}
+
+func NewStartJobUpdateResult_() *StartJobUpdateResult_ {
+	return &StartJobUpdateResult_{}
+}
+
+var StartJobUpdateResult__Key_DEFAULT *JobUpdateKey
+
+func (p *StartJobUpdateResult_) GetKey() *JobUpdateKey {
+	if !p.IsSetKey() {
+		return StartJobUpdateResult__Key_DEFAULT
+	}
+	return p.Key
+}
+func (p *StartJobUpdateResult_) IsSetKey() bool {
+	return p.Key != nil
+}
+
+func (p *StartJobUpdateResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *StartJobUpdateResult_) readField1(iprot thrift.TProtocol) error {
+	p.Key = &JobUpdateKey{}
+	if err := p.Key.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Key), err)
+	}
+	return nil
+}
+
+func (p *StartJobUpdateResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("StartJobUpdateResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *StartJobUpdateResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("key", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
+	}
+	if err := p.Key.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Key), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
+	}
+	return err
+}
+
+func (p *StartJobUpdateResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("StartJobUpdateResult_(%+v)", *p)
+}
+
+// Result of the getJobUpdateSummaries call.
+//
+// Attributes:
+//  - UpdateSummaries
+type GetJobUpdateSummariesResult_ struct {
+	UpdateSummaries []*JobUpdateSummary `thrift:"updateSummaries,1" json:"updateSummaries"`
+}
+
+func NewGetJobUpdateSummariesResult_() *GetJobUpdateSummariesResult_ {
+	return &GetJobUpdateSummariesResult_{}
+}
+
+func (p *GetJobUpdateSummariesResult_) GetUpdateSummaries() []*JobUpdateSummary {
+	return p.UpdateSummaries
+}
+func (p *GetJobUpdateSummariesResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateSummariesResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*JobUpdateSummary, 0, size)
+	p.UpdateSummaries = tSlice
+	for i := 0; i < size; i++ {
+		_elem40 := &JobUpdateSummary{}
+		if err := _elem40.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem40), err)
+		}
+		p.UpdateSummaries = append(p.UpdateSummaries, _elem40)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateSummariesResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetJobUpdateSummariesResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateSummariesResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("updateSummaries", thrift.LIST, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:updateSummaries: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.UpdateSummaries)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.UpdateSummaries {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:updateSummaries: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobUpdateSummariesResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetJobUpdateSummariesResult_(%+v)", *p)
+}
+
+// Result of the getJobUpdateDetails call.
+//
+// Attributes:
+//  - Details
+type GetJobUpdateDetailsResult_ struct {
+	Details *JobUpdateDetails `thrift:"details,1" json:"details"`
+}
+
+func NewGetJobUpdateDetailsResult_() *GetJobUpdateDetailsResult_ {
+	return &GetJobUpdateDetailsResult_{}
+}
+
+var GetJobUpdateDetailsResult__Details_DEFAULT *JobUpdateDetails
+
+func (p *GetJobUpdateDetailsResult_) GetDetails() *JobUpdateDetails {
+	if !p.IsSetDetails() {
+		return GetJobUpdateDetailsResult__Details_DEFAULT
+	}
+	return p.Details
+}
+func (p *GetJobUpdateDetailsResult_) IsSetDetails() bool {
+	return p.Details != nil
+}
+
+func (p *GetJobUpdateDetailsResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDetailsResult_) readField1(iprot thrift.TProtocol) error {
+	p.Details = &JobUpdateDetails{}
+	if err := p.Details.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Details), err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDetailsResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetJobUpdateDetailsResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDetailsResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("details", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:details: ", p), err)
+	}
+	if err := p.Details.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Details), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:details: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobUpdateDetailsResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetJobUpdateDetailsResult_(%+v)", *p)
+}
+
+// Result of the pulseJobUpdate call.
+//
+// Attributes:
+//  - Status
+type PulseJobUpdateResult_ struct {
+	Status JobUpdatePulseStatus `thrift:"status,1" json:"status"`
+}
+
+func NewPulseJobUpdateResult_() *PulseJobUpdateResult_ {
+	return &PulseJobUpdateResult_{}
+}
+
+func (p *PulseJobUpdateResult_) GetStatus() JobUpdatePulseStatus {
+	return p.Status
+}
+func (p *PulseJobUpdateResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *PulseJobUpdateResult_) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		temp := JobUpdatePulseStatus(v)
+		p.Status = temp
+	}
+	return nil
+}
+
+func (p *PulseJobUpdateResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("PulseJobUpdateResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *PulseJobUpdateResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("status", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:status: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.Status)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.status (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:status: ", p), err)
+	}
+	return err
+}
+
+func (p *PulseJobUpdateResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("PulseJobUpdateResult_(%+v)", *p)
+}
+
+// Attributes:
+//  - Add: Instance addition diff details.
+//  - Remove: Instance removal diff details.
+//  - Update: Instance update diff details.
+//  - Unchanged: Instances unchanged by the update.
+type GetJobUpdateDiffResult_ struct {
+	Add       map[*ConfigGroup]bool `thrift:"add,1" json:"add"`
+	Remove    map[*ConfigGroup]bool `thrift:"remove,2" json:"remove"`
+	Update    map[*ConfigGroup]bool `thrift:"update,3" json:"update"`
+	Unchanged map[*ConfigGroup]bool `thrift:"unchanged,4" json:"unchanged"`
+}
+
+func NewGetJobUpdateDiffResult_() *GetJobUpdateDiffResult_ {
+	return &GetJobUpdateDiffResult_{}
+}
+
+func (p *GetJobUpdateDiffResult_) GetAdd() map[*ConfigGroup]bool {
+	return p.Add
+}
+
+func (p *GetJobUpdateDiffResult_) GetRemove() map[*ConfigGroup]bool {
+	return p.Remove
+}
+
+func (p *GetJobUpdateDiffResult_) GetUpdate() map[*ConfigGroup]bool {
+	return p.Update
+}
+
+func (p *GetJobUpdateDiffResult_) GetUnchanged() map[*ConfigGroup]bool {
+	return p.Unchanged
+}
+func (p *GetJobUpdateDiffResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDiffResult_) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*ConfigGroup]bool, size)
+	p.Add = tSet
+	for i := 0; i < size; i++ {
+		_elem41 := &ConfigGroup{}
+		if err := _elem41.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem41), err)
+		}
+		p.Add[_elem41] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDiffResult_) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*ConfigGroup]bool, size)
+	p.Remove = tSet
+	for i := 0; i < size; i++ {
+		_elem42 := &ConfigGroup{}
+		if err := _elem42.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem42), err)
+		}
+		p.Remove[_elem42] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDiffResult_) readField3(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*ConfigGroup]bool, size)
+	p.Update = tSet
+	for i := 0; i < size; i++ {
+		_elem43 := &ConfigGroup{}
+		if err := _elem43.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem43), err)
+		}
+		p.Update[_elem43] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDiffResult_) readField4(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*ConfigGroup]bool, size)
+	p.Unchanged = tSet
+	for i := 0; i < size; i++ {
+		_elem44 := &ConfigGroup{}
+		if err := _elem44.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem44), err)
+		}
+		p.Unchanged[_elem44] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDiffResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetJobUpdateDiffResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetJobUpdateDiffResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("add", thrift.SET, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:add: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Add)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Add {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:add: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobUpdateDiffResult_) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("remove", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:remove: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Remove)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Remove {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:remove: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobUpdateDiffResult_) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("update", thrift.SET, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:update: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Update)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Update {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:update: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobUpdateDiffResult_) writeField4(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("unchanged", thrift.SET, 4); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:unchanged: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Unchanged)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Unchanged {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:unchanged: ", p), err)
+	}
+	return err
+}
+
+func (p *GetJobUpdateDiffResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetJobUpdateDiffResult_(%+v)", *p)
+}
+
+// Tier information.
+//
+// Attributes:
+//  - Name: Name of tier.
+//  - Settings: Tier attributes.
+type TierConfig struct {
+	Name     string            `thrift:"name,1" json:"name"`
+	Settings map[string]string `thrift:"settings,2" json:"settings"`
+}
+
+func NewTierConfig() *TierConfig {
+	return &TierConfig{}
+}
+
+func (p *TierConfig) GetName() string {
+	return p.Name
+}
+
+func (p *TierConfig) GetSettings() map[string]string {
+	return p.Settings
+}
+func (p *TierConfig) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *TierConfig) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Name = v
+	}
+	return nil
+}
+
+func (p *TierConfig) readField2(iprot thrift.TProtocol) error {
+	_, _, size, err := iprot.ReadMapBegin()
+	if err != nil {
+		return thrift.PrependError("error reading map begin: ", err)
+	}
+	tMap := make(map[string]string, size)
+	p.Settings = tMap
+	for i := 0; i < size; i++ {
+		var _key45 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_key45 = v
+		}
+		var _val46 string
+		if v, err := iprot.ReadString(); err != nil {
+			return thrift.PrependError("error reading field 0: ", err)
+		} else {
+			_val46 = v
+		}
+		p.Settings[_key45] = _val46
+	}
+	if err := iprot.ReadMapEnd(); err != nil {
+		return thrift.PrependError("error reading map end: ", err)
+	}
+	return nil
+}
+
+func (p *TierConfig) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("TierConfig"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *TierConfig) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("name", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:name: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Name)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.name (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:name: ", p), err)
+	}
+	return err
+}
+
+func (p *TierConfig) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("settings", thrift.MAP, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:settings: ", p), err)
+	}
+	if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.Settings)); err != nil {
+		return thrift.PrependError("error writing map begin: ", err)
+	}
+	for k, v := range p.Settings {
+		if err := oprot.WriteString(string(k)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+		if err := oprot.WriteString(string(v)); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", p), err)
+		}
+	}
+	if err := oprot.WriteMapEnd(); err != nil {
+		return thrift.PrependError("error writing map end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:settings: ", p), err)
+	}
+	return err
+}
+
+func (p *TierConfig) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("TierConfig(%+v)", *p)
+}
+
+// Result of the getTierConfigResult call.
+//
+// Attributes:
+//  - DefaultTierName: Name of the default tier.
+//  - Tiers: Set of tier configurations.
+type GetTierConfigResult_ struct {
+	DefaultTierName string               `thrift:"defaultTierName,1" json:"defaultTierName"`
+	Tiers           map[*TierConfig]bool `thrift:"tiers,2" json:"tiers"`
+}
+
+func NewGetTierConfigResult_() *GetTierConfigResult_ {
+	return &GetTierConfigResult_{}
+}
+
+func (p *GetTierConfigResult_) GetDefaultTierName() string {
+	return p.DefaultTierName
+}
+
+func (p *GetTierConfigResult_) GetTiers() map[*TierConfig]bool {
+	return p.Tiers
+}
+func (p *GetTierConfigResult_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *GetTierConfigResult_) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.DefaultTierName = v
+	}
+	return nil
+}
+
+func (p *GetTierConfigResult_) readField2(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadSetBegin()
+	if err != nil {
+		return thrift.PrependError("error reading set begin: ", err)
+	}
+	tSet := make(map[*TierConfig]bool, size)
+	p.Tiers = tSet
+	for i := 0; i < size; i++ {
+		_elem47 := &TierConfig{}
+		if err := _elem47.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem47), err)
+		}
+		p.Tiers[_elem47] = true
+	}
+	if err := iprot.ReadSetEnd(); err != nil {
+		return thrift.PrependError("error reading set end: ", err)
+	}
+	return nil
+}
+
+func (p *GetTierConfigResult_) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("GetTierConfigResult"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *GetTierConfigResult_) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("defaultTierName", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:defaultTierName: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.DefaultTierName)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.defaultTierName (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:defaultTierName: ", p), err)
+	}
+	return err
+}
+
+func (p *GetTierConfigResult_) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("tiers", thrift.SET, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:tiers: ", p), err)
+	}
+	if err := oprot.WriteSetBegin(thrift.STRUCT, len(p.Tiers)); err != nil {
+		return thrift.PrependError("error writing set begin: ", err)
+	}
+	for v, _ := range p.Tiers {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteSetEnd(); err != nil {
+		return thrift.PrependError("error writing set end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:tiers: ", p), err)
+	}
+	return err
+}
+
+func (p *GetTierConfigResult_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("GetTierConfigResult_(%+v)", *p)
+}
+
+// Information about the scheduler.
+//
+// Attributes:
+//  - ClusterName
+//  - StatsUrlPrefix: A url prefix for job container stats.
+type ServerInfo struct {
+	ClusterName string `thrift:"clusterName,1" json:"clusterName"`
+	// unused field # 2
+	StatsUrlPrefix string `thrift:"statsUrlPrefix,3" json:"statsUrlPrefix"`
+}
+
+func NewServerInfo() *ServerInfo {
+	return &ServerInfo{}
+}
+
+func (p *ServerInfo) GetClusterName() string {
+	return p.ClusterName
+}
+
+func (p *ServerInfo) GetStatsUrlPrefix() string {
+	return p.StatsUrlPrefix
+}
+func (p *ServerInfo) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ServerInfo) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.ClusterName = v
+	}
+	return nil
+}
+
+func (p *ServerInfo) readField3(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 3: ", err)
+	} else {
+		p.StatsUrlPrefix = v
+	}
+	return nil
+}
+
+func (p *ServerInfo) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ServerInfo"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ServerInfo) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("clusterName", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:clusterName: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.ClusterName)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.clusterName (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:clusterName: ", p), err)
+	}
+	return err
+}
+
+func (p *ServerInfo) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("statsUrlPrefix", thrift.STRING, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:statsUrlPrefix: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.StatsUrlPrefix)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.statsUrlPrefix (3) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:statsUrlPrefix: ", p), err)
+	}
+	return err
+}
+
+func (p *ServerInfo) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ServerInfo(%+v)", *p)
+}
+
+// Attributes:
+//  - PopulateJobResult_
+//  - ScheduleStatusResult_
+//  - GetJobsResult_
+//  - GetQuotaResult_
+//  - ListBackupsResult_
+//  - StartMaintenanceResult_
+//  - DrainHostsResult_
+//  - QueryRecoveryResult_
+//  - MaintenanceStatusResult_
+//  - EndMaintenanceResult_
+//  - RoleSummaryResult_
+//  - JobSummaryResult_
+//  - ConfigSummaryResult_
+//  - GetPendingReasonResult_
+//  - StartJobUpdateResult_
+//  - GetJobUpdateSummariesResult_
+//  - GetJobUpdateDetailsResult_
+//  - PulseJobUpdateResult_
+//  - GetJobUpdateDiffResult_
+//  - GetTierConfigResult_
+type Result_ struct {
+	PopulateJobResult_ *PopulateJobResult_ `thrift:"populateJobResult,1" json:"populateJobResult,omitempty"`
+	// unused field # 2
+	ScheduleStatusResult_    *ScheduleStatusResult_    `thrift:"scheduleStatusResult,3" json:"scheduleStatusResult,omitempty"`
+	GetJobsResult_           *GetJobsResult_           `thrift:"getJobsResult,4" json:"getJobsResult,omitempty"`
+	GetQuotaResult_          *GetQuotaResult_          `thrift:"getQuotaResult,5" json:"getQuotaResult,omitempty"`
+	ListBackupsResult_       *ListBackupsResult_       `thrift:"listBackupsResult,6" json:"listBackupsResult,omitempty"`
+	StartMaintenanceResult_  *StartMaintenanceResult_  `thrift:"startMaintenanceResult,7" json:"startMaintenanceResult,omitempty"`
+	DrainHostsResult_        *DrainHostsResult_        `thrift:"drainHostsResult,8" json:"drainHostsResult,omitempty"`
+	QueryRecoveryResult_     *QueryRecoveryResult_     `thrift:"queryRecoveryResult,9" json:"queryRecoveryResult,omitempty"`
+	MaintenanceStatusResult_ *MaintenanceStatusResult_ `thrift:"maintenanceStatusResult,10" json:"maintenanceStatusResult,omitempty"`
+	EndMaintenanceResult_    *EndMaintenanceResult_    `thrift:"endMaintenanceResult,11" json:"endMaintenanceResult,omitempty"`
+	// unused fields # 12 to 16
+	RoleSummaryResult_ *RoleSummaryResult_ `thrift:"roleSummaryResult,17" json:"roleSummaryResult,omitempty"`
+	JobSummaryResult_  *JobSummaryResult_  `thrift:"jobSummaryResult,18" json:"jobSummaryResult,omitempty"`
+	// unused field # 19
+	ConfigSummaryResult_         *ConfigSummaryResult_         `thrift:"configSummaryResult,20" json:"configSummaryResult,omitempty"`
+	GetPendingReasonResult_      *GetPendingReasonResult_      `thrift:"getPendingReasonResult,21" json:"getPendingReasonResult,omitempty"`
+	StartJobUpdateResult_        *StartJobUpdateResult_        `thrift:"startJobUpdateResult,22" json:"startJobUpdateResult,omitempty"`
+	GetJobUpdateSummariesResult_ *GetJobUpdateSummariesResult_ `thrift:"getJobUpdateSummariesResult,23" json:"getJobUpdateSummariesResult,omitempty"`
+	GetJobUpdateDetailsResult_   *GetJobUpdateDetailsResult_   `thrift:"getJobUpdateDetailsResult,24" json:"getJobUpdateDetailsResult,omitempty"`
+	PulseJobUpdateResult_        *PulseJobUpdateResult_        `thrift:"pulseJobUpdateResult,25" json:"pulseJobUpdateResult,omitempty"`
+	GetJobUpdateDiffResult_      *GetJobUpdateDiffResult_      `thrift:"getJobUpdateDiffResult,26" json:"getJobUpdateDiffResult,omitempty"`
+	GetTierConfigResult_         *GetTierConfigResult_         `thrift:"getTierConfigResult,27" json:"getTierConfigResult,omitempty"`
+}
+
+func NewResult_() *Result_ {
+	return &Result_{}
+}
+
+var Result__PopulateJobResult__DEFAULT *PopulateJobResult_
+
+func (p *Result_) GetPopulateJobResult_() *PopulateJobResult_ {
+	if !p.IsSetPopulateJobResult_() {
+		return Result__PopulateJobResult__DEFAULT
+	}
+	return p.PopulateJobResult_
+}
+
+var Result__ScheduleStatusResult__DEFAULT *ScheduleStatusResult_
+
+func (p *Result_) GetScheduleStatusResult_() *ScheduleStatusResult_ {
+	if !p.IsSetScheduleStatusResult_() {
+		return Result__ScheduleStatusResult__DEFAULT
+	}
+	return p.ScheduleStatusResult_
+}
+
+var Result__GetJobsResult__DEFAULT *GetJobsResult_
+
+func (p *Result_) GetGetJobsResult_() *GetJobsResult_ {
+	if !p.IsSetGetJobsResult_() {
+		return Result__GetJobsResult__DEFAULT
+	}
+	return p.GetJobsResult_
+}
+
+var Result__GetQuotaResult__DEFAULT *GetQuotaResult_
+
+func (p *Result_) GetGetQuotaResult_() *GetQuotaResult_ {
+	if !p.IsSetGetQuotaResult_() {
+		return Result__GetQuotaResult__DEFAULT
+	}
+	return p.GetQuotaResult_
+}
+
+var Result__ListBackupsResult__DEFAULT *ListBackupsResult_
+
+func (p *Result_) GetListBackupsResult_() *ListBackupsResult_ {
+	if !p.IsSetListBackupsResult_() {
+		return Result__ListBackupsResult__DEFAULT
+	}
+	return p.ListBackupsResult_
+}
+
+var Result__StartMaintenanceResult__DEFAULT *StartMaintenanceResult_
+
+func (p *Result_) GetStartMaintenanceResult_() *StartMaintenanceResult_ {
+	if !p.IsSetStartMaintenanceResult_() {
+		return Result__StartMaintenanceResult__DEFAULT
+	}
+	return p.StartMaintenanceResult_
+}
+
+var Result__DrainHostsResult__DEFAULT *DrainHostsResult_
+
+func (p *Result_) GetDrainHostsResult_() *DrainHostsResult_ {
+	if !p.IsSetDrainHostsResult_() {
+		return Result__DrainHostsResult__DEFAULT
+	}
+	return p.DrainHostsResult_
+}
+
+var Result__QueryRecoveryResult__DEFAULT *QueryRecoveryResult_
+
+func (p *Result_) GetQueryRecoveryResult_() *QueryRecoveryResult_ {
+	if !p.IsSetQueryRecoveryResult_() {
+		return Result__QueryRecoveryResult__DEFAULT
+	}
+	return p.QueryRecoveryResult_
+}
+
+var Result__MaintenanceStatusResult__DEFAULT *MaintenanceStatusResult_
+
+func (p *Result_) GetMaintenanceStatusResult_() *MaintenanceStatusResult_ {
+	if !p.IsSetMaintenanceStatusResult_() {
+		return Result__MaintenanceStatusResult__DEFAULT
+	}
+	return p.MaintenanceStatusResult_
+}
+
+var Result__EndMaintenanceResult__DEFAULT *EndMaintenanceResult_
+
+func (p *Result_) GetEndMaintenanceResult_() *EndMaintenanceResult_ {
+	if !p.IsSetEndMaintenanceResult_() {
+		return Result__EndMaintenanceResult__DEFAULT
+	}
+	return p.EndMaintenanceResult_
+}
+
+var Result__RoleSummaryResult__DEFAULT *RoleSummaryResult_
+
+func (p *Result_) GetRoleSummaryResult_() *RoleSummaryResult_ {
+	if !p.IsSetRoleSummaryResult_() {
+		return Result__RoleSummaryResult__DEFAULT
+	}
+	return p.RoleSummaryResult_
+}
+
+var Result__JobSummaryResult__DEFAULT *JobSummaryResult_
+
+func (p *Result_) GetJobSummaryResult_() *JobSummaryResult_ {
+	if !p.IsSetJobSummaryResult_() {
+		return Result__JobSummaryResult__DEFAULT
+	}
+	return p.JobSummaryResult_
+}
+
+var Result__ConfigSummaryResult__DEFAULT *ConfigSummaryResult_
+
+func (p *Result_) GetConfigSummaryResult_() *ConfigSummaryResult_ {
+	if !p.IsSetConfigSummaryResult_() {
+		return Result__ConfigSummaryResult__DEFAULT
+	}
+	return p.ConfigSummaryResult_
+}
+
+var Result__GetPendingReasonResult__DEFAULT *GetPendingReasonResult_
+
+func (p *Result_) GetGetPendingReasonResult_() *GetPendingReasonResult_ {
+	if !p.IsSetGetPendingReasonResult_() {
+		return Result__GetPendingReasonResult__DEFAULT
+	}
+	return p.GetPendingReasonResult_
+}
+
+var Result__StartJobUpdateResult__DEFAULT *StartJobUpdateResult_
+
+func (p *Result_) GetStartJobUpdateResult_() *StartJobUpdateResult_ {
+	if !p.IsSetStartJobUpdateResult_() {
+		return Result__StartJobUpdateResult__DEFAULT
+	}
+	return p.StartJobUpdateResult_
+}
+
+var Result__GetJobUpdateSummariesResult__DEFAULT *GetJobUpdateSummariesResult_
+
+func (p *Result_) GetGetJobUpdateSummariesResult_() *GetJobUpdateSummariesResult_ {
+	if !p.IsSetGetJobUpdateSummariesResult_() {
+		return Result__GetJobUpdateSummariesResult__DEFAULT
+	}
+	return p.GetJobUpdateSummariesResult_
+}
+
+var Result__GetJobUpdateDetailsResult__DEFAULT *GetJobUpdateDetailsResult_
+
+func (p *Result_) GetGetJobUpdateDetailsResult_() *GetJobUpdateDetailsResult_ {
+	if !p.IsSetGetJobUpdateDetailsResult_() {
+		return Result__GetJobUpdateDetailsResult__DEFAULT
+	}
+	return p.GetJobUpdateDetailsResult_
+}
+
+var Result__PulseJobUpdateResult__DEFAULT *PulseJobUpdateResult_
+
+func (p *Result_) GetPulseJobUpdateResult_() *PulseJobUpdateResult_ {
+	if !p.IsSetPulseJobUpdateResult_() {
+		return Result__PulseJobUpdateResult__DEFAULT
+	}
+	return p.PulseJobUpdateResult_
+}
+
+var Result__GetJobUpdateDiffResult__DEFAULT *GetJobUpdateDiffResult_
+
+func (p *Result_) GetGetJobUpdateDiffResult_() *GetJobUpdateDiffResult_ {
+	if !p.IsSetGetJobUpdateDiffResult_() {
+		return Result__GetJobUpdateDiffResult__DEFAULT
+	}
+	return p.GetJobUpdateDiffResult_
+}
+
+var Result__GetTierConfigResult__DEFAULT *GetTierConfigResult_
+
+func (p *Result_) GetGetTierConfigResult_() *GetTierConfigResult_ {
+	if !p.IsSetGetTierConfigResult_() {
+		return Result__GetTierConfigResult__DEFAULT
+	}
+	return p.GetTierConfigResult_
+}
+func (p *Result_) CountSetFieldsResult_() int {
+	count := 0
+	if p.IsSetPopulateJobResult_() {
+		count++
+	}
+	if p.IsSetScheduleStatusResult_() {
+		count++
+	}
+	if p.IsSetGetJobsResult_() {
+		count++
+	}
+	if p.IsSetGetQuotaResult_() {
+		count++
+	}
+	if p.IsSetListBackupsResult_() {
+		count++
+	}
+	if p.IsSetStartMaintenanceResult_() {
+		count++
+	}
+	if p.IsSetDrainHostsResult_() {
+		count++
+	}
+	if p.IsSetQueryRecoveryResult_() {
+		count++
+	}
+	if p.IsSetMaintenanceStatusResult_() {
+		count++
+	}
+	if p.IsSetEndMaintenanceResult_() {
+		count++
+	}
+	if p.IsSetRoleSummaryResult_() {
+		count++
+	}
+	if p.IsSetJobSummaryResult_() {
+		count++
+	}
+	if p.IsSetConfigSummaryResult_() {
+		count++
+	}
+	if p.IsSetGetPendingReasonResult_() {
+		count++
+	}
+	if p.IsSetStartJobUpdateResult_() {
+		count++
+	}
+	if p.IsSetGetJobUpdateSummariesResult_() {
+		count++
+	}
+	if p.IsSetGetJobUpdateDetailsResult_() {
+		count++
+	}
+	if p.IsSetPulseJobUpdateResult_() {
+		count++
+	}
+	if p.IsSetGetJobUpdateDiffResult_() {
+		count++
+	}
+	if p.IsSetGetTierConfigResult_() {
+		count++
+	}
+	return count
+
+}
+
+func (p *Result_) IsSetPopulateJobResult_() bool {
+	return p.PopulateJobResult_ != nil
+}
+
+func (p *Result_) IsSetScheduleStatusResult_() bool {
+	return p.ScheduleStatusResult_ != nil
+}
+
+func (p *Result_) IsSetGetJobsResult_() bool {
+	return p.GetJobsResult_ != nil
+}
+
+func (p *Result_) IsSetGetQuotaResult_() bool {
+	return p.GetQuotaResult_ != nil
+}
+
+func (p *Result_) IsSetListBackupsResult_() bool {
+	return p.ListBackupsResult_ != nil
+}
+
+func (p *Result_) IsSetStartMaintenanceResult_() bool {
+	return p.StartMaintenanceResult_ != nil
+}
+
+func (p *Result_) IsSetDrainHostsResult_() bool {
+	return p.DrainHostsResult_ != nil
+}
+
+func (p *Result_) IsSetQueryRecoveryResult_() bool {
+	return p.QueryRecoveryResult_ != nil
+}
+
+func (p *Result_) IsSetMaintenanceStatusResult_() bool {
+	return p.MaintenanceStatusResult_ != nil
+}
+
+func (p *Result_) IsSetEndMaintenanceResult_() bool {
+	return p.EndMaintenanceResult_ != nil
+}
+
+func (p *Result_) IsSetRoleSummaryResult_() bool {
+	return p.RoleSummaryResult_ != nil
+}
+
+func (p *Result_) IsSetJobSummaryResult_() bool {
+	return p.JobSummaryResult_ != nil
+}
+
+func (p *Result_) IsSetConfigSummaryResult_() bool {
+	return p.ConfigSummaryResult_ != nil
+}
+
+func (p *Result_) IsSetGetPendingReasonResult_() bool {
+	return p.GetPendingReasonResult_ != nil
+}
+
+func (p *Result_) IsSetStartJobUpdateResult_() bool {
+	return p.StartJobUpdateResult_ != nil
+}
+
+func (p *Result_) IsSetGetJobUpdateSummariesResult_() bool {
+	return p.GetJobUpdateSummariesResult_ != nil
+}
+
+func (p *Result_) IsSetGetJobUpdateDetailsResult_() bool {
+	return p.GetJobUpdateDetailsResult_ != nil
+}
+
+func (p *Result_) IsSetPulseJobUpdateResult_() bool {
+	return p.PulseJobUpdateResult_ != nil
+}
+
+func (p *Result_) IsSetGetJobUpdateDiffResult_() bool {
+	return p.GetJobUpdateDiffResult_ != nil
+}
+
+func (p *Result_) IsSetGetTierConfigResult_() bool {
+	return p.GetTierConfigResult_ != nil
+}
+
+func (p *Result_) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 4:
+			if err := p.readField4(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 6:
+			if err := p.readField6(iprot); err != nil {
+				return err
+			}
+		case 7:
+			if err := p.readField7(iprot); err != nil {
+				return err
+			}
+		case 8:
+			if err := p.readField8(iprot); err != nil {
+				return err
+			}
+		case 9:
+			if err := p.readField9(iprot); err != nil {
+				return err
+			}
+		case 10:
+			if err := p.readField10(iprot); err != nil {
+				return err
+			}
+		case 11:
+			if err := p.readField11(iprot); err != nil {
+				return err
+			}
+		case 17:
+			if err := p.readField17(iprot); err != nil {
+				return err
+			}
+		case 18:
+			if err := p.readField18(iprot); err != nil {
+				return err
+			}
+		case 20:
+			if err := p.readField20(iprot); err != nil {
+				return err
+			}
+		case 21:
+			if err := p.readField21(iprot); err != nil {
+				return err
+			}
+		case 22:
+			if err := p.readField22(iprot); err != nil {
+				return err
+			}
+		case 23:
+			if err := p.readField23(iprot); err != nil {
+				return err
+			}
+		case 24:
+			if err := p.readField24(iprot); err != nil {
+				return err
+			}
+		case 25:
+			if err := p.readField25(iprot); err != nil {
+				return err
+			}
+		case 26:
+			if err := p.readField26(iprot); err != nil {
+				return err
+			}
+		case 27:
+			if err := p.readField27(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField1(iprot thrift.TProtocol) error {
+	p.PopulateJobResult_ = &PopulateJobResult_{}
+	if err := p.PopulateJobResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.PopulateJobResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField3(iprot thrift.TProtocol) error {
+	p.ScheduleStatusResult_ = &ScheduleStatusResult_{}
+	if err := p.ScheduleStatusResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ScheduleStatusResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField4(iprot thrift.TProtocol) error {
+	p.GetJobsResult_ = &GetJobsResult_{}
+	if err := p.GetJobsResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetJobsResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField5(iprot thrift.TProtocol) error {
+	p.GetQuotaResult_ = &GetQuotaResult_{}
+	if err := p.GetQuotaResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetQuotaResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField6(iprot thrift.TProtocol) error {
+	p.ListBackupsResult_ = &ListBackupsResult_{}
+	if err := p.ListBackupsResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ListBackupsResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField7(iprot thrift.TProtocol) error {
+	p.StartMaintenanceResult_ = &StartMaintenanceResult_{}
+	if err := p.StartMaintenanceResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.StartMaintenanceResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField8(iprot thrift.TProtocol) error {
+	p.DrainHostsResult_ = &DrainHostsResult_{}
+	if err := p.DrainHostsResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.DrainHostsResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField9(iprot thrift.TProtocol) error {
+	p.QueryRecoveryResult_ = &QueryRecoveryResult_{}
+	if err := p.QueryRecoveryResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.QueryRecoveryResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField10(iprot thrift.TProtocol) error {
+	p.MaintenanceStatusResult_ = &MaintenanceStatusResult_{}
+	if err := p.MaintenanceStatusResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.MaintenanceStatusResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField11(iprot thrift.TProtocol) error {
+	p.EndMaintenanceResult_ = &EndMaintenanceResult_{}
+	if err := p.EndMaintenanceResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.EndMaintenanceResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField17(iprot thrift.TProtocol) error {
+	p.RoleSummaryResult_ = &RoleSummaryResult_{}
+	if err := p.RoleSummaryResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.RoleSummaryResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField18(iprot thrift.TProtocol) error {
+	p.JobSummaryResult_ = &JobSummaryResult_{}
+	if err := p.JobSummaryResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.JobSummaryResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField20(iprot thrift.TProtocol) error {
+	p.ConfigSummaryResult_ = &ConfigSummaryResult_{}
+	if err := p.ConfigSummaryResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ConfigSummaryResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField21(iprot thrift.TProtocol) error {
+	p.GetPendingReasonResult_ = &GetPendingReasonResult_{}
+	if err := p.GetPendingReasonResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetPendingReasonResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField22(iprot thrift.TProtocol) error {
+	p.StartJobUpdateResult_ = &StartJobUpdateResult_{}
+	if err := p.StartJobUpdateResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.StartJobUpdateResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField23(iprot thrift.TProtocol) error {
+	p.GetJobUpdateSummariesResult_ = &GetJobUpdateSummariesResult_{}
+	if err := p.GetJobUpdateSummariesResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetJobUpdateSummariesResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField24(iprot thrift.TProtocol) error {
+	p.GetJobUpdateDetailsResult_ = &GetJobUpdateDetailsResult_{}
+	if err := p.GetJobUpdateDetailsResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetJobUpdateDetailsResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField25(iprot thrift.TProtocol) error {
+	p.PulseJobUpdateResult_ = &PulseJobUpdateResult_{}
+	if err := p.PulseJobUpdateResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.PulseJobUpdateResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField26(iprot thrift.TProtocol) error {
+	p.GetJobUpdateDiffResult_ = &GetJobUpdateDiffResult_{}
+	if err := p.GetJobUpdateDiffResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetJobUpdateDiffResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) readField27(iprot thrift.TProtocol) error {
+	p.GetTierConfigResult_ = &GetTierConfigResult_{}
+	if err := p.GetTierConfigResult_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.GetTierConfigResult_), err)
+	}
+	return nil
+}
+
+func (p *Result_) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsResult_(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("Result"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField4(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField6(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField7(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField8(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField9(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField10(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField11(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField17(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField18(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField20(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField21(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField22(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField23(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField24(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField25(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField26(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField27(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Result_) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetPopulateJobResult_() {
+		if err := oprot.WriteFieldBegin("populateJobResult", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:populateJobResult: ", p), err)
+		}
+		if err := p.PopulateJobResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.PopulateJobResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:populateJobResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetScheduleStatusResult_() {
+		if err := oprot.WriteFieldBegin("scheduleStatusResult", thrift.STRUCT, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:scheduleStatusResult: ", p), err)
+		}
+		if err := p.ScheduleStatusResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ScheduleStatusResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:scheduleStatusResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField4(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetJobsResult_() {
+		if err := oprot.WriteFieldBegin("getJobsResult", thrift.STRUCT, 4); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:getJobsResult: ", p), err)
+		}
+		if err := p.GetJobsResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetJobsResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:getJobsResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField5(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetQuotaResult_() {
+		if err := oprot.WriteFieldBegin("getQuotaResult", thrift.STRUCT, 5); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:getQuotaResult: ", p), err)
+		}
+		if err := p.GetQuotaResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetQuotaResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:getQuotaResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField6(oprot thrift.TProtocol) (err error) {
+	if p.IsSetListBackupsResult_() {
+		if err := oprot.WriteFieldBegin("listBackupsResult", thrift.STRUCT, 6); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:listBackupsResult: ", p), err)
+		}
+		if err := p.ListBackupsResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ListBackupsResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:listBackupsResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField7(oprot thrift.TProtocol) (err error) {
+	if p.IsSetStartMaintenanceResult_() {
+		if err := oprot.WriteFieldBegin("startMaintenanceResult", thrift.STRUCT, 7); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:startMaintenanceResult: ", p), err)
+		}
+		if err := p.StartMaintenanceResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.StartMaintenanceResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:startMaintenanceResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField8(oprot thrift.TProtocol) (err error) {
+	if p.IsSetDrainHostsResult_() {
+		if err := oprot.WriteFieldBegin("drainHostsResult", thrift.STRUCT, 8); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:drainHostsResult: ", p), err)
+		}
+		if err := p.DrainHostsResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.DrainHostsResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:drainHostsResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField9(oprot thrift.TProtocol) (err error) {
+	if p.IsSetQueryRecoveryResult_() {
+		if err := oprot.WriteFieldBegin("queryRecoveryResult", thrift.STRUCT, 9); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:queryRecoveryResult: ", p), err)
+		}
+		if err := p.QueryRecoveryResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.QueryRecoveryResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 9:queryRecoveryResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField10(oprot thrift.TProtocol) (err error) {
+	if p.IsSetMaintenanceStatusResult_() {
+		if err := oprot.WriteFieldBegin("maintenanceStatusResult", thrift.STRUCT, 10); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:maintenanceStatusResult: ", p), err)
+		}
+		if err := p.MaintenanceStatusResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.MaintenanceStatusResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 10:maintenanceStatusResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField11(oprot thrift.TProtocol) (err error) {
+	if p.IsSetEndMaintenanceResult_() {
+		if err := oprot.WriteFieldBegin("endMaintenanceResult", thrift.STRUCT, 11); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:endMaintenanceResult: ", p), err)
+		}
+		if err := p.EndMaintenanceResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.EndMaintenanceResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 11:endMaintenanceResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField17(oprot thrift.TProtocol) (err error) {
+	if p.IsSetRoleSummaryResult_() {
+		if err := oprot.WriteFieldBegin("roleSummaryResult", thrift.STRUCT, 17); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 17:roleSummaryResult: ", p), err)
+		}
+		if err := p.RoleSummaryResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.RoleSummaryResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 17:roleSummaryResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField18(oprot thrift.TProtocol) (err error) {
+	if p.IsSetJobSummaryResult_() {
+		if err := oprot.WriteFieldBegin("jobSummaryResult", thrift.STRUCT, 18); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 18:jobSummaryResult: ", p), err)
+		}
+		if err := p.JobSummaryResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.JobSummaryResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 18:jobSummaryResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField20(oprot thrift.TProtocol) (err error) {
+	if p.IsSetConfigSummaryResult_() {
+		if err := oprot.WriteFieldBegin("configSummaryResult", thrift.STRUCT, 20); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 20:configSummaryResult: ", p), err)
+		}
+		if err := p.ConfigSummaryResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ConfigSummaryResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 20:configSummaryResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField21(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetPendingReasonResult_() {
+		if err := oprot.WriteFieldBegin("getPendingReasonResult", thrift.STRUCT, 21); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 21:getPendingReasonResult: ", p), err)
+		}
+		if err := p.GetPendingReasonResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetPendingReasonResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 21:getPendingReasonResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField22(oprot thrift.TProtocol) (err error) {
+	if p.IsSetStartJobUpdateResult_() {
+		if err := oprot.WriteFieldBegin("startJobUpdateResult", thrift.STRUCT, 22); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 22:startJobUpdateResult: ", p), err)
+		}
+		if err := p.StartJobUpdateResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.StartJobUpdateResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 22:startJobUpdateResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField23(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetJobUpdateSummariesResult_() {
+		if err := oprot.WriteFieldBegin("getJobUpdateSummariesResult", thrift.STRUCT, 23); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 23:getJobUpdateSummariesResult: ", p), err)
+		}
+		if err := p.GetJobUpdateSummariesResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetJobUpdateSummariesResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 23:getJobUpdateSummariesResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField24(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetJobUpdateDetailsResult_() {
+		if err := oprot.WriteFieldBegin("getJobUpdateDetailsResult", thrift.STRUCT, 24); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 24:getJobUpdateDetailsResult: ", p), err)
+		}
+		if err := p.GetJobUpdateDetailsResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetJobUpdateDetailsResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 24:getJobUpdateDetailsResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField25(oprot thrift.TProtocol) (err error) {
+	if p.IsSetPulseJobUpdateResult_() {
+		if err := oprot.WriteFieldBegin("pulseJobUpdateResult", thrift.STRUCT, 25); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 25:pulseJobUpdateResult: ", p), err)
+		}
+		if err := p.PulseJobUpdateResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.PulseJobUpdateResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 25:pulseJobUpdateResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField26(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetJobUpdateDiffResult_() {
+		if err := oprot.WriteFieldBegin("getJobUpdateDiffResult", thrift.STRUCT, 26); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 26:getJobUpdateDiffResult: ", p), err)
+		}
+		if err := p.GetJobUpdateDiffResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetJobUpdateDiffResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 26:getJobUpdateDiffResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) writeField27(oprot thrift.TProtocol) (err error) {
+	if p.IsSetGetTierConfigResult_() {
+		if err := oprot.WriteFieldBegin("getTierConfigResult", thrift.STRUCT, 27); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 27:getTierConfigResult: ", p), err)
+		}
+		if err := p.GetTierConfigResult_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.GetTierConfigResult_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 27:getTierConfigResult: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Result_) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Result_(%+v)", *p)
+}
+
+// Attributes:
+//  - Message
+type ResponseDetail struct {
+	Message string `thrift:"message,1" json:"message"`
+}
+
+func NewResponseDetail() *ResponseDetail {
+	return &ResponseDetail{}
+}
+
+func (p *ResponseDetail) GetMessage() string {
+	return p.Message
+}
+func (p *ResponseDetail) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ResponseDetail) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadString(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		p.Message = v
+	}
+	return nil
+}
+
+func (p *ResponseDetail) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("ResponseDetail"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ResponseDetail) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("message", thrift.STRING, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:message: ", p), err)
+	}
+	if err := oprot.WriteString(string(p.Message)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.message (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:message: ", p), err)
+	}
+	return err
+}
+
+func (p *ResponseDetail) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ResponseDetail(%+v)", *p)
+}
+
+// Attributes:
+//  - ResponseCode
+//  - ServerInfo
+//  - Result_: Payload from the invoked RPC.
+//  - Details: Messages from the server relevant to the request, such as warnings or use of deprecated
+// features.
+type Response struct {
+	ResponseCode ResponseCode `thrift:"responseCode,1" json:"responseCode"`
+	// unused field # 2
+	Result_ *Result_ `thrift:"result,3" json:"result,omitempty"`
+	// unused field # 4
+	ServerInfo *ServerInfo       `thrift:"serverInfo,5" json:"serverInfo"`
+	Details    []*ResponseDetail `thrift:"details,6" json:"details"`
+}
+
+func NewResponse() *Response {
+	return &Response{}
+}
+
+func (p *Response) GetResponseCode() ResponseCode {
+	return p.ResponseCode
+}
+
+var Response_ServerInfo_DEFAULT *ServerInfo
+
+func (p *Response) GetServerInfo() *ServerInfo {
+	if !p.IsSetServerInfo() {
+		return Response_ServerInfo_DEFAULT
+	}
+	return p.ServerInfo
+}
+
+var Response_Result__DEFAULT *Result_
+
+func (p *Response) GetResult_() *Result_ {
+	if !p.IsSetResult_() {
+		return Response_Result__DEFAULT
+	}
+	return p.Result_
+}
+
+func (p *Response) GetDetails() []*ResponseDetail {
+	return p.Details
+}
+func (p *Response) IsSetServerInfo() bool {
+	return p.ServerInfo != nil
+}
+
+func (p *Response) IsSetResult_() bool {
+	return p.Result_ != nil
+}
+
+func (p *Response) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 5:
+			if err := p.readField5(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		case 6:
+			if err := p.readField6(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *Response) readField1(iprot thrift.TProtocol) error {
+	if v, err := iprot.ReadI32(); err != nil {
+		return thrift.PrependError("error reading field 1: ", err)
+	} else {
+		temp := ResponseCode(v)
+		p.ResponseCode = temp
+	}
+	return nil
+}
+
+func (p *Response) readField5(iprot thrift.TProtocol) error {
+	p.ServerInfo = &ServerInfo{}
+	if err := p.ServerInfo.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ServerInfo), err)
+	}
+	return nil
+}
+
+func (p *Response) readField3(iprot thrift.TProtocol) error {
+	p.Result_ = &Result_{}
+	if err := p.Result_.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Result_), err)
+	}
+	return nil
+}
+
+func (p *Response) readField6(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*ResponseDetail, 0, size)
+	p.Details = tSlice
+	for i := 0; i < size; i++ {
+		_elem48 := &ResponseDetail{}
+		if err := _elem48.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem48), err)
+		}
+		p.Details = append(p.Details, _elem48)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *Response) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("Response"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField5(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField6(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *Response) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("responseCode", thrift.I32, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:responseCode: ", p), err)
+	}
+	if err := oprot.WriteI32(int32(p.ResponseCode)); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T.responseCode (1) field write error: ", p), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:responseCode: ", p), err)
+	}
+	return err
+}
+
+func (p *Response) writeField3(oprot thrift.TProtocol) (err error) {
+	if p.IsSetResult_() {
+		if err := oprot.WriteFieldBegin("result", thrift.STRUCT, 3); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:result: ", p), err)
+		}
+		if err := p.Result_.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Result_), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:result: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *Response) writeField5(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("serverInfo", thrift.STRUCT, 5); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:serverInfo: ", p), err)
+	}
+	if err := p.ServerInfo.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ServerInfo), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:serverInfo: ", p), err)
+	}
+	return err
+}
+
+func (p *Response) writeField6(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("details", thrift.LIST, 6); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:details: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Details)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.Details {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:details: ", p), err)
+	}
+	return err
+}
+
+func (p *Response) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("Response(%+v)", *p)
+}
+
+// Attributes:
+//  - InstanceKey: Key for the task to rewrite.
+//  - OldTask: The original configuration.
+//  - RewrittenTask: The rewritten configuration.
+type InstanceConfigRewrite struct {
+	InstanceKey   *InstanceKey `thrift:"instanceKey,1" json:"instanceKey"`
+	OldTask       *TaskConfig  `thrift:"oldTask,2" json:"oldTask"`
+	RewrittenTask *TaskConfig  `thrift:"rewrittenTask,3" json:"rewrittenTask"`
+}
+
+func NewInstanceConfigRewrite() *InstanceConfigRewrite {
+	return &InstanceConfigRewrite{}
+}
+
+var InstanceConfigRewrite_InstanceKey_DEFAULT *InstanceKey
+
+func (p *InstanceConfigRewrite) GetInstanceKey() *InstanceKey {
+	if !p.IsSetInstanceKey() {
+		return InstanceConfigRewrite_InstanceKey_DEFAULT
+	}
+	return p.InstanceKey
+}
+
+var InstanceConfigRewrite_OldTask_DEFAULT *TaskConfig
+
+func (p *InstanceConfigRewrite) GetOldTask() *TaskConfig {
+	if !p.IsSetOldTask() {
+		return InstanceConfigRewrite_OldTask_DEFAULT
+	}
+	return p.OldTask
+}
+
+var InstanceConfigRewrite_RewrittenTask_DEFAULT *TaskConfig
+
+func (p *InstanceConfigRewrite) GetRewrittenTask() *TaskConfig {
+	if !p.IsSetRewrittenTask() {
+		return InstanceConfigRewrite_RewrittenTask_DEFAULT
+	}
+	return p.RewrittenTask
+}
+func (p *InstanceConfigRewrite) IsSetInstanceKey() bool {
+	return p.InstanceKey != nil
+}
+
+func (p *InstanceConfigRewrite) IsSetOldTask() bool {
+	return p.OldTask != nil
+}
+
+func (p *InstanceConfigRewrite) IsSetRewrittenTask() bool {
+	return p.RewrittenTask != nil
+}
+
+func (p *InstanceConfigRewrite) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		case 3:
+			if err := p.readField3(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *InstanceConfigRewrite) readField1(iprot thrift.TProtocol) error {
+	p.InstanceKey = &InstanceKey{}
+	if err := p.InstanceKey.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.InstanceKey), err)
+	}
+	return nil
+}
+
+func (p *InstanceConfigRewrite) readField2(iprot thrift.TProtocol) error {
+	p.OldTask = &TaskConfig{}
+	if err := p.OldTask.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.OldTask), err)
+	}
+	return nil
+}
+
+func (p *InstanceConfigRewrite) readField3(iprot thrift.TProtocol) error {
+	p.RewrittenTask = &TaskConfig{}
+	if err := p.RewrittenTask.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.RewrittenTask), err)
+	}
+	return nil
+}
+
+func (p *InstanceConfigRewrite) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("InstanceConfigRewrite"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField3(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *InstanceConfigRewrite) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("instanceKey", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:instanceKey: ", p), err)
+	}
+	if err := p.InstanceKey.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.InstanceKey), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:instanceKey: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceConfigRewrite) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("oldTask", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:oldTask: ", p), err)
+	}
+	if err := p.OldTask.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.OldTask), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:oldTask: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceConfigRewrite) writeField3(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("rewrittenTask", thrift.STRUCT, 3); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:rewrittenTask: ", p), err)
+	}
+	if err := p.RewrittenTask.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.RewrittenTask), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:rewrittenTask: ", p), err)
+	}
+	return err
+}
+
+func (p *InstanceConfigRewrite) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("InstanceConfigRewrite(%+v)", *p)
+}
+
+// Attributes:
+//  - OldJob: The original job configuration.
+//  - RewrittenJob: The rewritten job configuration.
+type JobConfigRewrite struct {
+	OldJob       *JobConfiguration `thrift:"oldJob,1" json:"oldJob"`
+	RewrittenJob *JobConfiguration `thrift:"rewrittenJob,2" json:"rewrittenJob"`
+}
+
+func NewJobConfigRewrite() *JobConfigRewrite {
+	return &JobConfigRewrite{}
+}
+
+var JobConfigRewrite_OldJob_DEFAULT *JobConfiguration
+
+func (p *JobConfigRewrite) GetOldJob() *JobConfiguration {
+	if !p.IsSetOldJob() {
+		return JobConfigRewrite_OldJob_DEFAULT
+	}
+	return p.OldJob
+}
+
+var JobConfigRewrite_RewrittenJob_DEFAULT *JobConfiguration
+
+func (p *JobConfigRewrite) GetRewrittenJob() *JobConfiguration {
+	if !p.IsSetRewrittenJob() {
+		return JobConfigRewrite_RewrittenJob_DEFAULT
+	}
+	return p.RewrittenJob
+}
+func (p *JobConfigRewrite) IsSetOldJob() bool {
+	return p.OldJob != nil
+}
+
+func (p *JobConfigRewrite) IsSetRewrittenJob() bool {
+	return p.RewrittenJob != nil
+}
+
+func (p *JobConfigRewrite) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *JobConfigRewrite) readField1(iprot thrift.TProtocol) error {
+	p.OldJob = &JobConfiguration{}
+	if err := p.OldJob.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.OldJob), err)
+	}
+	return nil
+}
+
+func (p *JobConfigRewrite) readField2(iprot thrift.TProtocol) error {
+	p.RewrittenJob = &JobConfiguration{}
+	if err := p.RewrittenJob.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.RewrittenJob), err)
+	}
+	return nil
+}
+
+func (p *JobConfigRewrite) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("JobConfigRewrite"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *JobConfigRewrite) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("oldJob", thrift.STRUCT, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:oldJob: ", p), err)
+	}
+	if err := p.OldJob.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.OldJob), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:oldJob: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfigRewrite) writeField2(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("rewrittenJob", thrift.STRUCT, 2); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:rewrittenJob: ", p), err)
+	}
+	if err := p.RewrittenJob.Write(oprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.RewrittenJob), err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:rewrittenJob: ", p), err)
+	}
+	return err
+}
+
+func (p *JobConfigRewrite) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("JobConfigRewrite(%+v)", *p)
+}
+
+// Attributes:
+//  - JobRewrite
+//  - InstanceRewrite
+type ConfigRewrite struct {
+	JobRewrite      *JobConfigRewrite      `thrift:"jobRewrite,1" json:"jobRewrite,omitempty"`
+	InstanceRewrite *InstanceConfigRewrite `thrift:"instanceRewrite,2" json:"instanceRewrite,omitempty"`
+}
+
+func NewConfigRewrite() *ConfigRewrite {
+	return &ConfigRewrite{}
+}
+
+var ConfigRewrite_JobRewrite_DEFAULT *JobConfigRewrite
+
+func (p *ConfigRewrite) GetJobRewrite() *JobConfigRewrite {
+	if !p.IsSetJobRewrite() {
+		return ConfigRewrite_JobRewrite_DEFAULT
+	}
+	return p.JobRewrite
+}
+
+var ConfigRewrite_InstanceRewrite_DEFAULT *InstanceConfigRewrite
+
+func (p *ConfigRewrite) GetInstanceRewrite() *InstanceConfigRewrite {
+	if !p.IsSetInstanceRewrite() {
+		return ConfigRewrite_InstanceRewrite_DEFAULT
+	}
+	return p.InstanceRewrite
+}
+func (p *ConfigRewrite) CountSetFieldsConfigRewrite() int {
+	count := 0
+	if p.IsSetJobRewrite() {
+		count++
+	}
+	if p.IsSetInstanceRewrite() {
+		count++
+	}
+	return count
+
+}
+
+func (p *ConfigRewrite) IsSetJobRewrite() bool {
+	return p.JobRewrite != nil
+}
+
+func (p *ConfigRewrite) IsSetInstanceRewrite() bool {
+	return p.InstanceRewrite != nil
+}
+
+func (p *ConfigRewrite) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		case 2:
+			if err := p.readField2(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *ConfigRewrite) readField1(iprot thrift.TProtocol) error {
+	p.JobRewrite = &JobConfigRewrite{}
+	if err := p.JobRewrite.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.JobRewrite), err)
+	}
+	return nil
+}
+
+func (p *ConfigRewrite) readField2(iprot thrift.TProtocol) error {
+	p.InstanceRewrite = &InstanceConfigRewrite{}
+	if err := p.InstanceRewrite.Read(iprot); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.InstanceRewrite), err)
+	}
+	return nil
+}
+
+func (p *ConfigRewrite) Write(oprot thrift.TProtocol) error {
+	if c := p.CountSetFieldsConfigRewrite(); c != 1 {
+		return fmt.Errorf("%T write union: exactly one field must be set (%d set).", p, c)
+	}
+	if err := oprot.WriteStructBegin("ConfigRewrite"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := p.writeField2(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *ConfigRewrite) writeField1(oprot thrift.TProtocol) (err error) {
+	if p.IsSetJobRewrite() {
+		if err := oprot.WriteFieldBegin("jobRewrite", thrift.STRUCT, 1); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:jobRewrite: ", p), err)
+		}
+		if err := p.JobRewrite.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.JobRewrite), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:jobRewrite: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ConfigRewrite) writeField2(oprot thrift.TProtocol) (err error) {
+	if p.IsSetInstanceRewrite() {
+		if err := oprot.WriteFieldBegin("instanceRewrite", thrift.STRUCT, 2); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:instanceRewrite: ", p), err)
+		}
+		if err := p.InstanceRewrite.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.InstanceRewrite), err)
+		}
+		if err := oprot.WriteFieldEnd(); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:instanceRewrite: ", p), err)
+		}
+	}
+	return err
+}
+
+func (p *ConfigRewrite) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("ConfigRewrite(%+v)", *p)
+}
+
+// Attributes:
+//  - RewriteCommands
+type RewriteConfigsRequest struct {
+	RewriteCommands []*ConfigRewrite `thrift:"rewriteCommands,1" json:"rewriteCommands"`
+}
+
+func NewRewriteConfigsRequest() *RewriteConfigsRequest {
+	return &RewriteConfigsRequest{}
+}
+
+func (p *RewriteConfigsRequest) GetRewriteCommands() []*ConfigRewrite {
+	return p.RewriteCommands
+}
+func (p *RewriteConfigsRequest) Read(iprot thrift.TProtocol) error {
+	if _, err := iprot.ReadStructBegin(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
+	}
+
+	for {
+		_, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
+		if err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
+		}
+		if fieldTypeId == thrift.STOP {
+			break
+		}
+		switch fieldId {
+		case 1:
+			if err := p.readField1(iprot); err != nil {
+				return err
+			}
+		default:
+			if err := iprot.Skip(fieldTypeId); err != nil {
+				return err
+			}
+		}
+		if err := iprot.ReadFieldEnd(); err != nil {
+			return err
+		}
+	}
+	if err := iprot.ReadStructEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
+	}
+	return nil
+}
+
+func (p *RewriteConfigsRequest) readField1(iprot thrift.TProtocol) error {
+	_, size, err := iprot.ReadListBegin()
+	if err != nil {
+		return thrift.PrependError("error reading list begin: ", err)
+	}
+	tSlice := make([]*ConfigRewrite, 0, size)
+	p.RewriteCommands = tSlice
+	for i := 0; i < size; i++ {
+		_elem49 := &ConfigRewrite{}
+		if err := _elem49.Read(iprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem49), err)
+		}
+		p.RewriteCommands = append(p.RewriteCommands, _elem49)
+	}
+	if err := iprot.ReadListEnd(); err != nil {
+		return thrift.PrependError("error reading list end: ", err)
+	}
+	return nil
+}
+
+func (p *RewriteConfigsRequest) Write(oprot thrift.TProtocol) error {
+	if err := oprot.WriteStructBegin("RewriteConfigsRequest"); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
+	}
+	if err := p.writeField1(oprot); err != nil {
+		return err
+	}
+	if err := oprot.WriteFieldStop(); err != nil {
+		return thrift.PrependError("write field stop error: ", err)
+	}
+	if err := oprot.WriteStructEnd(); err != nil {
+		return thrift.PrependError("write struct stop error: ", err)
+	}
+	return nil
+}
+
+func (p *RewriteConfigsRequest) writeField1(oprot thrift.TProtocol) (err error) {
+	if err := oprot.WriteFieldBegin("rewriteCommands", thrift.LIST, 1); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:rewriteCommands: ", p), err)
+	}
+	if err := oprot.WriteListBegin(thrift.STRUCT, len(p.RewriteCommands)); err != nil {
+		return thrift.PrependError("error writing list begin: ", err)
+	}
+	for _, v := range p.RewriteCommands {
+		if err := v.Write(oprot); err != nil {
+			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
+		}
+	}
+	if err := oprot.WriteListEnd(); err != nil {
+		return thrift.PrependError("error writing list end: ", err)
+	}
+	if err := oprot.WriteFieldEnd(); err != nil {
+		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:rewriteCommands: ", p), err)
+	}
+	return err
+}
+
+func (p *RewriteConfigsRequest) String() string {
+	if p == nil {
+		return "<nil>"
+	}
+	return fmt.Sprintf("RewriteConfigsRequest(%+v)", *p)
+}
diff --git a/generateBindings.sh b/generateBindings.sh
index bbc2f71..c876ef9 100755
--- a/generateBindings.sh
+++ b/generateBindings.sh
@@ -6,6 +6,6 @@ if [[ $(thrift -version | grep -e $THRIFT_VER -c) -ne 1 ]]; then
     echo "Warning: This wrapper has only been tested with version" $THRIFT_VER;
 fi
 
-echo "Generating bindings and placing them in the vendor folder...";
-thrift -o vendor/ -r -gen go:package=apache.aurora auroraAPI.thrift;
+echo "Generating bindings...";
+thrift -o ./ -r -gen go:package=apache.aurora auroraAPI.thrift;
 echo "Done";