Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 0 additions & 52 deletions pkg/image/apis/image/docker10/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,61 +3,9 @@ package docker10
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/openshift/api/image/docker10"

"github.com/openshift/openshift-apiserver/pkg/image/apis/image"
)

// Convert_DockerV1CompatibilityImage_to_DockerImageConfig takes a container image registry digest
// (schema 2.1) and converts it to the external API version of Image.
func Convert_DockerV1CompatibilityImage_to_DockerImageConfig(in *DockerV1CompatibilityImage, out *DockerImageConfig) error {
*out = DockerImageConfig{
ID: in.ID,
Parent: in.Parent,
Comment: in.Comment,
Created: in.Created,
Container: in.Container,
DockerVersion: in.DockerVersion,
Author: in.Author,
Architecture: in.Architecture,
Size: in.Size,
OS: "linux",
ContainerConfig: in.ContainerConfig,
}
if in.Config != nil {
out.Config = &docker10.DockerConfig{}
*out.Config = *in.Config
}
return nil
}

// Convert_DockerV1CompatibilityImage_to_image_DockerImage takes a container
// image registry digest (schema 2.1) and converts it to the internal API
// version of Image.
func Convert_DockerV1CompatibilityImage_to_image_DockerImage(in *DockerV1CompatibilityImage, out *image.DockerImage) error {
*out = image.DockerImage{
ID: in.ID,
Parent: in.Parent,
Comment: in.Comment,
Created: metav1.Time{Time: in.Created},
Container: in.Container,
DockerVersion: in.DockerVersion,
Author: in.Author,
Architecture: in.Architecture,
Size: in.Size,
}
if err := Convert_docker10_DockerConfig_To_image_DockerConfig(&in.ContainerConfig, &out.ContainerConfig, nil); err != nil {
return err
}
if in.Config != nil {
out.Config = &image.DockerConfig{}
if err := Convert_docker10_DockerConfig_To_image_DockerConfig(in.Config, out.Config, nil); err != nil {
return err
}
}
return nil
}

// Convert_DockerImageConfig_to_image_DockerImage takes a container image
// registry digest (schema 2.2) and converts it to the internal API version of
// Image.
Expand Down
42 changes: 0 additions & 42 deletions pkg/image/apis/image/docker10/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,53 +28,11 @@ type DockerImageManifest struct {
SchemaVersion int `json:"schemaVersion"`
MediaType string `json:"mediaType,omitempty"`

// schema1
Name string `json:"name"`
Tag string `json:"tag"`
Architecture string `json:"architecture"`
FSLayers []DockerFSLayer `json:"fsLayers"`
History []DockerHistory `json:"history"`

// schema2
Layers []Descriptor `json:"layers"`
Config Descriptor `json:"config"`
}

// DockerFSLayer is a container struct for BlobSums defined in an image manifest
type DockerFSLayer struct {
// DockerBlobSum is the tarsum of the referenced filesystem image layer
// TODO make this digest.Digest once distribution/distribution/v3 is in Godeps
DockerBlobSum string `json:"blobSum"`
}

// DockerHistory stores unstructured v1 compatibility information
type DockerHistory struct {
// DockerV1Compatibility is the raw v1 compatibility information
DockerV1Compatibility string `json:"v1Compatibility"`
}

// DockerV1CompatibilityImage represents the structured v1
// compatibility information.
type DockerV1CompatibilityImage struct {
ID string `json:"id"`
Parent string `json:"parent,omitempty"`
Comment string `json:"comment,omitempty"`
Created time.Time `json:"created"`
Container string `json:"container,omitempty"`
ContainerConfig docker10.DockerConfig `json:"container_config,omitempty"`
DockerVersion string `json:"docker_version,omitempty"`
Author string `json:"author,omitempty"`
Config *docker10.DockerConfig `json:"config,omitempty"`
Architecture string `json:"architecture,omitempty"`
Size int64 `json:"size,omitempty"`
}

// DockerV1CompatibilityImageSize represents the structured v1
// compatibility information for size
type DockerV1CompatibilityImageSize struct {
Size int64 `json:"size,omitempty"`
}

// DockerImageConfig stores the image configuration
type DockerImageConfig struct {
ID string `json:"id"`
Expand Down
5 changes: 3 additions & 2 deletions pkg/image/apiserver/admission/limitrange/admission_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
imagev1 "github.com/openshift/api/image/v1"
"github.com/openshift/openshift-apiserver/pkg/api/legacy"
imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/testutil"
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/testutil"
)

