Anna Khmelnitsky 2be66a0240 NSX-Admin: Support syslog configuration for edges
Add syslog configuration support for edges to nsxadmin utility.
Syslog config on edge consists of 2 syslog server IPs and protocol.
Syslog config can only be updated as one bundle (no way to update
protocol only)
to show syslog config:
    nsxadmin -o nsx-list -r edges --verbose
to update syslog config:
    nsxadmin -o nsx-update -r edges -p edge-id=<edge id>
    -p syslog-server=<ip> -p syslog-server2=<ip>
    -p syslog-proto=tcp|udp
to delete syslog config:
    nsxadmin -o nsx-update -r edges -p edge-id=<edge id>
    -p syslog-server=none

Change-Id: I26a29d7fdce6a835b4771b890c9973753ec92d79
2016-11-25 16:56:15 -08:00

89 lines
2.7 KiB
Python

# Copyright 2015 VMware, Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
from neutron import context as neutron_context
from neutron.db import common_db_mixin as common_db
from vmware_nsx import plugin
from vmware_nsx.plugins.nsx_v.vshield import vcns
def get_nsxv_client():
return vcns.Vcns(
address=cfg.CONF.nsxv.manager_uri,
user=cfg.CONF.nsxv.user,
password=cfg.CONF.nsxv.password,
ca_file=cfg.CONF.nsxv.ca_file,
insecure=cfg.CONF.nsxv.insecure)
class NeutronDbClient(common_db.CommonDbMixin):
def __init__(self):
super(NeutronDbClient, self)
self.context = neutron_context.get_admin_context()
class NsxVPluginWrapper(plugin.NsxVPlugin):
def _start_rpc_listeners(self):
pass
def _validate_config(self):
pass
def _extend_get_network_dict_provider(self, context, net):
self._extend_network_dict_provider(context, net)
# skip getting the Qos policy ID because get_object calls
# plugin init again on admin-util environment
def get_nsxv_backend_edges():
"""Get a list of all the backend edges and some of their attributes
"""
nsxv = get_nsxv_client()
edges = nsxv.get_edges()[1]
edges = edges['edgePage'].get('data', [])
backend_edges = []
for edge in edges:
# get all the relevant backend information for this edge
edge_data = {
'id': edge.get('id'),
'name': edge.get('name'),
'size': edge['appliancesSummary'].get(
'applianceSize') if edge.get('appliancesSummary') else None,
'type': edge.get('edgeType')
}
backend_edges.append(edge_data)
return backend_edges
def get_edge_syslog_info(edge_id):
"""Get syslog information for specific edge id"""
nsxv = get_nsxv_client()
syslog_info = nsxv.get_edge_syslog(edge_id)[1]
if not syslog_info['enabled']:
return 'Disabled'
output = ""
if 'protocol' in syslog_info:
output += syslog_info['protocol']
if 'serverAddresses' in syslog_info:
for server_address in syslog_info['serverAddresses']['ipAddress']:
output += "\n" + server_address
return output