#include <cluster_metadata.h>
 | 
|   | ClusterMetadata (const MetadataSchemaVersion &schema_version, MySQLSession *mysql, mysql_harness::SocketOperationsBase *sockops=mysql_harness::SocketOperations::instance()) | 
|   | 
| virtual  | ~ClusterMetadata ()=default | 
|   | 
| virtual mysqlrouter::ClusterType  | get_type ()=0 | 
|   | 
| virtual void  | verify_router_id_is_ours (const uint32_t router_id, const std::string &hostname_override="")=0 | 
|   | Checks if Router with given id is already registered in metadata database, and belongs to our machine.  More...
  | 
|   | 
| virtual uint32_t  | register_router (const std::string &router_name, const bool overwrite, const std::string &hostname_override="")=0 | 
|   | Registers Router in metadata database.  More...
  | 
|   | 
| virtual void  | update_router_info (const uint32_t router_id, const std::string &cluster_id, const std::string &target_cluster, const std::string &rw_endpoint, const std::string &ro_endpoint, const std::string &rw_x_endpoint, const std::string &ro_x_endpoint, const std::string &username)=0 | 
|   | 
| virtual std::vector< std::string >  | get_routing_mode_queries ()=0 | 
|   | 
| virtual void  | require_metadata_is_ok () | 
|   | Verify that host is a valid metadata server.  More...
  | 
|   | 
| virtual void  | require_cluster_is_ok ()=0 | 
|   | Verify that host is a valid cluster member (either Group Replication or ReplicaSet cluster)  More...
  | 
|   | 
| virtual std::string  | get_cluster_type_specific_id ()=0 | 
|   | 
| virtual ClusterInfo  | fetch_metadata_servers ()=0 | 
|   | 
| virtual std::vector< std::string >  | get_grant_statements (const std::string &new_accounts) const =0 | 
|   | 
| virtual std::vector< std::tuple< std::string, unsigned long > >  | fetch_cluster_hosts ()=0 | 
|   | 
| MySQLSession &  | get_session () | 
|   | 
| virtual uint64_t  | get_view_id (const std::string &) | 
|   | 
◆ ClusterMetadata()
◆ ~ClusterMetadata()
  
  
      
        
          | virtual mysqlrouter::ClusterMetadata::~ClusterMetadata  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
virtualdefault   | 
  
 
 
◆ fetch_cluster_hosts()
  
  
      
        
          | virtual std::vector< std::tuple< std::string, unsigned long > > mysqlrouter::ClusterMetadata::fetch_cluster_hosts  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ fetch_metadata_servers()
  
  
      
        
          | virtual ClusterInfo mysqlrouter::ClusterMetadata::fetch_metadata_servers  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ get_cluster_type_specific_id()
  
  
      
        
          | virtual std::string mysqlrouter::ClusterMetadata::get_cluster_type_specific_id  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ get_grant_statements()
  
  
      
        
          | virtual std::vector< std::string > mysqlrouter::ClusterMetadata::get_grant_statements  | 
          ( | 
          const std::string &  | 
          new_accounts | ) | 
           const | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ get_routing_mode_queries()
  
  
      
        
          | virtual std::vector< std::string > mysqlrouter::ClusterMetadata::get_routing_mode_queries  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ get_session()
  
  
      
        
          | MySQLSession & mysqlrouter::ClusterMetadata::get_session  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
◆ get_type()
◆ get_view_id()
  
  
      
        
          | virtual uint64_t mysqlrouter::ClusterMetadata::get_view_id  | 
          ( | 
          const std::string &  | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
 
◆ query_cluster_count()
  
  
      
        
          | virtual uint64_t mysqlrouter::ClusterMetadata::query_cluster_count  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
protectedpure virtual   | 
  
 
 
◆ register_router()
  
  
      
        
          | virtual uint32_t mysqlrouter::ClusterMetadata::register_router  | 
          ( | 
          const std::string &  | 
          router_name,  | 
         
        
           | 
           | 
          const bool  | 
          overwrite,  | 
         
        
           | 
           | 
          const std::string &  | 
          hostname_override = ""  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
pure virtual   | 
  
 
Registers Router in metadata database. 
- Parameters
 - 
  
    | router_name | Router name  | 
    | overwrite | if Router name is already registered, allow this registration to be "hijacked" instead of throwing  | 
    | hostname_override | If non-empty, this hostname will be used instead of getting queried from OS | 
  
   
- Returns
 - newly-assigned router_id
 
- Exceptions
 - 
  
    | LocalHostnameResolutionError(std::runtime_error) | on hostname query failure, std::runtime_error on other failure  | 
  
   
Implemented in mysqlrouter::ClusterMetadataGRV1, mysqlrouter::ClusterMetadataGRV2, and mysqlrouter::ClusterMetadataAR.
 
 
◆ require_cluster_is_ok()
  
  
      
        
          | virtual void mysqlrouter::ClusterMetadata::require_cluster_is_ok  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ require_metadata_is_ok()
  
  
      
        
          | void ClusterMetadata::require_metadata_is_ok  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
virtual   | 
  
 
Verify that host is a valid metadata server. 
- Exceptions
 - 
  
    | MySQLSession::Error |  | 
    | std::runtime_error |  | 
    | std::out_of_range |  | 
    | std::logic_error |  | 
  
   
checks that the server
- has the metadata in the correct version
 
- contains metadata for the group it's in (in case of GR cluster) (metadata server group must be same as managed group currently) 
 
Reimplemented in mysqlrouter::ClusterMetadataGRInClusterSet.
 
 
◆ update_router_info()
  
  
      
        
          | virtual void mysqlrouter::ClusterMetadata::update_router_info  | 
          ( | 
          const uint32_t  | 
          router_id,  | 
         
        
           | 
           | 
          const std::string &  | 
          cluster_id,  | 
         
        
           | 
           | 
          const std::string &  | 
          target_cluster,  | 
         
        
           | 
           | 
          const std::string &  | 
          rw_endpoint,  | 
         
        
           | 
           | 
          const std::string &  | 
          ro_endpoint,  | 
         
        
           | 
           | 
          const std::string &  | 
          rw_x_endpoint,  | 
         
        
           | 
           | 
          const std::string &  | 
          ro_x_endpoint,  | 
         
        
           | 
           | 
          const std::string &  | 
          username  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
pure virtual   | 
  
 
 
◆ verify_router_id_is_ours()
  
  
      
        
          | virtual void mysqlrouter::ClusterMetadata::verify_router_id_is_ours  | 
          ( | 
          const uint32_t  | 
          router_id,  | 
         
        
           | 
           | 
          const std::string &  | 
          hostname_override = ""  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
pure virtual   | 
  
 
Checks if Router with given id is already registered in metadata database, and belongs to our machine. 
- Parameters
 - 
  
    | router_id | Router id  | 
    | hostname_override | If non-empty, this hostname will be used instead of getting queried from OS | 
  
   
- Exceptions
 - 
  
    | LocalHostnameResolutionError(std::runtime_error) | on hostname query failure  | 
    | std::runtime_error | if router_id doesn't exist, or is associated with a different host  | 
    | MySQLSession::Error(std::runtime_error) | on database error  | 
  
   
Implemented in mysqlrouter::ClusterMetadataGRV1, mysqlrouter::ClusterMetadataGRV2, and mysqlrouter::ClusterMetadataAR.
 
 
◆ mysql_
◆ schema_version_
◆ socket_operations_
The documentation for this class was generated from the following files: