Skip to content

Commit 0f15b90

Browse files
committed
use dynamic mapper for template instantiation
1 parent e816be9 commit 0f15b90

File tree

5 files changed

+48
-22
lines changed

5 files changed

+48
-22
lines changed

pkg/oc/bootstrap/docker/openshift/logging.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (h *Helper) InstallLogging(f *clientcmd.Factory, publicHostname, loggerHost
9292
}
9393

9494
// Instantiate logging deployer account template
95-
err = instantiateTemplate(templateClient.Template(), clientcmd.ResourceMapper(f), nil, OpenshiftInfraNamespace, loggingDeployerAccountTemplate, loggingNamespace, nil, false)
95+
err = instantiateTemplate(templateClient.Template(), f, OpenshiftInfraNamespace, loggingDeployerAccountTemplate, loggingNamespace, nil, false)
9696
if err != nil {
9797
return errors.NewError("cannot instantiate logger accounts").WithCause(err)
9898
}
@@ -144,7 +144,7 @@ func (h *Helper) InstallLogging(f *clientcmd.Factory, publicHostname, loggerHost
144144
"IMAGE_PREFIX": fmt.Sprintf("%s-", imagePrefix),
145145
"MODE": "install",
146146
}
147-
err = instantiateTemplate(templateClient.Template(), clientcmd.ResourceMapper(f), nil, OpenshiftInfraNamespace, loggingDeployerTemplate, loggingNamespace, deployerParams, false)
147+
err = instantiateTemplate(templateClient.Template(), f, OpenshiftInfraNamespace, loggingDeployerTemplate, loggingNamespace, deployerParams, false)
148148
if err != nil {
149149
return errors.NewError("cannot instantiate logging deployer").WithCause(err)
150150
}

