Skip to content

Commit 4c00531

Browse files
Merge pull request openshift#7178 from bfournie/oc-cmd-disconnected
OCPBUGS-13094: Use oc command in bootkube.service in a disconnected env
2 parents d50f489 + 8240b47 commit 4c00531

File tree

3 files changed

+52
-48
lines changed

3 files changed

+52
-48
lines changed

data/data/bootstrap/files/usr/local/bin/bootkube.sh.template

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ COREDNS_IMAGE=$(image_for coredns)
6767
HAPROXY_IMAGE=$(image_for haproxy-router)
6868
BAREMETAL_RUNTIMECFG_IMAGE=$(image_for baremetal-runtimecfg)
6969

70-
VERSION="$(oc adm release info -o 'jsonpath={.metadata.version}' "${RELEASE_IMAGE_DIGEST}")"
71-
7270
mkdir --parents ./{bootstrap-manifests,manifests}
7371

7472
if [ ! -f openshift-manifests.done ]
@@ -80,6 +78,18 @@ then
8078
record_service_stage_success
8179
fi
8280

81+
ICSP_MANIFEST_FILE="$PWD/manifests/image-content-source-policy.yaml"
82+
IDMS_MANIFEST_FILE="$PWD/manifests/image-digest-mirror-set.yaml"
83+
84+
MIRROR_FLAG=""
85+
if [ -f $ICSP_MANIFEST_FILE ]; then
86+
MIRROR_FLAG="--icsp-file=$ICSP_MANIFEST_FILE"
87+
elif [ -f $IDMS_MANIFEST_FILE ]; then
88+
# Requires https://issues.redhat.com/browse/OCPNODE-1656
89+
MIRROR_FLAG="--idms-file=$IDMS_MANIFEST_FILE"
90+
fi
91+
92+
VERSION="$(oc adm release info -o 'jsonpath={.metadata.version}' "${MIRROR_FLAG}" "${RELEASE_IMAGE_DIGEST}")"
8393

8494
if [ ! -f config-bootstrap.done ]
8595
then

pkg/asset/manifests/imagedigestmirrorset.go

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package manifests
22

