diff --git a/api/hlf.kungfusoftware.es/v1alpha1/hlf_types.go b/api/hlf.kungfusoftware.es/v1alpha1/hlf_types.go index 53218d75..6f10eabf 100644 --- a/api/hlf.kungfusoftware.es/v1alpha1/hlf_types.go +++ b/api/hlf.kungfusoftware.es/v1alpha1/hlf_types.go @@ -88,7 +88,7 @@ type ExternalBuilder struct { PropagateEnvironment []string `json:"propagateEnvironment"` } -const DefaultImagePullPolicy = corev1.PullAlways +const DefaultImagePullPolicy = corev1.PullIfNotPresent type ServiceMonitor struct { // +kubebuilder:default:=false @@ -1799,14 +1799,25 @@ func (in *FabricChaincodeSpec) ApplyDefaultValuesFromTemplate(template *FabricCh if in.Resources == nil { in.Resources = template.Spec.Resources } - if in.Credentials == nil { - in.Credentials = template.Spec.Credentials - } if in.Replicas == 0 { in.Replicas = template.Spec.Replicas } if in.Env == nil || len(in.Env) == 0 { in.Env = template.Spec.Env + } else { + for _, env := range template.Spec.Env { + found := false + for _, e := range in.Env { + if e.Name == env.Name { + found = true + break + } + } + if !found { + in.Env = append(in.Env, env) + } + + } } if in.ChaincodeServerPort == 0 { in.ChaincodeServerPort = template.Spec.ChaincodeServerPort @@ -2392,11 +2403,6 @@ type FabricChaincodeTemplateSpec struct { // +optional Resources *corev1.ResourceRequirements `json:"resources"` - // +nullable - // +kubebuilder:validation:Optional - // +optional - Credentials *TLS `json:"credentials"` - // +kubebuilder:validation:Default=1 Replicas int `json:"replicas"` diff --git a/api/hlf.kungfusoftware.es/v1alpha1/zz_generated.deepcopy.go b/api/hlf.kungfusoftware.es/v1alpha1/zz_generated.deepcopy.go index f44b2a86..de4840ae 100644 --- a/api/hlf.kungfusoftware.es/v1alpha1/zz_generated.deepcopy.go +++ b/api/hlf.kungfusoftware.es/v1alpha1/zz_generated.deepcopy.go @@ -1340,11 +1340,6 @@ func (in *FabricChaincodeTemplateSpec) DeepCopyInto(out *FabricChaincodeTemplate *out = new(v1.ResourceRequirements) (*in).DeepCopyInto(*out) } - if in.Credentials != nil { - in, out := &in.Credentials, &out.Credentials - *out = new(TLS) - (*in).DeepCopyInto(*out) - } if in.Env != nil { in, out := &in.Env, &out.Env *out = make([]v1.EnvVar, len(*in)) diff --git a/charts/hlf-peer/templates/configmap--peer--core.yaml b/charts/hlf-peer/templates/configmap--peer--core.yaml index 2f5d5634..f8a59d3c 100644 --- a/charts/hlf-peer/templates/configmap--peer--core.yaml +++ b/charts/hlf-peer/templates/configmap--peer--core.yaml @@ -355,6 +355,8 @@ data: # It sets the delivery service maximal delay between consecutive retries reConnectBackoffThreshold: 3600s + blockGossipEnabled: false + # A list of orderer endpoint addresses which should be overridden # when found in channel configurations. addressOverrides: diff --git a/charts/hlf-peer/templates/deployment.yaml b/charts/hlf-peer/templates/deployment.yaml index 5a02a426..a8af7bb6 100644 --- a/charts/hlf-peer/templates/deployment.yaml +++ b/charts/hlf-peer/templates/deployment.yaml @@ -251,7 +251,7 @@ spec: name: {{ include "hlf-peer.fullname" . }}--peer volumeMounts: # range volumeMounts - {{- if .Values.volumeMounts }} + {{- if .Values.peerVolumeMounts }} {{ toYaml .Values.peerVolumeMounts | nindent 12 }} {{- end }} - name: peerconfig diff --git a/config/crd/bases/hlf.kungfusoftware.es_fabricchaincodetemplates.yaml b/config/crd/bases/hlf.kungfusoftware.es_fabricchaincodetemplates.yaml index e0ac7a8e..93915389 100644 --- a/config/crd/bases/hlf.kungfusoftware.es_fabricchaincodetemplates.yaml +++ b/config/crd/bases/hlf.kungfusoftware.es_fabricchaincodetemplates.yaml @@ -884,77 +884,6 @@ spec: items: type: string type: array - credentials: - nullable: true - properties: - cahost: - type: string - caname: - type: string - caport: - type: integer - catls: - properties: - cacert: - type: string - secretRef: - nullable: true - properties: - key: - type: string - name: - type: string - namespace: - type: string - required: - - key - - name - - namespace - type: object - required: - - cacert - type: object - csr: - properties: - cn: - type: string - hosts: - items: - type: string - type: array - type: object - enrollid: - type: string - enrollsecret: - type: string - external: - nullable: true - properties: - certificateKey: - type: string - privateKeyKey: - type: string - rootCertificateKey: - type: string - secretName: - type: string - secretNamespace: - type: string - required: - - certificateKey - - privateKeyKey - - rootCertificateKey - - secretName - - secretNamespace - type: object - required: - - cahost - - caname - - caport - - catls - - enrollid - - enrollsecret - type: object env: items: description: EnvVar represents an environment variable present in diff --git a/controllers/mainchannel/mainchannel_controller.go b/controllers/mainchannel/mainchannel_controller.go index ac62979b..c591996d 100644 --- a/controllers/mainchannel/mainchannel_controller.go +++ b/controllers/mainchannel/mainchannel_controller.go @@ -1252,12 +1252,9 @@ func updateApplicationChannelConfigTx(currentConfigTX configtx.ConfigTx, newConf if err != nil { return errors.Wrapf(err, "failed to set ACLs") } - err = currentConfigTX.Orderer().SetBatchTimeout(newConfigTx.Orderer.BatchTimeout) - if err != nil { - return errors.Wrapf(err, "failed to set batch timeout") - } return nil } + func updateOrdererChannelConfigTx(currentConfigTX configtx.ConfigTx, newConfigTx configtx.Channel) error { err := currentConfigTX.Orderer().SetPolicies( newConfigTx.Orderer.Policies, @@ -1402,7 +1399,10 @@ func updateOrdererChannelConfigTx(currentConfigTX configtx.ConfigTx, newConfigTx if err != nil { return errors.Wrap(err, "failed to set application policies") } - + err = currentConfigTX.Orderer().SetBatchTimeout(newConfigTx.Orderer.BatchTimeout) + if err != nil { + return errors.Wrapf(err, "failed to set batch timeout") + } return nil } diff --git a/go.mod b/go.mod index 7b1ec458..99833106 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/kfsoftware/hlf-operator -go 1.18 +go 1.21 require ( github.com/IBM/idemix v0.0.0-20220113150823-80dd4cb2d74e @@ -243,3 +243,6 @@ replace ( k8s.io/metrics => k8s.io/metrics v0.24.0 k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.24.0 ) +replace ( + github.com/hyperledger/fabric-sdk-go => github.com/kfsoftware/fabric-sdk-go v0.0.0-20240114221414-98466038585d +) \ No newline at end of file diff --git a/go.sum b/go.sum index 7741a115..a2d88ec9 100644 --- a/go.sum +++ b/go.sum @@ -535,6 +535,8 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uia github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= +github.com/kfsoftware/fabric-sdk-go v0.0.0-20240114221414-98466038585d h1:HcMV8Lve3QkZUIWYHP+rVIR4xtTdDPooj7Id0IdBj0o= +github.com/kfsoftware/fabric-sdk-go v0.0.0-20240114221414-98466038585d/go.mod h1:JRplpKBeAvXjsBhOCCM/KvMRUbdDyhsAh80qbXzKc10= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/kubectl-hlf/cmd/chaincode/query.go b/kubectl-hlf/cmd/chaincode/query.go index 53357efa..bd21b892 100644 --- a/kubectl-hlf/cmd/chaincode/query.go +++ b/kubectl-hlf/cmd/chaincode/query.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "io" + "time" "github.com/hyperledger/fabric-sdk-go/pkg/client/channel" "github.com/hyperledger/fabric-sdk-go/pkg/core/config" @@ -21,26 +22,32 @@ type queryChaincodeCmd struct { fcn string args []string transient string + mspID string } func (c *queryChaincodeCmd) validate() error { return nil } func (c *queryChaincodeCmd) run(out io.Writer) error { - oclient, err := helpers.GetKubeOperatorClient() - if err != nil { - return err - } - clientSet, err := helpers.GetKubeClient() - if err != nil { - return err - } - peer, err := helpers.GetPeerByFullName(clientSet, oclient, c.peer) - if err != nil { - return err + var mspID string + if c.mspID != "" { + mspID = c.mspID + } else { + oclient, err := helpers.GetKubeOperatorClient() + if err != nil { + return err + } + clientSet, err := helpers.GetKubeClient() + if err != nil { + return err + } + peer, err := helpers.GetPeerByFullName(clientSet, oclient, c.peer) + if err != nil { + return err + } + mspID = peer.Spec.MspID } - mspID := peer.Spec.MspID - peerName := peer.Name + peerName := c.peer configBackend := config.FromFile(c.configPath) sdk, err := fabsdk.New(configBackend) if err != nil { @@ -63,10 +70,10 @@ func (c *queryChaincodeCmd) run(out io.Writer) error { if c.transient != "" { err = json.Unmarshal([]byte(c.transient), &transientMap) if err != nil { - return err + return err } } - + t := time.Now() response, err := ch.Query( channel.Request{ ChaincodeID: c.chaincode, @@ -81,6 +88,7 @@ func (c *queryChaincodeCmd) run(out io.Writer) error { if err != nil { return err } + fmt.Printf("Query took %s\n", time.Since(t)) _, err = fmt.Fprint(out, string(response.Payload)) if err != nil { return err @@ -108,6 +116,7 @@ func newQueryChaincodeCMD(out io.Writer, errOut io.Writer) *cobra.Command { persistentFlags.StringVarP(&c.fcn, "fcn", "", "", "Function name") persistentFlags.StringArrayVarP(&c.args, "args", "a", []string{}, "Function arguments") persistentFlags.StringVarP(&c.transient, "transient", "t", "", "Transient map") + persistentFlags.StringVarP(&c.mspID, "mspID", "", "", "MSP ID") cmd.MarkPersistentFlagRequired("user") cmd.MarkPersistentFlagRequired("peer") cmd.MarkPersistentFlagRequired("config") diff --git a/kubectl-hlf/cmd/console/create.go b/kubectl-hlf/cmd/console/create.go index 99580130..549f528f 100644 --- a/kubectl-hlf/cmd/console/create.go +++ b/kubectl-hlf/cmd/console/create.go @@ -114,7 +114,7 @@ func (c *createCmd) run() error { Image: c.consoleOpts.Image, ImagePullSecrets: imagePullSecrets, Tag: c.consoleOpts.Version, - ImagePullPolicy: "Always", + ImagePullPolicy: "IfNotPresent", Tolerations: []corev1.Toleration{}, Replicas: 1, CouchDB: v1alpha1.FabricOperationsConsoleCouchDB{ @@ -134,7 +134,7 @@ func (c *createCmd) run() error { ImagePullSecrets: []corev1.LocalObjectReference{}, Affinity: &corev1.Affinity{}, Tolerations: []corev1.Toleration{}, - ImagePullPolicy: "Always", + ImagePullPolicy: "IfNotPresent", }, Env: []corev1.EnvVar{}, Affinity: &corev1.Affinity{}, diff --git a/kubectl-hlf/cmd/externalchaincode/sync.go b/kubectl-hlf/cmd/externalchaincode/sync.go index fe2f6a14..0799cfdb 100644 --- a/kubectl-hlf/cmd/externalchaincode/sync.go +++ b/kubectl-hlf/cmd/externalchaincode/sync.go @@ -64,7 +64,7 @@ func (c *syncExternalChaincodeCmd) validate() error { func (c syncExternalChaincodeCmd) getFabricChaincodeSpec(ctx context.Context) (v1alpha1.FabricChaincodeSpec, error) { fabricChaincodeSpec := v1alpha1.FabricChaincodeSpec{ Image: c.image, - ImagePullPolicy: corev1.PullAlways, + ImagePullPolicy: corev1.PullIfNotPresent, PackageID: c.packageID, ImagePullSecrets: []corev1.LocalObjectReference{}, Affinity: nil, @@ -180,6 +180,7 @@ func (c *syncExternalChaincodeCmd) updateChaincode(ctx context.Context, fabricCh } fabricChaincode.Spec.Image = fabricChaincodeSpec.Image fabricChaincode.Spec.ImagePullPolicy = fabricChaincodeSpec.ImagePullPolicy + fabricChaincode.Spec.Replicas = fabricChaincodeSpec.Replicas fabricChaincode.Spec.PackageID = fabricChaincodeSpec.PackageID fabricChaincode.Spec.ImagePullSecrets = fabricChaincodeSpec.ImagePullSecrets if c.tlsRequired { diff --git a/kubectl-hlf/cmd/ordnode/create.go b/kubectl-hlf/cmd/ordnode/create.go index c5008dbc..126dd9a5 100644 --- a/kubectl-hlf/cmd/ordnode/create.go +++ b/kubectl-hlf/cmd/ordnode/create.go @@ -197,7 +197,7 @@ func (c *createCmd) run(args []string) error { Image: c.ordererOpts.Image, ImagePullSecrets: imagePullSecrets, Tag: c.ordererOpts.Version, - PullPolicy: corev1.PullAlways, + PullPolicy: corev1.PullIfNotPresent, MspID: c.ordererOpts.MspID, Genesis: "", BootstrapMethod: v1alpha1.BootstrapMethodNone,