def servers(req): """ A view for server management. """ items = req.zato.odb.query(Server).order_by(Server.name).all() for item in items: if item.up_mod_date: item.up_mod_date_user = from_utc_to_user( item.up_mod_date.replace(tzinfo=UTC).isoformat(), req.zato.user_profile) try: client = get_lb_client(req.zato.get('cluster')) server_data_dict = client.get_server_data_dict() bck_http_plain = client.get_config()['backend']['bck_http_plain'] lb_client_invoked = True except Exception: logger.error(format_exc()) lb_client_invoked = False if lb_client_invoked: def _update_item(server_name, lb_address, lb_state): for item in items: if item.name == server_name: item.in_lb = True item.lb_address = lb_address item.lb_state = lb_state if item.up_status == SERVER_UP_STATUS.RUNNING: item.may_be_deleted = False else: item.may_be_deleted = True for server_name in bck_http_plain: lb_address = '{}:{}'.format(bck_http_plain[server_name]['address'], bck_http_plain[server_name]['port']) _update_item(server_name, lb_address, server_data_dict[server_name]['state']) return_data = { 'items': items, 'search_form': req.zato.search_form, 'zato_clusters': req.zato.clusters, 'cluster': req.zato.get('cluster'), 'edit_form': EditServerForm(prefix='edit') } return TemplateResponse(req, 'zato/cluster/servers.html', return_data)
item.may_be_deleted = False else: item.may_be_deleted = True for server_name in bck_http_plain: lb_address = '{}:{}'.format(bck_http_plain[server_name]['address'], bck_http_plain[server_name]['port']) _update_item(server_name, lb_address, server_data_dict[server_name]['state']) return_data = { 'items': items, 'choose_cluster_form': req.zato.choose_cluster_form, 'zato_clusters': req.zato.clusters, 'cluster': req.zato.get('cluster'), 'edit_form': EditServerForm(prefix='edit') } return TemplateResponse(req, 'zato/cluster/servers.html', return_data) @method_allowed('POST') def servers_edit(req): """ Updates a server in both ODB and the load balancer. """ try: client = get_lb_client(req.zato.cluster) server_id = req.POST['id'] server = req.zato.odb.query(Server).filter_by(id=server_id).one()