33
import (
4-
"fmt"
54
"path/filepath"
65

76
"github.com/pkg/errors"
@@ -13,11 +12,11 @@ import (
1312
"github.com/openshift/installer/pkg/asset/installconfig"
1413
)
1514

16-
var imageDigestMirrorSetFilenameFormat = "image-digest-mirror-set-%s.yaml"
15+
var imageDigestMirrorSetFilename = "image-digest-mirror-set.yaml"
1716

18-
// ImageDigestMirrorSet generates the image-digest-mirror-set.yaml files.
17+
// ImageDigestMirrorSet generates the image-digest-mirror-set.yaml file.
1918
type ImageDigestMirrorSet struct {
20-
FileList []*asset.File
19+
File *asset.File
2120
}
2221

2322
var _ asset.WritableAsset = (*ImageDigestMirrorSet)(nil)
@@ -40,38 +39,33 @@ func (p *ImageDigestMirrorSet) Generate(dependencies asset.Parents) error {
4039
installconfig := &installconfig.InstallConfig{}
4140
dependencies.Get(installconfig)
4241

43-
padFormat := fmt.Sprintf("%%0%dd", len(fmt.Sprintf("%d", len(installconfig.Config.ImageDigestSources))))
44-
45-
policies := make([]*apicfgv1.ImageDigestMirrorSet, 0)
46-
for gidx, group := range installconfig.Config.ImageDigestSources {
47-
mirrors := []apicfgv1.ImageMirror{}
48-
for _, m := range group.Mirrors {
49-
mirrors = append(mirrors, apicfgv1.ImageMirror(m))
50-
}
51-
policies = append(policies, &apicfgv1.ImageDigestMirrorSet{
42+
if len(installconfig.Config.ImageDigestSources) > 0 {
43+
policy := apicfgv1.ImageDigestMirrorSet{
5244
TypeMeta: metav1.TypeMeta{
5345
APIVersion: apicfgv1.SchemeGroupVersion.String(),
5446
Kind: "ImageDigestMirrorSet",
5547
},
5648
ObjectMeta: metav1.ObjectMeta{
57-
Name: fmt.Sprintf("image-digest-mirror-%s", fmt.Sprintf(padFormat, gidx)),
49+
Name: "image-digest-mirror",
5850
// not namespaced
5951
},
60-
Spec: apicfgv1.ImageDigestMirrorSetSpec{
61-
ImageDigestMirrors: []apicfgv1.ImageDigestMirrors{{Source: group.Source, Mirrors: mirrors}},
62-
},
63-
})
64-
}
52+
}
53+
54+
policy.Spec.ImageDigestMirrors = make([]apicfgv1.ImageDigestMirrors, len(installconfig.Config.ImageDigestSources))
55+
for gidx, group := range installconfig.Config.ImageDigestSources {
56+
mirrors := []apicfgv1.ImageMirror{}
57+
for _, m := range group.Mirrors {
58+
mirrors = append(mirrors, apicfgv1.ImageMirror(m))
59+
}
60+
policy.Spec.ImageDigestMirrors[gidx] = apicfgv1.ImageDigestMirrors{Source: group.Source, Mirrors: mirrors}
61+
}
6562

66-
p.FileList = make([]*asset.File, len(policies))
67-
for i, policy := range policies {
6863
policyData, err := yaml.Marshal(policy)
6964
if err != nil {
7065
return errors.Wrapf(err, "failed to marshal ImageDigestMirrorSet")
7166
}
72-
padded := fmt.Sprintf(padFormat, i)
73-
p.FileList[i] = &asset.File{
74-
Filename: filepath.Join(manifestDir, fmt.Sprintf(imageDigestMirrorSetFilenameFormat, padded)),
67+
p.File = &asset.File{
68+
Filename: filepath.Join(manifestDir, imageDigestMirrorSetFilename),
7569
Data: policyData,
7670
}
7771
}
@@ -80,7 +74,10 @@ func (p *ImageDigestMirrorSet) Generate(dependencies asset.Parents) error {
8074

8175
// Files returns the files generated by the asset.
8276
func (p *ImageDigestMirrorSet) Files() []*asset.File {
83-
return p.FileList
77+
if p.File == nil {
78+
return nil
79+
}
80+
return []*asset.File{p.File}
8481
}
8582

8683
// Load loads the already-rendered files back from disk.

pkg/asset/manifests/imagesourcepolicy.go

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package manifests
22

33
import (
4-
"fmt"
54
"path/filepath"
65

76
"github.com/pkg/errors"
@@ -13,11 +12,11 @@ import (
1312
"github.com/openshift/installer/pkg/asset/installconfig"
1413
)
1514

16-
var imageContentSourcePolicyFilenameFormat = "image-content-source-policy-%s.yaml"
15+
var imageContentSourcePolicyFilename = "image-content-source-policy.yaml"
1716

18-
// ImageContentSourcePolicy generates the image-content-source-policy.yaml files.
17+
// ImageContentSourcePolicy generates the image-content-source-policy.yaml file.
1918
type ImageContentSourcePolicy struct {
20-
FileList []*asset.File
19+
File *asset.File
2120
}
2221

2322
var _ asset.WritableAsset = (*ImageContentSourcePolicy)(nil)
@@ -40,34 +39,29 @@ func (p *ImageContentSourcePolicy) Generate(dependencies asset.Parents) error {
4039
installconfig := &installconfig.InstallConfig{}
4140
dependencies.Get(installconfig)
4241

43-
padFormat := fmt.Sprintf("%%0%dd", len(fmt.Sprintf("%d", len(installconfig.Config.DeprecatedImageContentSources))))
44-
45-
var policies []*operatorv1alpha1.ImageContentSourcePolicy
46-
for gidx, group := range installconfig.Config.DeprecatedImageContentSources {
47-
policies = append(policies, &operatorv1alpha1.ImageContentSourcePolicy{
42+
if len(installconfig.Config.DeprecatedImageContentSources) > 0 {
43+
policy := operatorv1alpha1.ImageContentSourcePolicy{
4844
TypeMeta: metav1.TypeMeta{
4945
APIVersion: operatorv1alpha1.SchemeGroupVersion.String(),
5046
Kind: "ImageContentSourcePolicy",
5147
},
5248
ObjectMeta: metav1.ObjectMeta{
53-
Name: fmt.Sprintf("image-policy-%s", fmt.Sprintf(padFormat, gidx)),
49+
Name: "image-policy",
5450
// not namespaced
5551
},
56-
Spec: operatorv1alpha1.ImageContentSourcePolicySpec{
57-
RepositoryDigestMirrors: []operatorv1alpha1.RepositoryDigestMirrors{{Source: group.Source, Mirrors: group.Mirrors}},
58-
},
59-
})
60-
}
52+
}
53+
54+
policy.Spec.RepositoryDigestMirrors = make([]operatorv1alpha1.RepositoryDigestMirrors, len(installconfig.Config.DeprecatedImageContentSources))
55+
for gidx, group := range installconfig.Config.DeprecatedImageContentSources {
56+
policy.Spec.RepositoryDigestMirrors[gidx] = operatorv1alpha1.RepositoryDigestMirrors{Source: group.Source, Mirrors: group.Mirrors}
57+
}
6158

62-
p.FileList = make([]*asset.File, len(policies))
63-
for i, policy := range policies {
6459
policyData, err := yaml.Marshal(policy)
6560
if err != nil {
6661
return errors.Wrapf(err, "failed to marshal ImageContentSourcePolicy")
6762
}
68-
padded := fmt.Sprintf(padFormat, i)
69-
p.FileList[i] = &asset.File{
70-
Filename: filepath.Join(manifestDir, fmt.Sprintf(imageContentSourcePolicyFilenameFormat, padded)),
63+
p.File = &asset.File{
64+
Filename: filepath.Join(manifestDir, imageContentSourcePolicyFilename),
7165
Data: policyData,
7266
}
7367
}
@@ -76,7 +70,10 @@ func (p *ImageContentSourcePolicy) Generate(dependencies asset.Parents) error {
7670

7771
// Files returns the files generated by the asset.
7872
func (p *ImageContentSourcePolicy) Files() []*asset.File {
79-
return p.FileList
73+
if p.File == nil {
74+
return nil
75+
}
76+
return []*asset.File{p.File}
8077
}
8178

8279
// Load loads the already-rendered files back from disk.

0 commit comments

Comments
 (0)