pkg/oc/bootstrap/docker/openshift/servicecatalog.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func (h *Helper) InstallServiceCatalog(f *clientcmd.Factory, configDir, publicMa
7070
glog.V(2).Infof("instantiating service catalog template with parameters %v", params)
7171

7272
// Stands up the service catalog apiserver, etcd, and controller manager
73-
err = instantiateTemplate(templateClient.Template(), clientcmd.ResourceMapper(f), nil, OpenshiftInfraNamespace, catalogTemplate, catalogNamespace, params, true)
73+
err = instantiateTemplate(templateClient.Template(), f, OpenshiftInfraNamespace, catalogTemplate, catalogNamespace, params, true)
7474
if err != nil {
7575
return errors.NewError("cannot instantiate service catalog template").WithCause(err)
7676
}

pkg/oc/bootstrap/docker/openshift/templateservicebroker.go

+3-12
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1414
"k8s.io/apimachinery/pkg/util/wait"
1515
kapi "k8s.io/kubernetes/pkg/api"
16-
"k8s.io/kubernetes/pkg/kubectl/resource"
1716

1817
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
1918
"github.com/openshift/origin/pkg/cmd/util/variable"
@@ -43,7 +42,7 @@ func (h *Helper) InstallTemplateServiceBroker(f *clientcmd.Factory, imageFormat
4342
return errors.NewError("cannot create template service broker project").WithCause(err)
4443
}
4544

46-
if err = instantiateTemplate(templateClient.Template(), clientcmd.ResourceMapper(f), nil, OpenshiftInfraNamespace, tsbRBACTemplateName, tsbNamespace, map[string]string{}, true); err != nil {
45+
if err = instantiateTemplate(templateClient.Template(), f, OpenshiftInfraNamespace, tsbRBACTemplateName, tsbNamespace, map[string]string{}, true); err != nil {
4746
return errors.NewError("cannot instantiate template service broker permissions").WithCause(err)
4847
}
4948

@@ -59,7 +58,7 @@ func (h *Helper) InstallTemplateServiceBroker(f *clientcmd.Factory, imageFormat
5958
}
6059
glog.V(2).Infof("instantiating template service broker template with parameters %v", params)
6160

62-
if err = instantiateTemplate(templateClient.Template(), clientcmd.ResourceMapper(f), nil, OpenshiftInfraNamespace, tsbAPIServerTemplateName, tsbNamespace, params, true); err != nil {
61+
if err = instantiateTemplate(templateClient.Template(), f, OpenshiftInfraNamespace, tsbAPIServerTemplateName, tsbNamespace, params, true); err != nil {
6362
return errors.NewError("cannot instantiate template service broker resources").WithCause(err)
6463
}
6564

@@ -92,20 +91,12 @@ func (h *Helper) RegisterTemplateServiceBroker(f *clientcmd.Factory, configDir s
9291
// Register the template broker with the service catalog
9392
glog.V(2).Infof("registering the template broker with the service catalog")
9493

95-
// dynamic mapper is needed to support the broker resource which isn't part of the api.
96-
dynamicMapper, dynamicTyper, err := f.UnstructuredObject()
97-
dmapper := &resource.Mapper{
98-
RESTMapper: dynamicMapper,
99-
ObjectTyper: dynamicTyper,
100-
ClientMapper: resource.ClientMapperFunc(f.UnstructuredClientForMapping),
101-
}
102-
10394
serviceCABytes, err := ioutil.ReadFile(filepath.Join(configDir, "master", "service-signer.crt"))
10495
serviceCAString := base64.StdEncoding.EncodeToString(serviceCABytes)
10596
if err != nil {
10697
return errors.NewError("unable to read service signer cert").WithCause(err)
10798
}
108-
if err = instantiateTemplate(templateClient.Template(), clientcmd.ResourceMapper(f), dmapper, OpenshiftInfraNamespace, tsbRegistrationTemplateName, tsbNamespace, map[string]string{
99+
if err = instantiateTemplate(templateClient.Template(), f, OpenshiftInfraNamespace, tsbRegistrationTemplateName, tsbNamespace, map[string]string{
109100
"TSB_NAMESPACE": tsbNamespace,
110101
"CA_BUNDLE": serviceCAString,
111102
}, true); err != nil {

pkg/oc/bootstrap/docker/openshift/util.go

+32-5
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@ import (
55
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
66
kerrorutils "k8s.io/apimachinery/pkg/util/errors"
77
kapi "k8s.io/kubernetes/pkg/api"
8+
"k8s.io/kubernetes/pkg/kubectl/resource"
89

10+
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
911
configcmd "github.com/openshift/origin/pkg/config/cmd"
1012
genappcmd "github.com/openshift/origin/pkg/generate/app/cmd"
1113
"github.com/openshift/origin/pkg/oc/bootstrap/docker/errors"
1214
templateinternalclient "github.com/openshift/origin/pkg/template/client/internalversion"
1315
templateclient "github.com/openshift/origin/pkg/template/generated/internalclientset/typed/template/internalversion"
1416
)
1517

16-
func instantiateTemplate(client templateclient.TemplateInterface, mapper configcmd.Mapper, dmapper configcmd.Mapper, templateNamespace, templateName, targetNamespace string, params map[string]string, ignoreExistsErrors bool) error {
18+
func instantiateTemplate(client templateclient.TemplateInterface, clientFactory *clientcmd.Factory, templateNamespace, templateName, targetNamespace string, params map[string]string, ignoreExistsErrors bool) error {
1719
template, err := client.Templates(templateNamespace).Get(templateName, metav1.GetOptions{})
1820
if err != nil {
1921
return errors.NewError("cannot retrieve template %q from namespace %q", templateName, templateNamespace).WithCause(err)
@@ -26,12 +28,37 @@ func instantiateTemplate(client templateclient.TemplateInterface, mapper configc
2628
return errors.NewError("cannot process template %s/%s", templateNamespace, templateName).WithCause(err)
2729
}
2830

31+
mapper, typer := clientFactory.Object()
32+
dynamicMapper, dynamicTyper, err := clientFactory.UnstructuredObject()
33+
if err != nil {
34+
return err
35+
}
36+
37+
discoveryClient, err := clientFactory.DiscoveryClient()
38+
if err != nil {
39+
return errors.NewError("cannot process template %s/%s", templateNamespace, templateName).WithCause(err)
40+
}
41+
clientConfig, err := clientFactory.ClientConfig()
42+
if err != nil {
43+
return err
44+
}
45+
2946
// Create objects
30-
bulk := &configcmd.Bulk{
31-
Mapper: mapper,
32-
Op: configcmd.Create,
47+
bulk := &configcmd.Bulk{}
48+
49+
bulk.DynamicMapper = &resource.Mapper{
50+
RESTMapper: dynamicMapper,
51+
ObjectTyper: dynamicTyper,
52+
ClientMapper: resource.ClientMapperFunc(clientFactory.UnstructuredClientForMapping),
53+
}
54+
bulk.Mapper = &resource.Mapper{
55+
RESTMapper: mapper,
56+
ObjectTyper: typer,
57+
ClientMapper: configcmd.ClientMapperFromConfig(clientConfig),
3358
}
34-
bulk.DynamicMapper = dmapper
59+
bulk.PreferredSerializationOrder = configcmd.PreferredSerializationOrder(discoveryClient)
60+
bulk.Op = configcmd.Create
61+
3562
itemsToCreate := &kapi.List{
3663
Items: result.Objects,
3764
}

pkg/oc/bootstrap/docker/up.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -1140,7 +1140,11 @@ func (c *ClientStartConfig) InstallTemplateServiceBroker(out io.Writer) error {
11401140
}
11411141
// TODO we want to use this eventually, but until we have our own image for TSB, we have to hardcode this origin
11421142
//return c.OpenShiftHelper().InstallTemplateServiceBroker(f, c.imageFormat())
1143-
return c.OpenShiftHelper().InstallTemplateServiceBroker(f, imageTemplate, c.ServerLogLevel)
1143+
err = c.OpenShiftHelper().InstallTemplateServiceBroker(f, imageTemplate, c.ServerLogLevel)
1144+
if err != nil {
1145+
glog.Errorf("error installing tsb: %v", err)
1146+
}
1147+
return nil
11441148
}
11451149

11461150
// RegisterTemplateServiceBroker will register the tsb with the service catalog
@@ -1149,7 +1153,11 @@ func (c *ClientStartConfig) RegisterTemplateServiceBroker(out io.Writer) error {
11491153
if err != nil {
11501154
return err
11511155
}
1152-
return c.OpenShiftHelper().RegisterTemplateServiceBroker(f, c.LocalConfigDir)
1156+
err = c.OpenShiftHelper().RegisterTemplateServiceBroker(f, c.LocalConfigDir)
1157+
if err != nil {
1158+
glog.Errorf("error registering tsb: %v", err)
1159+
}
1160+
return nil
11531161
}
11541162

11551163
// Login logs into the new server and sets up a default user and project

0 commit comments

Comments
 (0)