github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/offering/base/console/override/deployercm_test.go (about)

     1  /*
     2   * Copyright contributors to the Hyperledger Fabric Operator project
     3   *
     4   * SPDX-License-Identifier: Apache-2.0
     5   *
     6   * Licensed under the Apache License, Version 2.0 (the "License");
     7   * you may not use this file except in compliance with the License.
     8   * You may obtain a copy of the License at:
     9   *
    10   * 	  http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   * Unless required by applicable law or agreed to in writing, software
    13   * distributed under the License is distributed on an "AS IS" BASIS,
    14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    15   * See the License for the specific language governing permissions and
    16   * limitations under the License.
    17   */
    18  
    19  package override_test
    20  
    21  import (
    22  	. "github.com/onsi/ginkgo/v2"
    23  	. "github.com/onsi/gomega"
    24  	corev1 "k8s.io/api/core/v1"
    25  	"sigs.k8s.io/yaml"
    26  
    27  	current "github.com/IBM-Blockchain/fabric-operator/api/v1beta1"
    28  	"github.com/IBM-Blockchain/fabric-operator/pkg/apis/deployer"
    29  
    30  	"github.com/IBM-Blockchain/fabric-operator/pkg/manager/resources"
    31  	"github.com/IBM-Blockchain/fabric-operator/pkg/offering/base/console/override"
    32  	"github.com/IBM-Blockchain/fabric-operator/pkg/util"
    33  )
    34  
    35  var _ = Describe("Base Console Deployer Config Map Overrides", func() {
    36  	var (
    37  		overrider *override.Override
    38  		instance  *current.IBPConsole
    39  		cm        *corev1.ConfigMap
    40  	)
    41  
    42  	BeforeEach(func() {
    43  		var err error
    44  		overrider = &override.Override{}
    45  		instance = &current.IBPConsole{
    46  			Spec: current.IBPConsoleSpec{
    47  				ImagePullSecrets: []string{"pullsecret"},
    48  				ConnectionString: "connectionString1",
    49  				Storage: &current.ConsoleStorage{
    50  					Console: &current.StorageSpec{
    51  						Class: "sc1",
    52  					},
    53  				},
    54  				NetworkInfo: &current.NetworkInfo{
    55  					Domain: "domain1",
    56  				},
    57  				Versions: &current.Versions{
    58  					CA: map[string]current.VersionCA{
    59  						"v1-0": current.VersionCA{
    60  							Default: true,
    61  							Version: "v1-0",
    62  							Image: current.CAImages{
    63  								CAInitImage: "ca-init-image",
    64  								CAInitTag:   "1.0.0",
    65  								CAImage:     "ca-image",
    66  								CATag:       "1.0.0",
    67  							},
    68  						},
    69  						"v2-0": current.VersionCA{
    70  							Default: false,
    71  							Version: "v2-0",
    72  							Image: current.CAImages{
    73  								CAInitImage: "ca-init-image",
    74  								CAInitTag:   "2.0.0",
    75  								CAImage:     "ca-image",
    76  								CATag:       "2.0.0",
    77  							},
    78  						},
    79  					},
    80  					Peer: map[string]current.VersionPeer{
    81  						"v1-0": current.VersionPeer{
    82  							Default: true,
    83  							Version: "v1-0",
    84  							Image: current.PeerImages{
    85  								PeerInitImage: "peer-init-image",
    86  								PeerInitTag:   "1.0.0",
    87  								PeerImage:     "peer-image",
    88  								PeerTag:       "1.0.0",
    89  								DindImage:     "dind-iamge",
    90  								DindTag:       "1.0.0",
    91  								GRPCWebImage:  "grpcweb-image",
    92  								GRPCWebTag:    "1.0.0",
    93  								FluentdImage:  "fluentd-image",
    94  								FluentdTag:    "1.0.0",
    95  								CouchDBImage:  "couchdb-image",
    96  								CouchDBTag:    "1.0.0",
    97  							},
    98  						},
    99  						"v2-0": current.VersionPeer{
   100  							Default: false,
   101  							Version: "v2-0",
   102  							Image: current.PeerImages{
   103  								PeerInitImage:   "peer-init-image",
   104  								PeerInitTag:     "2.0.0",
   105  								PeerImage:       "peer-image",
   106  								PeerTag:         "2.0.0",
   107  								DindImage:       "dind-iamge",
   108  								DindTag:         "2.0.0",
   109  								GRPCWebImage:    "grpcweb-image",
   110  								GRPCWebTag:      "2.0.0",
   111  								FluentdImage:    "fluentd-image",
   112  								FluentdTag:      "2.0.0",
   113  								CouchDBImage:    "couchdb-image",
   114  								CouchDBTag:      "2.0.0",
   115  								CCLauncherImage: "cclauncher-image",
   116  								CCLauncherTag:   "2.0.0",
   117  							},
   118  						},
   119  					},
   120  					Orderer: map[string]current.VersionOrderer{
   121  						"v1-0": current.VersionOrderer{
   122  							Default: true,
   123  							Version: "v1-0",
   124  							Image: current.OrdererImages{
   125  								OrdererInitImage: "orderer-init-image",
   126  								OrdererInitTag:   "1.0.0",
   127  								OrdererImage:     "orderer-image",
   128  								OrdererTag:       "1.0.0",
   129  								GRPCWebImage:     "grpcweb-image",
   130  								GRPCWebTag:       "1.0.0",
   131  							},
   132  						},
   133  						"v2-0": current.VersionOrderer{
   134  							Default: false,
   135  							Version: "v2-0",
   136  							Image: current.OrdererImages{
   137  								OrdererInitImage: "orderer-init-image",
   138  								OrdererInitTag:   "2.0.0",
   139  								OrdererImage:     "orderer-image",
   140  								OrdererTag:       "2.0.0",
   141  								GRPCWebImage:     "grpcweb-image",
   142  								GRPCWebTag:       "2.0.0",
   143  							},
   144  						},
   145  					},
   146  				},
   147  				CRN: &current.CRN{
   148  					CName:       "cname",
   149  					CType:       "ctype",
   150  					Location:    "location1",
   151  					Servicename: "Servicename1",
   152  					Version:     "version1",
   153  					AccountID:   "id123",
   154  				},
   155  				Deployer: &current.Deployer{
   156  					ConnectionString: "connectionstring2",
   157  				},
   158  				Images: &current.ConsoleImages{
   159  					MustgatherImage: "test-image",
   160  					MustgatherTag:   "test-tag",
   161  				},
   162  			},
   163  		}
   164  		cm, err = util.GetConfigMapFromFile("../../../../../testdata/deployercm/deployer-configmap.yaml")
   165  		Expect(err).NotTo(HaveOccurred())
   166  	})
   167  
   168  	Context("create", func() {
   169  		It("returns an error if base create function called", func() {
   170  			err := overrider.DeployerCM(instance, cm, resources.Create, nil)
   171  			Expect(err).To(HaveOccurred())
   172  			Expect(err.Error()).To(Equal("no create deployer cm defined, this needs to implemented"))
   173  		})
   174  	})
   175  
   176  	Context("update", func() {
   177  		It("return an error if no image pull secret provided", func() {
   178  			instance.Spec.ImagePullSecrets = []string{}
   179  			err := overrider.DeployerCM(instance, cm, resources.Update, nil)
   180  			Expect(err).To(HaveOccurred())
   181  			Expect(err.Error()).To(Equal("no image pull secret provided"))
   182  		})
   183  
   184  		It("return an error if no domain provided", func() {
   185  			instance.Spec.NetworkInfo.Domain = ""
   186  			err := overrider.DeployerCM(instance, cm, resources.Update, nil)
   187  			Expect(err).To(HaveOccurred())
   188  			Expect(err.Error()).To(Equal("no domain provided"))
   189  		})
   190  
   191  		It("overrides values based on spec", func() {
   192  			err := overrider.DeployerCM(instance, cm, resources.Update, nil)
   193  			Expect(err).NotTo(HaveOccurred())
   194  
   195  			config := &deployer.Config{}
   196  
   197  			err = yaml.Unmarshal([]byte(cm.Data["settings.yaml"]), config)
   198  			Expect(err).NotTo(HaveOccurred())
   199  
   200  			By("setting image pull secret", func() {
   201  				Expect(config.ImagePullSecrets).To(Equal(instance.Spec.ImagePullSecrets))
   202  			})
   203  
   204  			By("setting connection string", func() {
   205  				Expect(config.Database.ConnectionURL).To(Equal(instance.Spec.Deployer.ConnectionString))
   206  			})
   207  
   208  			By("setting versions", func() {
   209  				expectedVersions := &current.Versions{
   210  					CA: map[string]current.VersionCA{
   211  						"v1-0": current.VersionCA{
   212  							Default: true,
   213  							Version: "v1-0",
   214  							Image: current.CAImages{
   215  								CAInitImage: "ca-init-image",
   216  								CAInitTag:   "1.0.0",
   217  								CAImage:     "ca-image",
   218  								CATag:       "1.0.0",
   219  							},
   220  						},
   221  						"v2-0": current.VersionCA{
   222  							Default: false,
   223  							Version: "v2-0",
   224  							Image: current.CAImages{
   225  								CAInitImage: "ca-init-image",
   226  								CAInitTag:   "2.0.0",
   227  								CAImage:     "ca-image",
   228  								CATag:       "2.0.0",
   229  							},
   230  						},
   231  					},
   232  					Peer: map[string]current.VersionPeer{
   233  						"v1-0": current.VersionPeer{
   234  							Default: true,
   235  							Version: "v1-0",
   236  							Image: current.PeerImages{
   237  								PeerInitImage: "peer-init-image",
   238  								PeerInitTag:   "1.0.0",
   239  								PeerImage:     "peer-image",
   240  								PeerTag:       "1.0.0",
   241  								DindImage:     "dind-iamge",
   242  								DindTag:       "1.0.0",
   243  								GRPCWebImage:  "grpcweb-image",
   244  								GRPCWebTag:    "1.0.0",
   245  								FluentdImage:  "fluentd-image",
   246  								FluentdTag:    "1.0.0",
   247  								CouchDBImage:  "couchdb-image",
   248  								CouchDBTag:    "1.0.0",
   249  							},
   250  						},
   251  						"v2-0": current.VersionPeer{
   252  							Default: false,
   253  							Version: "v2-0",
   254  							Image: current.PeerImages{
   255  								PeerInitImage:   "peer-init-image",
   256  								PeerInitTag:     "2.0.0",
   257  								PeerImage:       "peer-image",
   258  								PeerTag:         "2.0.0",
   259  								DindImage:       "dind-iamge",
   260  								DindTag:         "2.0.0",
   261  								GRPCWebImage:    "grpcweb-image",
   262  								GRPCWebTag:      "2.0.0",
   263  								FluentdImage:    "fluentd-image",
   264  								FluentdTag:      "2.0.0",
   265  								CouchDBImage:    "couchdb-image",
   266  								CouchDBTag:      "2.0.0",
   267  								CCLauncherImage: "cclauncher-image",
   268  								CCLauncherTag:   "2.0.0",
   269  							},
   270  						},
   271  					},
   272  					Orderer: map[string]current.VersionOrderer{
   273  						"v1-0": current.VersionOrderer{
   274  							Default: true,
   275  							Version: "v1-0",
   276  							Image: current.OrdererImages{
   277  								OrdererInitImage: "orderer-init-image",
   278  								OrdererInitTag:   "1.0.0",
   279  								OrdererImage:     "orderer-image",
   280  								OrdererTag:       "1.0.0",
   281  								GRPCWebImage:     "grpcweb-image",
   282  								GRPCWebTag:       "1.0.0",
   283  							},
   284  						},
   285  						"v2-0": current.VersionOrderer{
   286  							Default: false,
   287  							Version: "v2-0",
   288  							Image: current.OrdererImages{
   289  								OrdererInitImage: "orderer-init-image",
   290  								OrdererInitTag:   "2.0.0",
   291  								OrdererImage:     "orderer-image",
   292  								OrdererTag:       "2.0.0",
   293  								GRPCWebImage:     "grpcweb-image",
   294  								GRPCWebTag:       "2.0.0",
   295  							},
   296  						},
   297  					},
   298  				}
   299  
   300  				typeConvertedVersions := &current.Versions{}
   301  				util.ConvertSpec(config.Versions, typeConvertedVersions)
   302  				Expect(typeConvertedVersions).To(Equal(expectedVersions))
   303  			})
   304  
   305  			By("setting storage class name", func() {
   306  				Expect(config.Defaults.Storage.CA.CA.Class).To(Equal(instance.Spec.Storage.Console.Class))
   307  				Expect(config.Defaults.Storage.Peer.Peer.Class).To(Equal(instance.Spec.Storage.Console.Class))
   308  				Expect(config.Defaults.Storage.Peer.StateDB.Class).To(Equal(instance.Spec.Storage.Console.Class))
   309  				Expect(config.Defaults.Storage.Orderer.Orderer.Class).To(Equal(instance.Spec.Storage.Console.Class))
   310  			})
   311  
   312  			By("setting CRN", func() {
   313  				crn := &current.CRN{
   314  					CName:       instance.Spec.CRN.CName,
   315  					CType:       instance.Spec.CRN.CType,
   316  					Location:    instance.Spec.CRN.Location,
   317  					Servicename: instance.Spec.CRN.Servicename,
   318  					Version:     instance.Spec.CRN.Version,
   319  					AccountID:   instance.Spec.CRN.AccountID,
   320  				}
   321  				Expect(config.CRN).To(Equal(crn))
   322  			})
   323  
   324  			By("setting domain", func() {
   325  				Expect(config.Domain).To(Equal(instance.Spec.NetworkInfo.Domain))
   326  			})
   327  
   328  			By("setting must gather images", func() {
   329  				Expect(config.OtherImages.MustgatherImage).To(Equal("test-image"))
   330  				Expect(config.OtherImages.MustgatherTag).To(Equal("test-tag"))
   331  			})
   332  		})
   333  
   334  		It("should get default versions if overrides are not passed", func() {
   335  			instance.Spec.Versions = nil
   336  			err := overrider.DeployerCM(instance, cm, resources.Update, nil)
   337  			Expect(err).NotTo(HaveOccurred())
   338  
   339  			config := &deployer.Config{}
   340  
   341  			err = yaml.Unmarshal([]byte(cm.Data["settings.yaml"]), config)
   342  			Expect(err).NotTo(HaveOccurred())
   343  		})
   344  	})
   345  
   346  	Context("common overrides", func() {
   347  		Context("version overrides", func() {
   348  			When("registry url is not set", func() {
   349  				BeforeEach(func() {
   350  					instance = &current.IBPConsole{
   351  						Spec: current.IBPConsoleSpec{
   352  							ImagePullSecrets: []string{"pullsecret"},
   353  							NetworkInfo: &current.NetworkInfo{
   354  								Domain: "domain1",
   355  							},
   356  							Versions: &current.Versions{
   357  								CA: map[string]current.VersionCA{
   358  									"v1-0": current.VersionCA{
   359  										Image: current.CAImages{
   360  											CAInitImage: "ghcr.io/ibm-blockchain/ca-init-image",
   361  											CAInitTag:   "1.0.0",
   362  											CAImage:     "ghcr.io/ibm-blockchain/ca-image",
   363  											CATag:       "1.0.0",
   364  										},
   365  									},
   366  								},
   367  								Peer: map[string]current.VersionPeer{
   368  									"v1-0": current.VersionPeer{
   369  										Image: current.PeerImages{
   370  											PeerInitImage: "ghcr.io/ibm-blockchain/peer-init-image",
   371  											PeerInitTag:   "1.0.0",
   372  											PeerImage:     "ghcr.io/ibm-blockchain/peer-image",
   373  											PeerTag:       "1.0.0",
   374  											DindImage:     "ghcr.io/ibm-blockchain/dind-iamge",
   375  											DindTag:       "1.0.0",
   376  											GRPCWebImage:  "ghcr.io/ibm-blockchain/grpcweb-image",
   377  											GRPCWebTag:    "1.0.0",
   378  											FluentdImage:  "ghcr.io/ibm-blockchain/fluentd-image",
   379  											FluentdTag:    "1.0.0",
   380  											CouchDBImage:  "ghcr.io/ibm-blockchain/couchdb-image",
   381  											CouchDBTag:    "1.0.0",
   382  										},
   383  									},
   384  								},
   385  								Orderer: map[string]current.VersionOrderer{
   386  									"v1-0": current.VersionOrderer{
   387  										Image: current.OrdererImages{
   388  											OrdererInitImage: "ghcr.io/ibm-blockchain/orderer-init-image",
   389  											OrdererInitTag:   "1.0.0",
   390  											OrdererImage:     "ghcr.io/ibm-blockchain/orderer-image",
   391  											OrdererTag:       "1.0.0",
   392  											GRPCWebImage:     "ghcr.io/ibm-blockchain/grpcweb-image",
   393  											GRPCWebTag:       "1.0.0",
   394  										},
   395  									},
   396  								},
   397  							},
   398  						},
   399  					}
   400  				})
   401  
   402  				It("keeps images as passed", func() {
   403  					expectedVersions := &current.Versions{
   404  						CA: map[string]current.VersionCA{
   405  							"v1-0": current.VersionCA{
   406  								Image: current.CAImages{
   407  									CAInitImage: "ghcr.io/ibm-blockchain/ca-init-image",
   408  									CAInitTag:   "1.0.0-amd64",
   409  									CAImage:     "ghcr.io/ibm-blockchain/ca-image",
   410  									CATag:       "1.0.0-amd64",
   411  								},
   412  							},
   413  						},
   414  						Peer: map[string]current.VersionPeer{
   415  							"v1-0": current.VersionPeer{
   416  								Image: current.PeerImages{
   417  									PeerInitImage: "ghcr.io/ibm-blockchain/peer-init-image",
   418  									PeerInitTag:   "1.0.0-amd64",
   419  									PeerImage:     "ghcr.io/ibm-blockchain/peer-image",
   420  									PeerTag:       "1.0.0-amd64",
   421  									DindImage:     "ghcr.io/ibm-blockchain/dind-iamge",
   422  									DindTag:       "1.0.0-amd64",
   423  									GRPCWebImage:  "ghcr.io/ibm-blockchain/grpcweb-image",
   424  									GRPCWebTag:    "1.0.0-amd64",
   425  									FluentdImage:  "ghcr.io/ibm-blockchain/fluentd-image",
   426  									FluentdTag:    "1.0.0-amd64",
   427  									CouchDBImage:  "ghcr.io/ibm-blockchain/couchdb-image",
   428  									CouchDBTag:    "1.0.0-amd64",
   429  								},
   430  							},
   431  						},
   432  						Orderer: map[string]current.VersionOrderer{
   433  							"v1-0": current.VersionOrderer{
   434  								Image: current.OrdererImages{
   435  									OrdererInitImage: "ghcr.io/ibm-blockchain/orderer-init-image",
   436  									OrdererInitTag:   "1.0.0-amd64",
   437  									OrdererImage:     "ghcr.io/ibm-blockchain/orderer-image",
   438  									OrdererTag:       "1.0.0-amd64",
   439  									GRPCWebImage:     "ghcr.io/ibm-blockchain/grpcweb-image",
   440  									GRPCWebTag:       "1.0.0-amd64",
   441  								},
   442  							},
   443  						},
   444  					}
   445  					versions := &deployer.Versions{
   446  						CA: map[string]deployer.VersionCA{
   447  							"1.4": deployer.VersionCA{
   448  								Image: deployer.CAImages{
   449  									CAInitImage:  "ca-init-image",
   450  									CAInitTag:    "1.0.0",
   451  									CAInitDigest: "",
   452  									CAImage:      "ca-image",
   453  									CATag:        "1.0.0",
   454  									CADigest:     "",
   455  								},
   456  							},
   457  						},
   458  						Peer: map[string]deployer.VersionPeer{
   459  							"1.4": deployer.VersionPeer{
   460  								Image: deployer.PeerImages{
   461  									PeerInitImage:  "peer-init-image",
   462  									PeerInitTag:    "1.0.0",
   463  									PeerInitDigest: "",
   464  									PeerImage:      "peer-image",
   465  									PeerTag:        "1.0.0",
   466  									PeerDigest:     "",
   467  									DindImage:      "dind-iamge",
   468  									DindTag:        "1.0.0",
   469  									DindDigest:     "",
   470  									GRPCWebImage:   "grpcweb-image",
   471  									GRPCWebTag:     "1.0.0",
   472  									GRPCWebDigest:  "",
   473  									FluentdImage:   "fluentd-image",
   474  									FluentdTag:     "1.0.0",
   475  									FluentdDigest:  "",
   476  									CouchDBImage:   "couchdb-image",
   477  									CouchDBTag:     "1.0.0",
   478  									CouchDBDigest:  "",
   479  								},
   480  							},
   481  						},
   482  						Orderer: map[string]deployer.VersionOrderer{
   483  							"1.4": deployer.VersionOrderer{
   484  								Image: deployer.OrdererImages{
   485  									OrdererInitImage:  "orderer-init-image",
   486  									OrdererInitTag:    "1.0.0",
   487  									OrdererInitDigest: "",
   488  									OrdererImage:      "orderer-image",
   489  									OrdererTag:        "1.0.0",
   490  									OrdererDigest:     "",
   491  									GRPCWebImage:      "grpcweb-image",
   492  									GRPCWebTag:        "1.0.0",
   493  									GRPCWebDigest:     "",
   494  								},
   495  							},
   496  						},
   497  					}
   498  					config := &deployer.Config{
   499  						Versions: versions,
   500  						Defaults: &deployer.Defaults{
   501  							Storage: &deployer.Storage{
   502  								Peer: &current.PeerStorages{
   503  									Peer:    &current.StorageSpec{},
   504  									StateDB: &current.StorageSpec{},
   505  								},
   506  								CA: &current.CAStorages{
   507  									CA: &current.StorageSpec{},
   508  								},
   509  								Orderer: &current.OrdererStorages{
   510  									Orderer: &current.StorageSpec{},
   511  								},
   512  							},
   513  							Resources: &deployer.Resources{},
   514  						},
   515  					}
   516  					err := override.CommonDeployerCM(instance, config, nil)
   517  					Expect(err).NotTo(HaveOccurred())
   518  					// verify CA images and tags
   519  					Expect(config.Versions.CA["1.4"].Image.CAImage).To(Equal(expectedVersions.CA["1.4"].Image.CAImage))
   520  					Expect(config.Versions.CA["1.4"].Image.CATag).To(Equal(expectedVersions.CA["1.4"].Image.CATag))
   521  					Expect(config.Versions.CA["1.4"].Image.CAInitImage).To(Equal(expectedVersions.CA["1.4"].Image.CAInitImage))
   522  					Expect(config.Versions.CA["1.4"].Image.CAInitTag).To(Equal(expectedVersions.CA["1.4"].Image.CAInitTag))
   523  					// verify Peer images and tags
   524  					Expect(config.Versions.Peer["1.4"].Image.PeerInitImage).To(Equal(expectedVersions.Peer["1.4"].Image.PeerInitImage))
   525  					Expect(config.Versions.Peer["1.4"].Image.PeerInitTag).To(Equal(expectedVersions.Peer["1.4"].Image.PeerInitTag))
   526  					Expect(config.Versions.Peer["1.4"].Image.PeerImage).To(Equal(expectedVersions.Peer["1.4"].Image.PeerImage))
   527  					Expect(config.Versions.Peer["1.4"].Image.PeerTag).To(Equal(expectedVersions.Peer["1.4"].Image.PeerTag))
   528  					Expect(config.Versions.Peer["1.4"].Image.DindImage).To(Equal(expectedVersions.Peer["1.4"].Image.DindImage))
   529  					Expect(config.Versions.Peer["1.4"].Image.DindTag).To(Equal(expectedVersions.Peer["1.4"].Image.DindTag))
   530  					Expect(config.Versions.Peer["1.4"].Image.FluentdImage).To(Equal(expectedVersions.Peer["1.4"].Image.FluentdImage))
   531  					Expect(config.Versions.Peer["1.4"].Image.FluentdTag).To(Equal(expectedVersions.Peer["1.4"].Image.FluentdTag))
   532  					Expect(config.Versions.Peer["1.4"].Image.CouchDBImage).To(Equal(expectedVersions.Peer["1.4"].Image.CouchDBImage))
   533  					Expect(config.Versions.Peer["1.4"].Image.CouchDBTag).To(Equal(expectedVersions.Peer["1.4"].Image.CouchDBTag))
   534  					Expect(config.Versions.Peer["1.4"].Image.GRPCWebImage).To(Equal(expectedVersions.Peer["1.4"].Image.GRPCWebImage))
   535  					Expect(config.Versions.Peer["1.4"].Image.GRPCWebTag).To(Equal(expectedVersions.Peer["1.4"].Image.GRPCWebTag))
   536  					// verify Orderer images and tags
   537  					Expect(config.Versions.Orderer["1.4"].Image.OrdererImage).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererImage))
   538  					Expect(config.Versions.Orderer["1.4"].Image.OrdererTag).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererTag))
   539  					Expect(config.Versions.Orderer["1.4"].Image.OrdererInitImage).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererInitImage))
   540  					Expect(config.Versions.Orderer["1.4"].Image.OrdererInitTag).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererInitTag))
   541  					Expect(config.Versions.Orderer["1.4"].Image.GRPCWebImage).To(Equal(expectedVersions.Orderer["1.4"].Image.GRPCWebImage))
   542  					Expect(config.Versions.Orderer["1.4"].Image.GRPCWebTag).To(Equal(expectedVersions.Orderer["1.4"].Image.GRPCWebTag))
   543  				})
   544  			})
   545  
   546  			When("registry url is set", func() {
   547  				BeforeEach(func() {
   548  					instance = &current.IBPConsole{
   549  						Spec: current.IBPConsoleSpec{
   550  							ImagePullSecrets: []string{"pullsecret"},
   551  							NetworkInfo: &current.NetworkInfo{
   552  								Domain: "domain1",
   553  							},
   554  							RegistryURL: "ghcr.io/ibm-blockchain/",
   555  							Versions: &current.Versions{
   556  								CA: map[string]current.VersionCA{
   557  									"v1-0": current.VersionCA{
   558  										Image: current.CAImages{
   559  											CAInitImage: "ca-init-image",
   560  											CAInitTag:   "1.0.0",
   561  											CAImage:     "ca-image",
   562  											CATag:       "1.0.0",
   563  										},
   564  									},
   565  								},
   566  								Peer: map[string]current.VersionPeer{
   567  									"v1-0": current.VersionPeer{
   568  										Image: current.PeerImages{
   569  											PeerInitImage: "peer-init-image",
   570  											PeerInitTag:   "1.0.0",
   571  											PeerImage:     "peer-image",
   572  											PeerTag:       "1.0.0",
   573  											DindImage:     "dind-iamge",
   574  											DindTag:       "1.0.0",
   575  											GRPCWebImage:  "grpcweb-image",
   576  											GRPCWebTag:    "1.0.0",
   577  											FluentdImage:  "fluentd-image",
   578  											FluentdTag:    "1.0.0",
   579  											CouchDBImage:  "couchdb-image",
   580  											CouchDBTag:    "1.0.0",
   581  										},
   582  									},
   583  								},
   584  								Orderer: map[string]current.VersionOrderer{
   585  									"v1-0": current.VersionOrderer{
   586  										Image: current.OrdererImages{
   587  											OrdererInitImage: "orderer-init-image",
   588  											OrdererInitTag:   "1.0.0",
   589  											OrdererImage:     "orderer-image",
   590  											OrdererTag:       "1.0.0",
   591  											GRPCWebImage:     "grpcweb-image",
   592  											GRPCWebTag:       "1.0.0",
   593  										},
   594  									},
   595  								},
   596  							},
   597  						},
   598  					}
   599  				})
   600  
   601  				It("prepends registry url to images", func() {
   602  					expectedVersions := &current.Versions{
   603  						CA: map[string]current.VersionCA{
   604  							"v1-0": current.VersionCA{
   605  								Image: current.CAImages{
   606  									CAInitImage: "ghcr.io/ibm-blockchain/ca-init-image",
   607  									CAInitTag:   "1.0.0-amd64",
   608  									CAImage:     "ghcr.io/ibm-blockchain/ca-image",
   609  									CATag:       "1.0.0-amd64",
   610  								},
   611  							},
   612  						},
   613  						Peer: map[string]current.VersionPeer{
   614  							"v1-0": current.VersionPeer{
   615  								Image: current.PeerImages{
   616  									PeerInitImage: "ghcr.io/ibm-blockchain/peer-init-image",
   617  									PeerInitTag:   "1.0.0-amd64",
   618  									PeerImage:     "ghcr.io/ibm-blockchain/peer-image",
   619  									PeerTag:       "1.0.0-amd64",
   620  									DindImage:     "ghcr.io/ibm-blockchain/dind-iamge",
   621  									DindTag:       "1.0.0-amd64",
   622  									GRPCWebImage:  "ghcr.io/ibm-blockchain/grpcweb-image",
   623  									GRPCWebTag:    "1.0.0-amd64",
   624  									FluentdImage:  "ghcr.io/ibm-blockchain/fluentd-image",
   625  									FluentdTag:    "1.0.0-amd64",
   626  									CouchDBImage:  "ghcr.io/ibm-blockchain/couchdb-image",
   627  									CouchDBTag:    "1.0.0-amd64",
   628  								},
   629  							},
   630  						},
   631  						Orderer: map[string]current.VersionOrderer{
   632  							"v1-0": current.VersionOrderer{
   633  								Image: current.OrdererImages{
   634  									OrdererInitImage: "ghcr.io/ibm-blockchain/orderer-init-image",
   635  									OrdererInitTag:   "1.0.0-amd64",
   636  									OrdererImage:     "ghcr.io/ibm-blockchain/orderer-image",
   637  									OrdererTag:       "1.0.0-amd64",
   638  									GRPCWebImage:     "ghcr.io/ibm-blockchain/grpcweb-image",
   639  									GRPCWebTag:       "1.0.0-amd64",
   640  								},
   641  							},
   642  						},
   643  					}
   644  					versions := &deployer.Versions{
   645  						CA: map[string]deployer.VersionCA{
   646  							"1.4": deployer.VersionCA{
   647  								Image: deployer.CAImages{
   648  									CAInitImage:  "ca-init-image",
   649  									CAInitTag:    "1.0.0",
   650  									CAInitDigest: "",
   651  									CAImage:      "ca-image",
   652  									CATag:        "1.0.0",
   653  									CADigest:     "",
   654  								},
   655  							},
   656  						},
   657  						Peer: map[string]deployer.VersionPeer{
   658  							"1.4": deployer.VersionPeer{
   659  								Image: deployer.PeerImages{
   660  									PeerInitImage:  "peer-init-image",
   661  									PeerInitTag:    "1.0.0",
   662  									PeerInitDigest: "",
   663  									PeerImage:      "peer-image",
   664  									PeerTag:        "1.0.0",
   665  									PeerDigest:     "",
   666  									DindImage:      "dind-iamge",
   667  									DindTag:        "1.0.0",
   668  									DindDigest:     "",
   669  									GRPCWebImage:   "grpcweb-image",
   670  									GRPCWebTag:     "1.0.0",
   671  									GRPCWebDigest:  "",
   672  									FluentdImage:   "fluentd-image",
   673  									FluentdTag:     "1.0.0",
   674  									FluentdDigest:  "",
   675  									CouchDBImage:   "couchdb-image",
   676  									CouchDBTag:     "1.0.0",
   677  									CouchDBDigest:  "",
   678  								},
   679  							},
   680  						},
   681  						Orderer: map[string]deployer.VersionOrderer{
   682  							"1.4": deployer.VersionOrderer{
   683  								Image: deployer.OrdererImages{
   684  									OrdererInitImage:  "orderer-init-image",
   685  									OrdererInitTag:    "1.0.0",
   686  									OrdererInitDigest: "",
   687  									OrdererImage:      "orderer-image",
   688  									OrdererTag:        "1.0.0",
   689  									OrdererDigest:     "",
   690  									GRPCWebImage:      "grpcweb-image",
   691  									GRPCWebTag:        "1.0.0",
   692  									GRPCWebDigest:     "",
   693  								},
   694  							},
   695  						},
   696  					}
   697  					config := &deployer.Config{
   698  						Versions: versions,
   699  						Defaults: &deployer.Defaults{
   700  							Storage: &deployer.Storage{
   701  								Peer: &current.PeerStorages{
   702  									Peer:    &current.StorageSpec{},
   703  									StateDB: &current.StorageSpec{},
   704  								},
   705  								CA: &current.CAStorages{
   706  									CA: &current.StorageSpec{},
   707  								},
   708  								Orderer: &current.OrdererStorages{
   709  									Orderer: &current.StorageSpec{},
   710  								},
   711  							},
   712  							Resources: &deployer.Resources{},
   713  						},
   714  					}
   715  					err := override.CommonDeployerCM(instance, config, nil)
   716  					Expect(err).NotTo(HaveOccurred())
   717  					// verify CA images and tags
   718  					Expect(config.Versions.CA["1.4"].Image.CAImage).To(Equal(expectedVersions.CA["1.4"].Image.CAImage))
   719  					Expect(config.Versions.CA["1.4"].Image.CATag).To(Equal(expectedVersions.CA["1.4"].Image.CATag))
   720  					Expect(config.Versions.CA["1.4"].Image.CAInitImage).To(Equal(expectedVersions.CA["1.4"].Image.CAInitImage))
   721  					Expect(config.Versions.CA["1.4"].Image.CAInitTag).To(Equal(expectedVersions.CA["1.4"].Image.CAInitTag))
   722  					// verify Peer images and tags
   723  					Expect(config.Versions.Peer["1.4"].Image.PeerInitImage).To(Equal(expectedVersions.Peer["1.4"].Image.PeerInitImage))
   724  					Expect(config.Versions.Peer["1.4"].Image.PeerInitTag).To(Equal(expectedVersions.Peer["1.4"].Image.PeerInitTag))
   725  					Expect(config.Versions.Peer["1.4"].Image.PeerImage).To(Equal(expectedVersions.Peer["1.4"].Image.PeerImage))
   726  					Expect(config.Versions.Peer["1.4"].Image.PeerTag).To(Equal(expectedVersions.Peer["1.4"].Image.PeerTag))
   727  					Expect(config.Versions.Peer["1.4"].Image.DindImage).To(Equal(expectedVersions.Peer["1.4"].Image.DindImage))
   728  					Expect(config.Versions.Peer["1.4"].Image.DindTag).To(Equal(expectedVersions.Peer["1.4"].Image.DindTag))
   729  					Expect(config.Versions.Peer["1.4"].Image.FluentdImage).To(Equal(expectedVersions.Peer["1.4"].Image.FluentdImage))
   730  					Expect(config.Versions.Peer["1.4"].Image.FluentdTag).To(Equal(expectedVersions.Peer["1.4"].Image.FluentdTag))
   731  					Expect(config.Versions.Peer["1.4"].Image.CouchDBImage).To(Equal(expectedVersions.Peer["1.4"].Image.CouchDBImage))
   732  					Expect(config.Versions.Peer["1.4"].Image.CouchDBTag).To(Equal(expectedVersions.Peer["1.4"].Image.CouchDBTag))
   733  					Expect(config.Versions.Peer["1.4"].Image.GRPCWebImage).To(Equal(expectedVersions.Peer["1.4"].Image.GRPCWebImage))
   734  					Expect(config.Versions.Peer["1.4"].Image.GRPCWebTag).To(Equal(expectedVersions.Peer["1.4"].Image.GRPCWebTag))
   735  					// verify Orderer images and tags
   736  					Expect(config.Versions.Orderer["1.4"].Image.OrdererImage).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererImage))
   737  					Expect(config.Versions.Orderer["1.4"].Image.OrdererTag).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererTag))
   738  					Expect(config.Versions.Orderer["1.4"].Image.OrdererInitImage).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererInitImage))
   739  					Expect(config.Versions.Orderer["1.4"].Image.OrdererInitTag).To(Equal(expectedVersions.Orderer["1.4"].Image.OrdererInitTag))
   740  					Expect(config.Versions.Orderer["1.4"].Image.GRPCWebImage).To(Equal(expectedVersions.Orderer["1.4"].Image.GRPCWebImage))
   741  					Expect(config.Versions.Orderer["1.4"].Image.GRPCWebTag).To(Equal(expectedVersions.Orderer["1.4"].Image.GRPCWebTag))
   742  				})
   743  			})
   744  		})
   745  	})
   746  })