def install_new_agents(ctx, install_agent_timeout, node_ids, node_instance_ids, install_methods=None, validate=True, install=True, manager_ip=None, manager_certificate=None, stop_old_agent=False, **_): hosts = _create_hosts_list(ctx, node_ids, node_instance_ids, install_methods) _assert_hosts_started(hosts) graph = ctx.graph_mode() if validate: validate_subgraph = _add_validate_to_task_graph( graph, hosts, current_amqp=False, manager_ip=manager_ip, manager_certificate=manager_certificate) if install: install_subgraph = graph.subgraph('install') for host in hosts: seq = install_subgraph.sequence() seq.add( host.send_event('Installing new agent'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.create_amqp', kwargs={ 'install_agent_timeout': install_agent_timeout, 'manager_ip': manager_ip, 'manager_certificate': manager_certificate, 'stop_old_agent': stop_old_agent }, allow_kwargs_override=True), host.send_event('New agent installed.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.validate_amqp', kwargs={'current_amqp': True}), *lifecycle.prepare_running_agent(host)) for subnode in host.get_contained_subgraph(): seq.add( subnode.execute_operation( 'cloudify.interfaces.monitoring.start')) if validate and install: graph.add_dependency(install_subgraph, validate_subgraph) graph.execute()
def install_new_agents(ctx, install_agent_timeout, node_ids, node_instance_ids, **_): if node_ids or node_instance_ids: filtered_node_instances = _filter_node_instances( ctx=ctx, node_ids=node_ids, node_instance_ids=node_instance_ids, type_names=[]) error = False for node_instance in filtered_node_instances: if not lifecycle.is_host_node(node_instance): msg = 'Node instance {0} is not host.'.format(node_instance.id) ctx.logger.error(msg) error = True elif utils.internal.get_install_method( node_instance.node.properties) \ == constants.AGENT_INSTALL_METHOD_NONE: msg = ('Agent should not be installed on ' 'node instance {0}').format(node_instance.id) ctx.logger.error(msg) error = True if error: raise ValueError('Specified filters are not correct.') else: hosts = filtered_node_instances else: hosts = (host for host in _get_all_host_instances(ctx) if utils.internal.get_install_method(host.node.properties) != constants.AGENT_INSTALL_METHOD_NONE) graph = ctx.graph_mode() for host in hosts: seq = graph.sequence() seq.add( host.send_event('Installing new agent.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.create_amqp', kwargs={'install_agent_timeout': install_agent_timeout}, allow_kwargs_override=True), host.send_event('New agent installed.'), *lifecycle.prepare_running_agent(host) ) for subnode in host.get_contained_subgraph(): seq.add(subnode.execute_operation( 'cloudify.interfaces.monitoring.start')) graph.execute()
def install_new_agents(ctx, install_agent_timeout, node_ids, node_instance_ids, **_): if node_ids or node_instance_ids: filtered_node_instances = _filter_node_instances( ctx=ctx, node_ids=node_ids, node_instance_ids=node_instance_ids, type_names=[]) error = False for node_instance in filtered_node_instances: if not lifecycle.is_host_node(node_instance): msg = 'Node instance {0} is not host.'.format(node_instance.id) ctx.logger.error(msg) error = True elif utils.internal.get_install_method( node_instance.node.properties) \ == constants.AGENT_INSTALL_METHOD_NONE: msg = ('Agent should not be installed on ' 'node instance {0}').format(node_instance.id) ctx.logger.error(msg) error = True if error: raise ValueError('Specified filters are not correct.') else: hosts = filtered_node_instances else: hosts = (host for host in _get_all_host_instances(ctx) if utils.internal.get_install_method(host.node.properties) != constants.AGENT_INSTALL_METHOD_NONE) graph = ctx.graph_mode() for host in hosts: seq = graph.sequence() seq.add( host.send_event('Installing new agent.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.create_amqp', kwargs={'install_agent_timeout': install_agent_timeout}, allow_kwargs_override=True), host.send_event('New agent installed.'), *lifecycle.prepare_running_agent(host)) for subnode in host.get_contained_subgraph(): seq.add( subnode.execute_operation( 'cloudify.interfaces.monitoring.start')) graph.execute()
def install_new_agents(ctx, install_agent_timeout, node_ids, node_instance_ids, validate=True, install=True, manager_ip=None, manager_certificate=None, **_): hosts = _create_hosts_list(ctx, node_ids, node_instance_ids) _assert_hosts_started(hosts) graph = ctx.graph_mode() if validate: validate_subgraph = _add_validate_to_task_graph( graph, hosts, current_amqp=False, manager_ip=manager_ip, manager_certificate=manager_certificate ) if install: install_subgraph = graph.subgraph('install') for host in hosts: seq = install_subgraph.sequence() seq.add( host.send_event('Installing new agent'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.create_amqp', kwargs={ 'install_agent_timeout': install_agent_timeout, 'manager_ip': manager_ip, 'manager_certificate': manager_certificate }, allow_kwargs_override=True), host.send_event('New agent installed.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.validate_amqp', kwargs={'current_amqp': True}), *lifecycle.prepare_running_agent(host) ) for subnode in host.get_contained_subgraph(): seq.add(subnode.execute_operation( 'cloudify.interfaces.monitoring.start')) if validate and install: graph.add_dependency(install_subgraph, validate_subgraph) graph.execute()
def install_new_agents(ctx, install_agent_timeout, node_ids, node_instance_ids, validate=True, install=True, **_): if node_ids or node_instance_ids: filtered_node_instances = _filter_node_instances( ctx=ctx, node_ids=node_ids, node_instance_ids=node_instance_ids, type_names=[]) error = False for node_instance in filtered_node_instances: if not lifecycle.is_host_node(node_instance): msg = 'Node instance {0} is not host.'.format(node_instance.id) ctx.logger.error(msg) error = True elif utils.internal.get_install_method( node_instance.node.properties) \ == constants.AGENT_INSTALL_METHOD_NONE: msg = ('Agent should not be installed on ' 'node instance {0}').format(node_instance.id) ctx.logger.error(msg) error = True if error: raise ValueError('Specified filters are not correct.') else: hosts = filtered_node_instances else: hosts = [host for host in _get_all_host_instances(ctx) if utils.internal.get_install_method(host.node.properties) != constants.AGENT_INSTALL_METHOD_NONE] for host in hosts: state = host.get_state().get() if state != 'started': raise RuntimeError('Node {0} is not started (state: {1})'.format( host.id, state)) graph = ctx.graph_mode() if validate: validate_subgraph = graph.subgraph('validate') for host in hosts: seq = validate_subgraph.sequence() seq.add( host.send_event('Validating agent connection.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.validate_amqp', kwargs={ 'fail_on_agent_not_installable': True }), host.send_event('Validation done')) if install: install_subgraph = graph.subgraph('install') for host in hosts: seq = install_subgraph.sequence() seq.add( host.send_event('Installing new agent'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.create_amqp', kwargs={'install_agent_timeout': install_agent_timeout}, allow_kwargs_override=True), host.send_event('New agent installed.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.validate_amqp', kwargs={ 'fail_on_agent_dead': True }), *lifecycle.prepare_running_agent(host) ) for subnode in host.get_contained_subgraph(): seq.add(subnode.execute_operation( 'cloudify.interfaces.monitoring.start')) if validate and install: graph.add_dependency(install_subgraph, validate_subgraph) graph.execute()
def install_new_agents(ctx, install_agent_timeout, node_ids, node_instance_ids, validate=True, install=True, **_): if node_ids or node_instance_ids: filtered_node_instances = _filter_node_instances( ctx=ctx, node_ids=node_ids, node_instance_ids=node_instance_ids, type_names=[]) error = False for node_instance in filtered_node_instances: if not lifecycle.is_host_node(node_instance): msg = 'Node instance {0} is not host.'.format(node_instance.id) ctx.logger.error(msg) error = True elif utils.internal.get_install_method( node_instance.node.properties) \ == constants.AGENT_INSTALL_METHOD_NONE: msg = ('Agent should not be installed on ' 'node instance {0}').format(node_instance.id) ctx.logger.error(msg) error = True if error: raise ValueError('Specified filters are not correct.') else: hosts = filtered_node_instances else: hosts = [ host for host in _get_all_host_instances(ctx) if utils.internal.get_install_method(host.node.properties) != constants.AGENT_INSTALL_METHOD_NONE ] for host in hosts: state = host.get_state().get() if state != 'started': raise RuntimeError('Node {0} is not started (state: {1})'.format( host.id, state)) graph = ctx.graph_mode() if validate: validate_subgraph = graph.subgraph('validate') for host in hosts: seq = validate_subgraph.sequence() seq.add( host.send_event('Validating agent connection.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.validate_amqp', kwargs={'fail_on_agent_not_installable': True}), host.send_event('Validation done')) if install: install_subgraph = graph.subgraph('install') for host in hosts: seq = install_subgraph.sequence() seq.add( host.send_event('Installing new agent'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.create_amqp', kwargs={'install_agent_timeout': install_agent_timeout}, allow_kwargs_override=True), host.send_event('New agent installed.'), host.execute_operation( 'cloudify.interfaces.cloudify_agent.validate_amqp', kwargs={'fail_on_agent_dead': True}), *lifecycle.prepare_running_agent(host)) for subnode in host.get_contained_subgraph(): seq.add( subnode.execute_operation( 'cloudify.interfaces.monitoring.start')) if validate and install: graph.add_dependency(install_subgraph, validate_subgraph) graph.execute()