func()

in shardingsphere-operator/pkg/controllers/storage_node_controller.go [244:270]


func (r *StorageNodeReconciler) getStorageProvider(ctx context.Context, node *v1alpha1.StorageNode) (storageProvider *v1alpha1.StorageProvider, err error) {
	if node.Spec.StorageProviderName == "" {
		r.Recorder.Event(node, corev1.EventTypeWarning, "storageProviderNameIsNil", "storageProviderName is nil")
		return nil, fmt.Errorf("storageProviderName is nil")
	}

	storageProvider = &v1alpha1.StorageProvider{}

	if err := r.Get(ctx, client.ObjectKey{Name: node.Spec.StorageProviderName}, storageProvider); err != nil {
		r.Log.Error(err, fmt.Sprintf("unable to fetch storageProvider %s", node.Spec.StorageProviderName))
		r.Recorder.Event(node, corev1.EventTypeWarning, "storageProviderNotFound", fmt.Sprintf("storageProvider %s not found", node.Spec.StorageProviderName))
		return nil, err
	}

	// check provisioner
	// aws-like provisioner need aws rds client
	if storageProvider.Spec.Provisioner == v1alpha1.ProvisionerAWSRDSInstance ||
		storageProvider.Spec.Provisioner == v1alpha1.ProvisionerAWSAurora ||
		storageProvider.Spec.Provisioner == v1alpha1.ProvisionerAWSRDSCluster {
		if r.AwsRegion == "" || r.AwsAccessKeyID == "" || r.AwsSecretAccessKey == "" {
			r.Recorder.Eventf(node, corev1.EventTypeWarning, "awsCredentialsNotSet", "aws credentials not set")
			return nil, fmt.Errorf("aws credentials not set")
		}
	}

	return storageProvider, nil
}