Fix transfer service dependencies:

- Fill OSVersion field of ocispec.Platform for windows OS in
transfer service plugin init()
- Do not return error from transfer service ReceiveStream if
stream.Recv() returned context.Canceled error

Signed-off-by: Kirtana Ashok <kiashok@microsoft.com>
This commit is contained in:
Kirtana Ashok 2023-08-15 12:55:56 -07:00
parent cfb30a31a8
commit 823e0420eb
4 changed files with 25 additions and 1 deletions

View File

@ -164,7 +164,7 @@ func ReceiveStream(ctx context.Context, stream streaming.Stream) io.Reader {
} }
anyType, err := stream.Recv() anyType, err := stream.Recv()
if err != nil { if err != nil {
if errors.Is(err, io.EOF) { if errors.Is(err, io.EOF) || errors.Is(err, context.Canceled) {
err = nil err = nil
} else { } else {
err = fmt.Errorf("received failed: %w", err) err = fmt.Errorf("received failed: %w", err)

View File

@ -213,6 +213,10 @@ func Parse(specifier string) (specs.Platform, error) {
p.Variant = cpuVariant() p.Variant = cpuVariant()
} }
if p.OS == "windows" {
p.OSVersion = GetWindowsOsVersion()
}
return p, nil return p, nil
} }
@ -235,6 +239,10 @@ func Parse(specifier string) (specs.Platform, error) {
p.Variant = "" p.Variant = ""
} }
if p.OS == "windows" {
p.OSVersion = GetWindowsOsVersion()
}
return p, nil return p, nil
case 3: case 3:
// we have a fully specified variant, this is rare // we have a fully specified variant, this is rare
@ -244,6 +252,10 @@ func Parse(specifier string) (specs.Platform, error) {
p.Variant = "v8" p.Variant = "v8"
} }
if p.OS == "windows" {
p.OSVersion = GetWindowsOsVersion()
}
return p, nil return p, nil
} }

View File

@ -28,3 +28,7 @@ func newDefaultMatcher(platform specs.Platform) Matcher {
Platform: Normalize(platform), Platform: Normalize(platform),
} }
} }
func GetWindowsOsVersion() string {
return ""
}

View File

@ -17,7 +17,10 @@
package platforms package platforms
import ( import (
"fmt"
specs "github.com/opencontainers/image-spec/specs-go/v1" specs "github.com/opencontainers/image-spec/specs-go/v1"
"golang.org/x/sys/windows"
) )
// NewMatcher returns a Windows matcher that will match on osVersionPrefix if // NewMatcher returns a Windows matcher that will match on osVersionPrefix if
@ -32,3 +35,8 @@ func newDefaultMatcher(platform specs.Platform) Matcher {
}, },
} }
} }
func GetWindowsOsVersion() string {
major, minor, build := windows.RtlGetNtVersionNumbers()
return fmt.Sprintf("%d.%d.%d", major, minor, build)
}