def master_status(master=None, **kwargs): """ Get status of connection to master. Implementation originates from the 'status.master' command but without the logic to trigger events. """ ret = {"online": False, "ip": None} if master == None: master = __salt__["config.get"]("master", default="hub") master_ips = None if master: master_ips = _host_to_ips(master) if not master_ips: return ret port = __salt__["config.get"]("publish_port", default=4505) connected_ips = _remote_port_tcp(port) # Get connection status for master for master_ip in master_ips: if master_ip in connected_ips: ret["online"] = True ret["ip"] = master_ip break return ret
def master(master_ip=None, connected=True): ''' .. versionadded:: 2014.7.0 Fire an event if the minion gets disconnected from its master. This function is meant to be run via a scheduled job from the minion CLI Example: .. code-block:: bash salt '*' status.master ''' # the default publishing port port = 4505 if __salt__['config.get']('publish_port') != '': port = int(__salt__['config.get']('publish_port')) ips = _remote_port_tcp(port) if connected: if master_ip not in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': master_ip}, '__master_disconnected') else: if master_ip in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': master_ip}, '__master_connected')
def connected_masters(): ''' Return current connected masters ''' # default port port = 4505 config_port = __salt__['config.get']('publish_port') if config_port: port = config_port connected_masters_ips = _remote_port_tcp(port) return connected_masters_ips
def master(master=None, connected=True): ''' .. versionadded:: 2014.7.0 Return the connection status with master. Fire an event if the connection to master is not as expected. This function is meant to be run via a scheduled job from the minion. If master_ip is an FQDN/Hostname, it must be resolvable to a valid IPv4 address. CLI Example: .. code-block:: bash salt '*' status.master ''' # the default publishing port port = 4505 master_ips = None if __salt__['config.get']('publish_port') != '': port = int(__salt__['config.get']('publish_port')) # Check if we have FQDN/hostname defined as master # address and try resolving it first. _remote_port_tcp # only works with IP-addresses. if master is not None: master_ips = _host_to_ips(master) master_connection_status = False if master_ips: ips = _remote_port_tcp(port) for master_ip in master_ips: if master_ip in ips: master_connection_status = True break if master_connection_status is not connected: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) if master_connection_status: event.fire_event({'master': master}, salt.minion.master_event(type='connected')) else: event.fire_event({'master': master}, salt.minion.master_event(type='disconnected')) return master_connection_status
def master(master=None, connected=True): ''' .. versionadded:: 2014.7.0 Return the connection status with master. Fire an event if the connection to master is not as expected. This function is meant to be run via a scheduled job from the minion. If master_ip is an FQDN/Hostname, it must be resolvable to a valid IPv4 address. CLI Example: .. code-block:: bash salt '*' status.master ''' master_ips = None if master: master_ips = _host_to_ips(master) if not master_ips: return master_connection_status = False port = __salt__['config.get']('publish_port', default=4505) connected_ips = _remote_port_tcp(port) # Get connection status for master for master_ip in master_ips: if master_ip in connected_ips: master_connection_status = True break # Connection to master is not as expected if master_connection_status is not connected: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) if master_connection_status: event.fire_event({'master': master}, salt.minion.master_event(type='connected')) else: event.fire_event({'master': master}, salt.minion.master_event(type='disconnected')) return master_connection_status
def master(master=None, connected=True): ''' .. versionadded:: 2014.7.0 Fire an event if the minion gets disconnected from its master. This function is meant to be run via a scheduled job from the minion. If master_ip is an FQDN/Hostname, it must be resolvable to a valid IPv4 address. CLI Example: .. code-block:: bash salt '*' status.master ''' # the default publishing port port = 4505 master_ip = None if __salt__['config.get']('publish_port') != '': port = int(__salt__['config.get']('publish_port')) # Check if we have FQDN/hostname defined as master # address and try resolving it first. _remote_port_tcp # only works with IP-addresses. if master is not None: tmp_ip = _host_to_ip(master) if tmp_ip is not None: master_ip = tmp_ip ips = _remote_port_tcp(port) if connected: if master_ip not in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': master}, '__master_disconnected') else: if master_ip in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': master}, '__master_connected')
def master(master=None, connected=True): ''' .. versionadded:: 2014.7.0 Fire an event if the minion gets disconnected from its master. This function is meant to be run via a scheduled job from the minion. If master_ip is an FQDN/Hostname, is must be resolvable to a valid IPv4 address. CLI Example: .. code-block:: bash salt '*' status.master ''' # the default publishing port port = 4505 master_ip = None if __salt__['config.get']('publish_port') != '': port = int(__salt__['config.get']('publish_port')) # Check if we have FQDN/hostname defined as master # address and try resolving it first. _remote_port_tcp # only works with IP-addresses. if master is not None: tmp_ip = _host_to_ip(master) if tmp_ip is not None: master_ip = tmp_ip ips = _remote_port_tcp(port) if connected: if master_ip not in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': master}, '__master_disconnected') else: if master_ip in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': master}, '__master_connected')
def master(): ''' .. versionadded:: Helium Fire an event if the minion gets disconnected from its master. This function is meant to be run via a scheduled job from the minion CLI Example: .. code-block:: bash salt '*' status.master ''' ip = __salt__['config.option']('master') port = int(__salt__['config.option']('publish_port')) ips = _remote_port_tcp(port) if ip not in ips: event = salt.utils.event.get_event('minion', opts=__opts__, listen=False) event.fire_event({'master': ip}, '__master_disconnected')