func TestAdmitImageStreamMapping(t *testing.T) {
Expand All @@ -36,7 +36,7 @@ func TestAdmitImageStreamMapping(t *testing.T) {
},
"new ism, under limit range": {
imageStreamMapping: getImageStreamMapping(),
limitRange: getLimitRange("1Ki"),
limitRange: getLimitRange("2Mi"),
operation: admission.Create,
shouldAdmit: true,
},
Expand Down Expand Up @@ -246,6 +246,7 @@ func getBaseImageWith1Layer() imageapi.Image {
},
DockerImageReference: fmt.Sprintf("registry.example.org/%s/%s", "test", testutil.BaseImageWith1LayerDigest),
DockerImageManifest: testutil.BaseImageWith1Layer,
DockerImageConfig: testutil.BaseImageWith1LayerConfig,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/openshift/library-go/pkg/quota/quotautil"

imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/testutil"
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/testutil"
)

func TestGetMaxLimits(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion pkg/image/apiserver/admission/limitrange/usage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
imagev1 "github.com/openshift/api/image/v1"
"github.com/openshift/library-go/pkg/image/imageutil"
imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/testutil"
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/testutil"
)

func TestGetImageReferenceForObjectReference(t *testing.T) {
Expand Down
36 changes: 0 additions & 36 deletions pkg/image/apiserver/importer/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (

"github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/manifest/manifestlist"
"github.com/distribution/distribution/v3/manifest/schema1"
"github.com/distribution/distribution/v3/registry/api/errcode"
godigest "github.com/opencontainers/go-digest"

Expand All @@ -18,41 +17,6 @@ import (
imagedockerpre012 "github.com/openshift/openshift-apiserver/pkg/image/apis/image/dockerpre012"
)

func schema1ToImage(manifest *schema1.SignedManifest, d godigest.Digest) (*imageapi.Image, error) {
if len(manifest.History) == 0 {
return nil, fmt.Errorf("image has no v1Compatibility history and cannot be used")
}
dockerImage, err := unmarshalDockerImage([]byte(manifest.History[0].V1Compatibility))
if err != nil {
return nil, err
}
mediatype, payload, err := manifest.Payload()
if err != nil {
return nil, err
}

if len(manifest.Canonical) == 0 {
return nil, fmt.Errorf("unable to load canonical representation from schema1 manifest")
}
payloadDigest := godigest.FromBytes(manifest.Canonical)
if len(d) > 0 && payloadDigest != d {
return nil, fmt.Errorf("content integrity error: the schema 1 manifest retrieved with digest %s does not match the digest calculated from the content %s", d, payloadDigest)
}
dockerImage.ID = payloadDigest.String()

image := &imageapi.Image{
ObjectMeta: metav1.ObjectMeta{
Name: dockerImage.ID,
},
DockerImageMetadata: *dockerImage,
DockerImageManifest: string(payload),
DockerImageManifestMediaType: mediatype,
DockerImageMetadataVersion: "1.0",
}

return image, nil
}

// schema2OrOCIToImage converts a docker schema 2 or an oci schema manifest into an Image.
func schema2OrOCIToImage(manifest distribution.Manifest, imageConfig []byte, d godigest.Digest) (*imageapi.Image, error) {
mediatype, payload, err := manifest.Payload()
Expand Down
3 changes: 0 additions & 3 deletions pkg/image/apiserver/importer/importer.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/distribution/distribution/v3"
"github.com/distribution/distribution/v3/manifest/manifestlist"
"github.com/distribution/distribution/v3/manifest/ocischema"
"github.com/distribution/distribution/v3/manifest/schema1"
"github.com/distribution/distribution/v3/manifest/schema2"
"github.com/distribution/distribution/v3/reference"
"github.com/distribution/distribution/v3/registry/api/errcode"
Expand Down Expand Up @@ -743,8 +742,6 @@ func (imp *ImageStreamImporter) importManifest(
if isManifestList && !legacyManifestListImport {
image, err = manifestListToImage(manifestList, d)
return
} else if signedManifest, isSchema1 := manifest.(*schema1.SignedManifest); isSchema1 {
image, err = schema1ToImage(signedManifest, d)
} else if deserializedManifest, isSchema2 := manifest.(*schema2.DeserializedManifest); isSchema2 {
imageConfig, getImportConfigErr := b.Get(ctx, deserializedManifest.Config.Digest)
if getImportConfigErr != nil {
Expand Down
Loading