diff --git a/cloud/bmaas/bmdb/sessions_test.go b/cloud/bmaas/bmdb/sessions_test.go
index b8625a9..d3c80bd 100644
--- a/cloud/bmaas/bmdb/sessions_test.go
+++ b/cloud/bmaas/bmdb/sessions_test.go
@@ -202,7 +202,10 @@
 				t.Fatalf("Deadline expired")
 			}
 			work, err := session.Work(ctx, model.ProcessShepherdAgentStart, func(q *model.Queries) ([]uuid.UUID, error) {
-				machines, err := q.GetMachinesForAgentStart(ctx, 1)
+				machines, err := q.GetMachinesForAgentStart(ctx, model.GetMachinesForAgentStartParams{
+					Limit:    1,
+					Provider: model.ProviderEquinix,
+				})
 				if err != nil {
 					return nil, err
 				}
@@ -238,7 +241,10 @@
 		var machines []model.MachineProvided
 		var err error
 		err = session.Transact(ctx, func(q *model.Queries) error {
-			machines, err = q.GetMachinesForAgentStart(ctx, 1)
+			machines, err = q.GetMachinesForAgentStart(ctx, model.GetMachinesForAgentStartParams{
+				Limit:    1,
+				Provider: model.ProviderEquinix,
+			})
 			if err != nil {
 				return err
 			}
@@ -351,7 +357,10 @@
 	errC := make(chan error)
 	go func() {
 		work, err := session.Work(ctx, model.ProcessShepherdAgentStart, func(q *model.Queries) ([]uuid.UUID, error) {
-			machines, err := q.GetMachinesForAgentStart(ctx, 1)
+			machines, err := q.GetMachinesForAgentStart(ctx, model.GetMachinesForAgentStartParams{
+				Limit:    1,
+				Provider: model.ProviderEquinix,
+			})
 			if err != nil {
 				return nil, err
 			}
@@ -390,7 +399,10 @@
 
 	// Mutual exclusion with AgentStart:
 	err = session.Transact(ctx, func(q *model.Queries) error {
-		machines, err := q.GetMachinesForAgentStart(ctx, 1)
+		machines, err := q.GetMachinesForAgentStart(ctx, model.GetMachinesForAgentStartParams{
+			Limit:    1,
+			Provider: model.ProviderEquinix,
+		})
 		if err != nil {
 			return err
 		}
@@ -405,7 +417,10 @@
 
 	// Mutual exclusion with Recovery:
 	err = session.Transact(ctx, func(q *model.Queries) error {
-		machines, err := q.GetMachineForAgentRecovery(ctx, 1)
+		machines, err := q.GetMachineForAgentRecovery(ctx, model.GetMachineForAgentRecoveryParams{
+			Limit:    1,
+			Provider: model.ProviderEquinix,
+		})
 		if err != nil {
 			return err
 		}
@@ -427,7 +442,10 @@
 	// That machine has its agent started, so we still expect no work to have to be
 	// done.
 	err = session.Transact(ctx, func(q *model.Queries) error {
-		machines, err := q.GetMachinesForAgentStart(ctx, 1)
+		machines, err := q.GetMachinesForAgentStart(ctx, model.GetMachinesForAgentStartParams{
+			Limit:    1,
+			Provider: model.ProviderEquinix,
+		})
 		if err != nil {
 			return err
 		}
@@ -518,7 +536,10 @@
 
 	workOnce := func(ctx context.Context, workerID int, session *Session) error {
 		work, err := session.Work(ctx, model.ProcessShepherdAgentStart, func(q *model.Queries) ([]uuid.UUID, error) {
-			machines, err := q.GetMachinesForAgentStart(ctx, 1)
+			machines, err := q.GetMachinesForAgentStart(ctx, model.GetMachinesForAgentStartParams{
+				Limit:    1,
+				Provider: model.ProviderEquinix,
+			})
 			if err != nil {
 				return nil, err
 			}
