From 55bd1defeec6ac2a4f481d485c28a6bb8abb8ffa Mon Sep 17 00:00:00 2001 From: Mattt Zmuda Date: Mon, 1 Jul 2024 05:15:38 -0700 Subject: [PATCH] Add support for deployments.delete endpoint --- client_test.go | 24 ++++++++++++++++++++++++ deployment.go | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/client_test.go b/client_test.go index d280851..3adb149 100644 --- a/client_test.go +++ b/client_test.go @@ -2254,6 +2254,30 @@ func TestUpdateDeployment(t *testing.T) { } } +func TestDeleteDeployment(t *testing.T) { + deploymentOwner := "acme" + deploymentName := "existing-deployment" + mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + assert.Equal(t, http.MethodDelete, r.Method) + assert.Equal(t, fmt.Sprintf("/deployments/%s/%s", deploymentOwner, deploymentName), r.URL.Path) + w.WriteHeader(http.StatusNoContent) + })) + defer mockServer.Close() + + client, err := replicate.NewClient( + replicate.WithToken("test-token"), + replicate.WithBaseURL(mockServer.URL), + ) + require.NotNil(t, client) + require.NoError(t, err) + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + err = client.DeleteDeployment(ctx, deploymentOwner, deploymentName) + assert.NoError(t, err) +} + func TestDeleteModel(t *testing.T) { modelName := "replicate" modelOwner := "hello-world" diff --git a/deployment.go b/deployment.go index 6e7a29e..571279b 100644 --- a/deployment.go +++ b/deployment.go @@ -133,3 +133,13 @@ func (c *Client) UpdateDeployment(ctx context.Context, deploymentOwner string, d return deployment, nil } + +// DeleteDeployment deletes an existing deployment. +func (c *Client) DeleteDeployment(ctx context.Context, deploymentOwner string, deploymentName string) error { + path := fmt.Sprintf("/deployments/%s/%s", deploymentOwner, deploymentName) + err := c.fetch(ctx, http.MethodDelete, path, nil, nil) + if err != nil { + return fmt.Errorf("failed to delete deployment: %w", err) + } + return nil +}