Browse Source

better error message when model not found on pull

Bruce MacDonald 1 year ago
parent
commit
536028c35a
2 changed files with 7 additions and 2 deletions
  1. 1 1
      api/client.go
  2. 6 1
      server/images.go

+ 1 - 1
api/client.go

@@ -131,7 +131,7 @@ func (c *Client) stream(ctx context.Context, method, path string, data any, fn f
 		}
 
 		if errorResponse.Error != "" {
-			return fmt.Errorf("stream: %s", errorResponse.Error)
+			return fmt.Errorf(errorResponse.Error)
 		}
 
 		if response.StatusCode >= 400 {

+ 6 - 1
server/images.go

@@ -684,7 +684,7 @@ func PullModel(name string, regOpts *RegistryOptions, fn func(api.ProgressRespon
 
 	manifest, err := pullModelManifest(mp, regOpts)
 	if err != nil {
-		return fmt.Errorf("pull model manifest: %q", err)
+		return fmt.Errorf("pull model manifest: %s", err)
 	}
 
 	var layers []*Layer
@@ -738,6 +738,8 @@ func PullModel(name string, regOpts *RegistryOptions, fn func(api.ProgressRespon
 	return nil
 }
 
+var errModelNotFound = fmt.Errorf("model not found")
+
 func pullModelManifest(mp ModelPath, regOpts *RegistryOptions) (*ManifestV2, error) {
 	url := fmt.Sprintf("%s/v2/%s/manifests/%s", mp.Registry, mp.GetNamespaceRepository(), mp.Tag)
 	headers := map[string]string{
@@ -753,6 +755,9 @@ func pullModelManifest(mp ModelPath, regOpts *RegistryOptions) (*ManifestV2, err
 
 	// Check for success: For a successful upload, the Docker registry will respond with a 201 Created
 	if resp.StatusCode != http.StatusOK {
+		if resp.StatusCode == http.StatusNotFound {
+			return nil, errModelNotFound
+		}
 		body, _ := io.ReadAll(resp.Body)
 		return nil, fmt.Errorf("on pull registry responded with code %d: %s", resp.StatusCode, body)
 	}