def copy_sources(): """ Creates a copy of the NGAS sources in the target host. """ # We still don't open the git repository to the world, so for the time # being we always make a tarball from our repository and copy it over # ssh to the remote host, where we expand it back nsd = ngas_source_dir() # Because this could be happening in parallel in various machines # we generate a tmpfile locally, but the target file is the same local_file = tempfile.mktemp(".tar.gz") create_sources_tarball(local_file) # transfer the tar file if not local if not is_localhost(): target_tarfile = '/tmp/ngas_tmp.tar' put(local_file, target_tarfile) else: target_tarfile = local_file # unpack the tar file into the ngas_src_dir # (mind the "p", to preserve permissions) run('mkdir -p {0}'.format(nsd)) with cd(nsd): run('tar xpf {0}'.format(target_tarfile)) if not is_localhost(): run('rm {0}'.format(target_tarfile)) # Cleaning up now local('rm {0}'.format(local_file)) success("NGAS sources copied")
def __init__(self, host_and_ports=None, prefer_localhost=True, try_loopback_connect=True, reconnect_sleep_initial=0.1, reconnect_sleep_increase=0.5, reconnect_sleep_jitter=0.1, reconnect_sleep_max=60.0, reconnect_attempts_max=3, use_ssl=False, ssl_key_file=None, ssl_cert_file=None, ssl_ca_certs=None, ssl_cert_validator=None, wait_on_receipt=False, ssl_version=None, timeout=None, keepalive=None, vhost=None): """ \param host_and_ports a list of (host, port) tuples. \param prefer_localhost if True and the local host is mentioned in the (host, port) tuples, try to connect to this first \param try_loopback_connect if True and the local host is found in the host tuples, try connecting to it using loopback interface (127.0.0.1) \param reconnect_sleep_initial initial delay in seconds to wait before reattempting to establish a connection if connection to any of the hosts fails. \param reconnect_sleep_increase factor by which the sleep delay is increased after each connection attempt. For example, 0.5 means to wait 50% longer than before the previous attempt, 1.0 means wait twice as long, and 0.0 means keep the delay constant. \param reconnect_sleep_max maximum delay between connection attempts, regardless of the reconnect_sleep_increase. \param reconnect_sleep_jitter random additional time to wait (as a percentage of the time determined using the previous parameters) between connection attempts in order to avoid stampeding. For example, a value of 0.1 means to wait an extra 0%-10% (randomly determined) of the delay calculated using the previous three parameters. \param reconnect_attempts_max maximum attempts to reconnect \param use_ssl deprecated, see Transport::set_ssl \param ssl_cert_file deprecated, see Transport::set_ssl \param ssl_key_file deprecated, see Transport::set_ssl \param ssl_ca_certs deprecated, see Transport::set_ssl \param ssl_cert_validator deprecated, see Transport::set_ssl \param wait_on_receipt if a receipt is specified, then the send method should wait (block) for the server to respond with that receipt-id before continuing \param ssl_version deprecated, see Transport::set_ssl \param timeout the timeout value to use when connecting the stomp socket \param keepalive some operating systems support sending the occasional heart beat packets to detect when a connection fails. This parameter can either be set set to a boolean to turn on the default keepalive options for your OS, or as a tuple of values, which also enables keepalive packets, but specifies options specific to your OS implementation \param vhost specify a virtual hostname to provide in the 'host' header of the connection """ if host_and_ports is None: host_and_ports = [('localhost', 61613)] sorted_host_and_ports = [] sorted_host_and_ports.extend(host_and_ports) # # If localhost is preferred, make sure all (host, port) tuples that refer to the local host come first in the list # if prefer_localhost: sorted_host_and_ports.sort(key=utils.is_localhost) # # If the user wishes to attempt connecting to local ports using the loopback interface, for each (host, port) tuple # referring to a local host, add an entry with the host name replaced by 127.0.0.1 if it doesn't exist already # loopback_host_and_ports = [] if try_loopback_connect: for host_and_port in sorted_host_and_ports: if utils.is_localhost(host_and_port) == 1: port = host_and_port[1] if (not ("127.0.0.1", port) in sorted_host_and_ports and not ("localhost", port) in sorted_host_and_ports): loopback_host_and_ports.append(("127.0.0.1", port)) # # Assemble the final, possibly sorted list of (host, port) tuples # self.__host_and_ports = [] self.__host_and_ports.extend(loopback_host_and_ports) self.__host_and_ports.extend(sorted_host_and_ports) self.__recvbuf = '' self.listeners = {} self.__reconnect_sleep_initial = reconnect_sleep_initial self.__reconnect_sleep_increase = reconnect_sleep_increase self.__reconnect_sleep_jitter = reconnect_sleep_jitter self.__reconnect_sleep_max = reconnect_sleep_max self.__reconnect_attempts_max = reconnect_attempts_max self.__timeout = timeout self.socket = None self.__socket_semaphore = threading.BoundedSemaphore(1) self.current_host_and_port = None self.__receiver_thread_exit_condition = threading.Condition() self.__receiver_thread_exited = False self.__send_wait_condition = threading.Condition() self.__connect_wait_condition = threading.Condition() self.running = False self.blocking = None self.connected = False self.connection_error = False # setup SSL self.__ssl_params = {} if use_ssl: warnings.warn("Deprecated: use set_ssl instead", DeprecationWarning) self.set_ssl(host_and_ports, ssl_key_file, ssl_cert_file, ssl_ca_certs, ssl_cert_validator, ssl_version) self.__receipts = {} self.__wait_on_receipt = wait_on_receipt # flag used when we receive the disconnect receipt self.__disconnect_receipt = None # function for creating threads used by the connection self.create_thread_fc = utils.default_create_thread self.__keepalive = keepalive self.vhost = vhost
def __init__(self, host_and_ports=None, prefer_localhost=True, try_loopback_connect=True, reconnect_sleep_initial=0.1, reconnect_sleep_increase=0.5, reconnect_sleep_jitter=0.1, reconnect_sleep_max=60.0, reconnect_attempts_max=3, use_ssl=False, ssl_key_file=None, ssl_cert_file=None, ssl_ca_certs=None, ssl_cert_validator=None, wait_on_receipt=False, ssl_version=None, timeout=None, keepalive=None, vhost=None ): """ \param host_and_ports a list of (host, port) tuples. \param prefer_localhost if True and the local host is mentioned in the (host, port) tuples, try to connect to this first \param try_loopback_connect if True and the local host is found in the host tuples, try connecting to it using loopback interface (127.0.0.1) \param reconnect_sleep_initial initial delay in seconds to wait before reattempting to establish a connection if connection to any of the hosts fails. \param reconnect_sleep_increase factor by which the sleep delay is increased after each connection attempt. For example, 0.5 means to wait 50% longer than before the previous attempt, 1.0 means wait twice as long, and 0.0 means keep the delay constant. \param reconnect_sleep_max maximum delay between connection attempts, regardless of the reconnect_sleep_increase. \param reconnect_sleep_jitter random additional time to wait (as a percentage of the time determined using the previous parameters) between connection attempts in order to avoid stampeding. For example, a value of 0.1 means to wait an extra 0%-10% (randomly determined) of the delay calculated using the previous three parameters. \param reconnect_attempts_max maximum attempts to reconnect \param use_ssl deprecated, see Transport::set_ssl \param ssl_cert_file deprecated, see Transport::set_ssl \param ssl_key_file deprecated, see Transport::set_ssl \param ssl_ca_certs deprecated, see Transport::set_ssl \param ssl_cert_validator deprecated, see Transport::set_ssl \param wait_on_receipt if a receipt is specified, then the send method should wait (block) for the server to respond with that receipt-id before continuing \param ssl_version deprecated, see Transport::set_ssl \param timeout the timeout value to use when connecting the stomp socket \param keepalive some operating systems support sending the occasional heart beat packets to detect when a connection fails. This parameter can either be set set to a boolean to turn on the default keepalive options for your OS, or as a tuple of values, which also enables keepalive packets, but specifies options specific to your OS implementation \param vhost specify a virtual hostname to provide in the 'host' header of the connection """ if host_and_ports is None: host_and_ports = [('localhost', 61613)] sorted_host_and_ports = [] sorted_host_and_ports.extend(host_and_ports) # # If localhost is preferred, make sure all (host, port) tuples that refer to the local host come first in the list # if prefer_localhost: sorted_host_and_ports.sort(key=utils.is_localhost) # # If the user wishes to attempt connecting to local ports using the loopback interface, for each (host, port) tuple # referring to a local host, add an entry with the host name replaced by 127.0.0.1 if it doesn't exist already # loopback_host_and_ports = [] if try_loopback_connect: for host_and_port in sorted_host_and_ports: if utils.is_localhost(host_and_port) == 1: port = host_and_port[1] if (not ("127.0.0.1", port) in sorted_host_and_ports and not ("localhost", port) in sorted_host_and_ports): loopback_host_and_ports.append(("127.0.0.1", port)) # # Assemble the final, possibly sorted list of (host, port) tuples # self.__host_and_ports = [] self.__host_and_ports.extend(loopback_host_and_ports) self.__host_and_ports.extend(sorted_host_and_ports) self.__recvbuf = '' self.listeners = {} self.__reconnect_sleep_initial = reconnect_sleep_initial self.__reconnect_sleep_increase = reconnect_sleep_increase self.__reconnect_sleep_jitter = reconnect_sleep_jitter self.__reconnect_sleep_max = reconnect_sleep_max self.__reconnect_attempts_max = reconnect_attempts_max self.__timeout = timeout self.socket = None self.__socket_semaphore = threading.BoundedSemaphore(1) self.current_host_and_port = None self.__receiver_thread_exit_condition = threading.Condition() self.__receiver_thread_exited = False self.__send_wait_condition = threading.Condition() self.__connect_wait_condition = threading.Condition() self.running = False self.blocking = None self.connected = False self.connection_error = False # setup SSL self.__ssl_params = {} if use_ssl: warnings.warn("Deprecated: use set_ssl instead", DeprecationWarning) self.set_ssl(host_and_ports, ssl_key_file, ssl_cert_file, ssl_ca_certs, ssl_cert_validator, ssl_version) self.__receipts = {} self.__wait_on_receipt = wait_on_receipt # flag used when we receive the disconnect receipt self.__disconnect_receipt = None # function for creating threads used by the connection self.create_thread_fc = utils.default_create_thread self.__keepalive = keepalive self.vhost = vhost
def __init__(self, host_and_ports = [ ('localhost', 61613) ], prefer_localhost = True, try_loopback_connect = True, reconnect_sleep_initial = 0.1, reconnect_sleep_increase = 0.5, reconnect_sleep_jitter = 0.1, reconnect_sleep_max = 60.0, reconnect_attempts_max = 3, use_ssl = False, ssl_key_file = None, ssl_cert_file = None, ssl_ca_certs = None, ssl_cert_validator = None, wait_on_receipt = False, ssl_version = DEFAULT_SSL_VERSION, timeout = None, keepalive = None, vhost = None ): """ \param host_and_ports a list of (host, port) tuples. \param prefer_localhost if True and the local host is mentioned in the (host, port) tuples, try to connect to this first \param try_loopback_connect if True and the local host is found in the host tuples, try connecting to it using loopback interface (127.0.0.1) \param reconnect_sleep_initial initial delay in seconds to wait before reattempting to establish a connection if connection to any of the hosts fails. \param reconnect_sleep_increase factor by which the sleep delay is increased after each connection attempt. For example, 0.5 means to wait 50% longer than before the previous attempt, 1.0 means wait twice as long, and 0.0 means keep the delay constant. \param reconnect_sleep_max maximum delay between connection attempts, regardless of the reconnect_sleep_increase. \param reconnect_sleep_jitter random additional time to wait (as a percentage of the time determined using the previous parameters) between connection attempts in order to avoid stampeding. For example, a value of 0.1 means to wait an extra 0%-10% (randomly determined) of the delay calculated using the previous three parameters. \param reconnect_attempts_max maximum attempts to reconnect \param use_ssl connect using SSL to the socket. This wraps the socket in a SSL connection. The constructor will raise an exception if you ask for SSL, but it can't find the SSL module. \param ssl_cert_file the path to a X509 certificate \param ssl_key_file the path to a X509 key file \param ssl_ca_certs the path to the a file containing CA certificates to validate the server against. If this is not set, server side certificate validation is not done. \param ssl_cert_validator function which performs extra validation on the client certificate, for example checking the returned certificate has a commonName attribute equal to the hostname (to avoid man in the middle attacks). The signature is: (OK, err_msg) = validation_function(cert, hostname) where OK is a boolean, and cert is a certificate structure as returned by ssl.SSLSocket.getpeercert() \param wait_on_receipt if a receipt is specified, then the send method should wait (block) for the server to respond with that receipt-id before continuing \param ssl_version SSL protocol to use for the connection. This should be one of the PROTOCOL_x constants provided by the ssl module. The default is ssl.PROTOCOL_SSLv3 \param timeout the timeout value to use when connecting the stomp socket \param keepalive some operating systems support sending the occasional heart beat packets to detect when a connection fails. This parameter can either be set set to a boolean to turn on the default keepalive options for your OS, or as a tuple of values, which also enables keepalive packets, but specifies options specific to your OS implementation \param vhost specify a virtual hostname to provide in the 'host' header of the connection """ sorted_host_and_ports = [] sorted_host_and_ports.extend(host_and_ports) # # If localhost is preferred, make sure all (host, port) tuples that refer to the local host come first in the list # if prefer_localhost: sorted_host_and_ports.sort(key = utils.is_localhost) # # If the user wishes to attempt connecting to local ports using the loopback interface, for each (host, port) tuple # referring to a local host, add an entry with the host name replaced by 127.0.0.1 if it doesn't exist already # loopback_host_and_ports = [] if try_loopback_connect: for host_and_port in sorted_host_and_ports: if utils.is_localhost(host_and_port) == 1: port = host_and_port[1] if (not ("127.0.0.1", port) in sorted_host_and_ports and not ("localhost", port) in sorted_host_and_ports): loopback_host_and_ports.append(("127.0.0.1", port)) # # Assemble the final, possibly sorted list of (host, port) tuples # self.__host_and_ports = [] self.__host_and_ports.extend(loopback_host_and_ports) self.__host_and_ports.extend(sorted_host_and_ports) self.__recvbuf = '' self.listeners = {} self.__reconnect_sleep_initial = reconnect_sleep_initial self.__reconnect_sleep_increase = reconnect_sleep_increase self.__reconnect_sleep_jitter = reconnect_sleep_jitter self.__reconnect_sleep_max = reconnect_sleep_max self.__reconnect_attempts_max = reconnect_attempts_max self.__timeout = timeout self.__socket = None self.__socket_semaphore = threading.BoundedSemaphore(1) self.current_host_and_port = None self.__receiver_thread_exit_condition = threading.Condition() self.__receiver_thread_exited = False self.__send_wait_condition = threading.Condition() self.__connect_wait_condition = threading.Condition() self.blocking = None self.connected = False # setup SSL if use_ssl and not ssl: raise Exception("SSL connection requested, but SSL library not found.") self.__ssl = use_ssl self.__ssl_cert_file = ssl_cert_file self.__ssl_key_file = ssl_key_file self.__ssl_ca_certs = ssl_ca_certs self.__ssl_cert_validator = ssl_cert_validator self.__ssl_version = ssl_version self.__receipts = {} self.__wait_on_receipt = wait_on_receipt # flag used when we receive the disconnect receipt self.__disconnect_receipt = None # function for creating threads used by the connection self.create_thread_fc = utils.default_create_thread self.__keepalive = keepalive self.vhost = vhost