Generate binding credentials
        
        This function will permit to define the configuration to
        connect to the instance.
        Those credentials will be stored on a secret and exposed to a a Pod.
        
        We should at least returns the 'username' and 'password'.
        
        Args:
            binding (AtlasServiceBinding.Binding): A binding
            
        Returns:
            dict: All credentials and secrets.
            
        Raises:
            ErrClusterConfig: Connection string to the cluster is not available.

def generate_binding_credentials(self, binding):
        """Generate binding credentials
        
        This function will permit to define the configuration to
        connect to the instance.
        Those credentials will be stored on a secret and exposed to a a Pod.
        
        We should at least returns the 'username' and 'password'.
        
        Args:
            binding (AtlasServiceBinding.Binding): A binding
            
        Returns:
            dict: All credentials and secrets.
            
        Raises:
            ErrClusterConfig: Connection string to the cluster is not available.
        """
        uri = self.clusters.get(binding.instance.get_cluster(), None)
        
        if not uri:
            raise ErrClusterConfig(binding.instance.get_cluster())
        
        # partial credentials
        creds = {"username" : self.generate_binding_username(binding),
                "password" : pwgen(32, symbols=False),
                "database" : binding.instance.get_dbname()}
        
        # uri
        uri = uri % (
            creds["username"],
            creds["password"],
            creds["database"])
        
        creds["uri"] = uri
        
        # return creds
        return creds