func (db *SQLDB) DesireLRP(logger lager.Logger, desiredLRP *models.DesiredLRP) error { logger = logger.WithData(lager.Data{"process_guid": desiredLRP.ProcessGuid}) logger.Info("starting") defer logger.Info("complete") return db.transact(logger, func(logger lager.Logger, tx *sql.Tx) error { routesData, err := json.Marshal(desiredLRP.Routes) runInfo := desiredLRP.DesiredLRPRunInfo(db.clock.Now()) runInfoData, err := db.serializeModel(logger, &runInfo) if err != nil { logger.Error("failed-to-serialize-model", err) return err } volumePlacement := &models.VolumePlacement{} volumePlacement.DriverNames = []string{} for _, mount := range desiredLRP.VolumeMounts { volumePlacement.DriverNames = append(volumePlacement.DriverNames, mount.Driver) } volumePlacementData, err := db.serializeModel(logger, volumePlacement) if err != nil { logger.Error("failed-to-serialize-model", err) return err } guid, err := db.guidProvider.NextGUID() if err != nil { logger.Error("failed-to-generate-guid", err) return models.ErrGUIDGeneration } desiredLRP.ModificationTag = &models.ModificationTag{Epoch: guid, Index: 0} _, err = db.insert(logger, tx, desiredLRPsTable, SQLAttributes{ "process_guid": desiredLRP.ProcessGuid, "domain": desiredLRP.Domain, "log_guid": desiredLRP.LogGuid, "annotation": desiredLRP.Annotation, "instances": desiredLRP.Instances, "memory_mb": desiredLRP.MemoryMb, "disk_mb": desiredLRP.DiskMb, "rootfs": desiredLRP.RootFs, "volume_placement": volumePlacementData, "modification_tag_epoch": desiredLRP.ModificationTag.Epoch, "modification_tag_index": desiredLRP.ModificationTag.Index, "routes": routesData, "run_info": runInfoData, }, ) if err != nil { logger.Error("failed-inserting-desired", err) return db.convertSQLError(err) } return nil }) }