Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
b3f75fc8
Commit
b3f75fc8
authored
Aug 14, 2024
by
Michael Yang
Browse files
fix noprune
parent
0a8d6ea8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
39 deletions
+24
-39
server/images.go
server/images.go
+24
-39
No files found.
server/images.go
View file @
b3f75fc8
...
@@ -215,25 +215,20 @@ func GetManifest(mp ModelPath) (*Manifest, string, error) {
...
@@ -215,25 +215,20 @@ func GetManifest(mp ModelPath) (*Manifest, string, error) {
return
nil
,
""
,
err
return
nil
,
""
,
err
}
}
if
_
,
err
=
os
.
Stat
(
fp
);
err
!=
nil
{
f
,
err
:=
os
.
Open
(
fp
)
return
nil
,
""
,
err
}
var
manifest
*
Manifest
bts
,
err
:=
os
.
ReadFile
(
fp
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
""
,
fmt
.
Errorf
(
"couldn't open file '%s'"
,
fp
)
return
nil
,
""
,
err
}
}
defer
f
.
Close
()
shaSum
:=
sha256
.
Sum256
(
bts
)
sha256sum
:=
sha256
.
New
()
shaStr
:=
hex
.
EncodeToString
(
shaSum
[
:
])
if
err
:=
json
.
Unmarshal
(
bts
,
&
manifest
);
err
!=
nil
{
var
manifest
Manifest
if
err
:=
json
.
NewDecoder
(
io
.
TeeReader
(
f
,
sha256sum
))
.
Decode
(
&
manifest
);
err
!=
nil
{
return
nil
,
""
,
err
return
nil
,
""
,
err
}
}
return
manifest
,
shaStr
,
nil
return
&
manifest
,
hex
.
EncodeToString
(
sha256sum
.
Sum
(
nil
))
,
nil
}
}
func
GetModel
(
name
string
)
(
*
Model
,
error
)
{
func
GetModel
(
name
string
)
(
*
Model
,
error
)
{
...
@@ -716,7 +711,7 @@ func deleteUnusedLayers(skipModelPath *ModelPath, deleteMap map[string]struct{})
...
@@ -716,7 +711,7 @@ func deleteUnusedLayers(skipModelPath *ModelPath, deleteMap map[string]struct{})
// save (i.e. delete from the deleteMap) any files used in other manifests
// save (i.e. delete from the deleteMap) any files used in other manifests
manifest
,
_
,
err
:=
GetManifest
(
fmp
)
manifest
,
_
,
err
:=
GetManifest
(
fmp
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
fmt
.
Errorf
(
"error reading manifest %s: %w"
,
path
,
err
)
}
}
for
_
,
layer
:=
range
manifest
.
Layers
{
for
_
,
layer
:=
range
manifest
.
Layers
{
...
@@ -781,8 +776,7 @@ func PruneLayers() error {
...
@@ -781,8 +776,7 @@ func PruneLayers() error {
slog
.
Info
(
fmt
.
Sprintf
(
"total blobs: %d"
,
len
(
deleteMap
)))
slog
.
Info
(
fmt
.
Sprintf
(
"total blobs: %d"
,
len
(
deleteMap
)))
err
=
deleteUnusedLayers
(
nil
,
deleteMap
)
if
err
:=
deleteUnusedLayers
(
nil
,
deleteMap
);
err
!=
nil
{
if
err
!=
nil
{
slog
.
Error
(
fmt
.
Sprintf
(
"couldn't remove unused layers: %v"
,
err
))
slog
.
Error
(
fmt
.
Sprintf
(
"couldn't remove unused layers: %v"
,
err
))
return
nil
return
nil
}
}
...
@@ -877,26 +871,19 @@ func PushModel(ctx context.Context, name string, regOpts *registryOptions, fn fu
...
@@ -877,26 +871,19 @@ func PushModel(ctx context.Context, name string, regOpts *registryOptions, fn fu
func
PullModel
(
ctx
context
.
Context
,
name
string
,
regOpts
*
registryOptions
,
fn
func
(
api
.
ProgressResponse
))
error
{
func
PullModel
(
ctx
context
.
Context
,
name
string
,
regOpts
*
registryOptions
,
fn
func
(
api
.
ProgressResponse
))
error
{
mp
:=
ParseModelPath
(
name
)
mp
:=
ParseModelPath
(
name
)
var
manifest
*
Manifest
var
err
error
var
noprune
string
// build deleteMap to prune unused layers
// build deleteMap to prune unused layers
deleteMap
:=
make
(
map
[
string
]
struct
{})
deleteMap
:=
make
(
map
[
string
]
struct
{})
manifest
,
_
,
err
:=
GetManifest
(
mp
)
if
!
envconfig
.
NoPrune
()
{
if
errors
.
Is
(
err
,
os
.
ErrNotExist
)
{
manifest
,
_
,
err
=
GetManifest
(
mp
)
// noop
if
err
!=
nil
&&
!
errors
.
Is
(
err
,
os
.
ErrNotExist
)
{
}
else
if
err
!=
nil
&&
!
errors
.
Is
(
err
,
os
.
ErrNotExist
)
{
return
err
return
err
}
else
{
for
_
,
l
:=
range
manifest
.
Layers
{
deleteMap
[
l
.
Digest
]
=
struct
{}{}
}
}
if
manifest
.
Config
.
Digest
!=
""
{
if
manifest
!=
nil
{
deleteMap
[
manifest
.
Config
.
Digest
]
=
struct
{}{}
for
_
,
l
:=
range
manifest
.
Layers
{
deleteMap
[
l
.
Digest
]
=
struct
{}{}
}
if
manifest
.
Config
.
Digest
!=
""
{
deleteMap
[
manifest
.
Config
.
Digest
]
=
struct
{}{}
}
}
}
}
}
...
@@ -975,11 +962,9 @@ func PullModel(ctx context.Context, name string, regOpts *registryOptions, fn fu
...
@@ -975,11 +962,9 @@ func PullModel(ctx context.Context, name string, regOpts *registryOptions, fn fu
return
err
return
err
}
}
if
noprune
==
""
{
if
!
envconfig
.
NoPrune
()
&&
len
(
deleteMap
)
>
0
{
fn
(
api
.
ProgressResponse
{
Status
:
"removing any unused layers"
})
fn
(
api
.
ProgressResponse
{
Status
:
"removing unused layers"
})
err
=
deleteUnusedLayers
(
nil
,
deleteMap
)
if
err
:=
deleteUnusedLayers
(
nil
,
deleteMap
);
err
!=
nil
{
if
err
!=
nil
{
slog
.
Error
(
fmt
.
Sprintf
(
"couldn't remove unused layers: %v"
,
err
))
fn
(
api
.
ProgressResponse
{
Status
:
fmt
.
Sprintf
(
"couldn't remove unused layers: %v"
,
err
)})
fn
(
api
.
ProgressResponse
{
Status
:
fmt
.
Sprintf
(
"couldn't remove unused layers: %v"
,
err
)})
}
}
}
}
...
@@ -1000,12 +985,12 @@ func pullModelManifest(ctx context.Context, mp ModelPath, regOpts *registryOptio
...
@@ -1000,12 +985,12 @@ func pullModelManifest(ctx context.Context, mp ModelPath, regOpts *registryOptio
}
}
defer
resp
.
Body
.
Close
()
defer
resp
.
Body
.
Close
()
var
m
*
Manifest
var
m
Manifest
if
err
:=
json
.
NewDecoder
(
resp
.
Body
)
.
Decode
(
&
m
);
err
!=
nil
{
if
err
:=
json
.
NewDecoder
(
resp
.
Body
)
.
Decode
(
&
m
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
m
,
err
return
&
m
,
err
}
}
// GetSHA256Digest returns the SHA256 hash of a given buffer and returns it, and the size of buffer
// GetSHA256Digest returns the SHA256 hash of a given buffer and returns it, and the size of buffer
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment