github.com/IBM-Blockchain/fabric-operator@v1.0.4/pkg/offering/openshift/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 "github.com/IBM-Blockchain/fabric-operator/pkg/manager/resources" 30 "github.com/IBM-Blockchain/fabric-operator/pkg/offering" 31 "github.com/IBM-Blockchain/fabric-operator/pkg/offering/openshift/console/override" 32 "github.com/IBM-Blockchain/fabric-operator/pkg/util" 33 ) 34 35 var _ = Describe("Openshift 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 = ¤t.IBPConsole{ 46 Spec: current.IBPConsoleSpec{ 47 ImagePullSecrets: []string{"pullsecret"}, 48 ConnectionString: "connectionString1", 49 Storage: ¤t.ConsoleStorage{ 50 Console: ¤t.StorageSpec{ 51 Class: "sc1", 52 }, 53 }, 54 NetworkInfo: ¤t.NetworkInfo{ 55 Domain: "domain1", 56 }, 57 Versions: ¤t.Versions{ 58 CA: map[string]current.VersionCA{ 59 "1.4.6-1": current.VersionCA{ 60 Default: true, 61 Version: "1.4.6-1", 62 Image: current.CAImages{ 63 CAInitImage: "ca-init-image", 64 CAInitTag: "1.4.6", 65 CAImage: "ca-image", 66 CATag: "1.4.6", 67 }, 68 }, 69 }, 70 Peer: map[string]current.VersionPeer{ 71 "1.4.6-1": current.VersionPeer{ 72 Default: true, 73 Version: "1.4.6-1", 74 Image: current.PeerImages{ 75 PeerInitImage: "peer-init-image", 76 PeerInitTag: "1.4.6", 77 PeerImage: "peer-image", 78 PeerTag: "1.4.6", 79 DindImage: "dind-iamge", 80 DindTag: "1.4.6", 81 GRPCWebImage: "grpcweb-image", 82 GRPCWebTag: "1.4.6", 83 FluentdImage: "fluentd-image", 84 FluentdTag: "1.4.6", 85 CouchDBImage: "couchdb-image", 86 CouchDBTag: "1.4.6", 87 CCLauncherImage: "cclauncer-image", 88 CCLauncherTag: "1.4.6", 89 }, 90 }, 91 }, 92 Orderer: map[string]current.VersionOrderer{ 93 "1.4.6-1": current.VersionOrderer{ 94 Default: true, 95 Version: "1.4.6-1", 96 Image: current.OrdererImages{ 97 OrdererInitImage: "orderer-init-image", 98 OrdererInitTag: "1.4.6", 99 OrdererImage: "orderer-image", 100 OrdererTag: "1.4.6", 101 GRPCWebImage: "grpcweb-image", 102 GRPCWebTag: "1.4.6", 103 }, 104 }, 105 }, 106 }, 107 CRN: ¤t.CRN{ 108 CName: "cname", 109 CType: "ctype", 110 Location: "location1", 111 Servicename: "Servicename1", 112 Version: "version1", 113 AccountID: "id123", 114 }, 115 Deployer: ¤t.Deployer{ 116 ConnectionString: "connectionstring2", 117 }, 118 }, 119 } 120 cm, err = util.GetConfigMapFromFile("../../../../../testdata/deployercm/deployer-configmap.yaml") 121 Expect(err).NotTo(HaveOccurred()) 122 }) 123 124 Context("create", func() { 125 It("return an error if no image pull secret provided", func() { 126 instance.Spec.ImagePullSecrets = nil 127 err := overrider.DeployerCM(instance, cm, resources.Create, nil) 128 Expect(err).To(HaveOccurred()) 129 Expect(err.Error()).To(Equal("no image pull secret provided")) 130 }) 131 132 It("return an error if no domain provided", func() { 133 instance.Spec.NetworkInfo.Domain = "" 134 err := overrider.DeployerCM(instance, cm, resources.Create, nil) 135 Expect(err).To(HaveOccurred()) 136 Expect(err.Error()).To(Equal("domain not provided")) 137 }) 138 139 It("overrides values based on spec", func() { 140 err := overrider.DeployerCM(instance, cm, resources.Create, nil) 141 Expect(err).NotTo(HaveOccurred()) 142 143 config := &deployer.Config{} 144 145 err = yaml.Unmarshal([]byte(cm.Data["settings.yaml"]), config) 146 Expect(err).NotTo(HaveOccurred()) 147 148 By("setting cluster type", func() { 149 Expect(config.ClusterType).To(Equal(offering.OPENSHIFT.String())) 150 }) 151 152 By("setting service type", func() { 153 Expect(config.ServiceConfig.Type).To(Equal(corev1.ServiceTypeClusterIP)) 154 }) 155 156 By("setting domain", func() { 157 Expect(config.Domain).To(Equal(instance.Spec.NetworkInfo.Domain)) 158 }) 159 160 By("setting image pull secret", func() { 161 Expect(config.ImagePullSecrets).To(Equal(instance.Spec.ImagePullSecrets)) 162 }) 163 164 By("setting connection string", func() { 165 Expect(config.Database.ConnectionURL).To(Equal(instance.Spec.Deployer.ConnectionString)) 166 }) 167 168 By("setting versions", func() { 169 expectedVersions := ¤t.Versions{ 170 CA: map[string]current.VersionCA{ 171 "1.4.6-1": current.VersionCA{ 172 Default: true, 173 Version: "1.4.6-1", 174 Image: current.CAImages{ 175 CAInitImage: "ca-init-image", 176 CAInitTag: "1.4.6", 177 CAImage: "ca-image", 178 CATag: "1.4.6", 179 }, 180 }, 181 }, 182 Peer: map[string]current.VersionPeer{ 183 "1.4.6-1": current.VersionPeer{ 184 Default: true, 185 Version: "1.4.6-1", 186 Image: current.PeerImages{ 187 PeerInitImage: "peer-init-image", 188 PeerInitTag: "1.4.6", 189 PeerImage: "peer-image", 190 PeerTag: "1.4.6", 191 DindImage: "dind-iamge", 192 DindTag: "1.4.6", 193 GRPCWebImage: "grpcweb-image", 194 GRPCWebTag: "1.4.6", 195 FluentdImage: "fluentd-image", 196 FluentdTag: "1.4.6", 197 CouchDBImage: "couchdb-image", 198 CouchDBTag: "1.4.6", 199 CCLauncherImage: "cclauncer-image", 200 CCLauncherTag: "1.4.6", 201 }, 202 }, 203 }, 204 Orderer: map[string]current.VersionOrderer{ 205 "1.4.6-1": current.VersionOrderer{ 206 Default: true, 207 Version: "1.4.6-1", 208 Image: current.OrdererImages{ 209 OrdererInitImage: "orderer-init-image", 210 OrdererInitTag: "1.4.6", 211 OrdererImage: "orderer-image", 212 OrdererTag: "1.4.6", 213 GRPCWebImage: "grpcweb-image", 214 GRPCWebTag: "1.4.6", 215 }, 216 }, 217 }, 218 } 219 220 typeConvertedVersions := ¤t.Versions{} 221 util.ConvertSpec(config.Versions, typeConvertedVersions) 222 Expect(typeConvertedVersions).To(Equal(expectedVersions)) 223 }) 224 225 By("setting storage class name", func() { 226 Expect(config.Defaults.Storage.CA.CA.Class).To(Equal(instance.Spec.Storage.Console.Class)) 227 Expect(config.Defaults.Storage.Peer.Peer.Class).To(Equal(instance.Spec.Storage.Console.Class)) 228 Expect(config.Defaults.Storage.Peer.StateDB.Class).To(Equal(instance.Spec.Storage.Console.Class)) 229 Expect(config.Defaults.Storage.Orderer.Orderer.Class).To(Equal(instance.Spec.Storage.Console.Class)) 230 }) 231 232 By("setting CRN", func() { 233 crn := ¤t.CRN{ 234 CName: instance.Spec.CRN.CName, 235 CType: instance.Spec.CRN.CType, 236 Location: instance.Spec.CRN.Location, 237 Servicename: instance.Spec.CRN.Servicename, 238 Version: instance.Spec.CRN.Version, 239 AccountID: instance.Spec.CRN.AccountID, 240 } 241 Expect(config.CRN).To(Equal(crn)) 242 }) 243 }) 244 }) 245 246 Context("update", func() { 247 It("return an error if no image pull secret provided", func() { 248 instance.Spec.ImagePullSecrets = nil 249 err := overrider.DeployerCM(instance, cm, resources.Update, nil) 250 Expect(err).To(HaveOccurred()) 251 Expect(err.Error()).To(Equal("no image pull secret provided")) 252 }) 253 }) 254 })