Merge "Octavia LB status admin util" into stable/victoria
This commit is contained in:
commit
40682e8bb9
|
@ -351,6 +351,13 @@ Config
|
|||
|
||||
nsxadmin -r config -o validate
|
||||
|
||||
Loadbalancers
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Set an Octavia loadbalancer id to ERROR status. Useful while the loadbalancer hangs in PENDING status::
|
||||
|
||||
nsxadmin -r loadbalancers -o set-status-error --property loadbalancer-id=<loadbalancer id>
|
||||
|
||||
NSX-T Plugin
|
||||
------------
|
||||
|
||||
|
@ -628,6 +635,13 @@ T2P migration
|
|||
|
||||
nsxadmin -r nsx-migrate-t2p -o clean-all
|
||||
|
||||
Loadbalancers
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
- Set an Octavia loadbalancer id to ERROR status. Useful while the loadbalancer hangs in PENDING status::
|
||||
|
||||
nsxadmin -r loadbalancers -o set-status-error --property loadbalancer-id=<loadbalancer id>
|
||||
|
||||
NSXtvd Plugin
|
||||
-------------
|
||||
|
||||
|
@ -694,6 +708,10 @@ NSX Policy Plugin
|
|||
|
||||
nsxadmin -r nsx-migrate-v2t -o validate --property ext-net=<path> --property ext-cidr=<path>
|
||||
|
||||
- Set an Octavia loadbalancer id to ERROR status. Useful while the loadbalancer hangs in PENDING status::
|
||||
|
||||
nsxadmin -r loadbalancers -o set-status-error --property loadbalancer-id=<loadbalancer id>
|
||||
|
||||
Client Certificate
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ RPC_SERVER = None
|
|||
|
||||
|
||||
def _log_before_retry(retry_state):
|
||||
if retry_state.attempt_number > 0:
|
||||
if retry_state.attempt_number > 1:
|
||||
LOG.warning("Retrying the call to _update_loadbalancer_status due to "
|
||||
"timeout")
|
||||
|
||||
|
@ -704,7 +704,7 @@ class NSXOctaviaDriverEndpoint(driver_lib.DriverLibrary):
|
|||
retry=tenacity.retry_if_exception_type(
|
||||
exceptions.UpdateStatusError))
|
||||
def _update_loadbalancer_status(self, status):
|
||||
super(NSXOctaviaDriverEndpoint,
|
||||
return super(NSXOctaviaDriverEndpoint,
|
||||
self).update_loadbalancer_status(status)
|
||||
|
||||
@log_helpers.log_method_call
|
||||
|
|
|
@ -37,6 +37,7 @@ CONFIG = 'config'
|
|||
ORPHANED_NETWORKS = 'orphaned-networks'
|
||||
ORPHANED_ROUTERS = 'orphaned-routers'
|
||||
SYSTEM = 'system'
|
||||
LOADBALANCERS = 'loadbalancers'
|
||||
|
||||
# NSXV3 only Resource Constants
|
||||
PORTS = 'ports'
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
# Copyright 2021 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 oslo_log import log as logging
|
||||
import oslo_messaging as messaging
|
||||
|
||||
from vmware_nsx.services.lbaas.octavia import constants as octavia_const
|
||||
from vmware_nsx.shell.admin.plugins.common import utils as admin_utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@admin_utils.output_header
|
||||
def set_loadbalancer_status_error(resource, event, trigger, **kwargs):
|
||||
usage_msg = ("Loadbalancer id should be specified with "
|
||||
"--property loadbalancer-id=<id>")
|
||||
if not kwargs.get('property'):
|
||||
LOG.error(usage_msg)
|
||||
return
|
||||
properties = admin_utils.parse_multi_keyval_opt(kwargs['property'])
|
||||
lb_id = properties.get('loadbalancer-id')
|
||||
if not lb_id:
|
||||
LOG.error("Need to specify loadbalancer-id. "
|
||||
"Add --property loadbalancer-id=<id>")
|
||||
return
|
||||
|
||||
status_dict = {
|
||||
octavia_const.LOADBALANCERS: [{
|
||||
'id': lb_id,
|
||||
octavia_const.PROVISIONING_STATUS: octavia_const.ERROR}]}
|
||||
kw = {'status': status_dict}
|
||||
|
||||
topic = octavia_const.DRIVER_TO_OCTAVIA_TOPIC
|
||||
transport = messaging.get_rpc_transport(cfg.CONF)
|
||||
target = messaging.Target(topic=topic, exchange="common",
|
||||
namespace='control', fanout=False,
|
||||
version='1.0')
|
||||
client = messaging.RPCClient(transport, target)
|
||||
client.cast({}, 'update_loadbalancer_status', **kw)
|
|
@ -0,0 +1,25 @@
|
|||
# Copyright 2021 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 neutron_lib.callbacks import registry
|
||||
|
||||
from vmware_nsx.shell.admin.plugins.common import constants
|
||||
from vmware_nsx.shell.admin.plugins.common import loadbalancers
|
||||
from vmware_nsx.shell import resources as shell
|
||||
|
||||
|
||||
registry.subscribe(loadbalancers.set_loadbalancer_status_error,
|
||||
constants.LOADBALANCERS,
|
||||
shell.Operations.SET_STATUS_ERROR.value)
|
|
@ -0,0 +1,25 @@
|
|||
# Copyright 2021 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 neutron_lib.callbacks import registry
|
||||
|
||||
from vmware_nsx.shell.admin.plugins.common import constants
|
||||
from vmware_nsx.shell.admin.plugins.common import loadbalancers
|
||||
from vmware_nsx.shell import resources as shell
|
||||
|
||||
|
||||
registry.subscribe(loadbalancers.set_loadbalancer_status_error,
|
||||
constants.LOADBALANCERS,
|
||||
shell.Operations.SET_STATUS_ERROR.value)
|
|
@ -0,0 +1,25 @@
|
|||
# Copyright 2021 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 neutron_lib.callbacks import registry
|
||||
|
||||
from vmware_nsx.shell.admin.plugins.common import constants
|
||||
from vmware_nsx.shell.admin.plugins.common import loadbalancers
|
||||
from vmware_nsx.shell import resources as shell
|
||||
|
||||
|
||||
registry.subscribe(loadbalancers.set_loadbalancer_status_error,
|
||||
constants.LOADBALANCERS,
|
||||
shell.Operations.SET_STATUS_ERROR.value)
|
|
@ -77,6 +77,7 @@ class Operations(enum.Enum):
|
|||
REUSE = 'reuse'
|
||||
UPDATE_TIER0 = 'update-tier0'
|
||||
UPDATE_FIREWALL_MATCH = 'update-nat-firewall-match'
|
||||
SET_STATUS_ERROR = 'set-status-error'
|
||||
|
||||
|
||||
ops = [op.value for op in Operations]
|
||||
|
@ -162,6 +163,8 @@ nsxv3_resources = {
|
|||
[Operations.IMPORT.value,
|
||||
Operations.CLEAN_ALL.value,
|
||||
Operations.VALIDATE.value]),
|
||||
constants.LOADBALANCERS: Resource(constants.LOADBALANCERS,
|
||||
[Operations.SET_STATUS_ERROR.value]),
|
||||
}
|
||||
|
||||
# Add supported NSX-V resources in this dictionary
|
||||
|
@ -258,6 +261,8 @@ nsxv_resources = {
|
|||
[Operations.VALIDATE.value]),
|
||||
constants.PORTS: Resource(constants.PORTS,
|
||||
[Operations.LIST.value]),
|
||||
constants.LOADBALANCERS: Resource(constants.LOADBALANCERS,
|
||||
[Operations.SET_STATUS_ERROR.value]),
|
||||
}
|
||||
|
||||
|
||||
|
@ -296,6 +301,8 @@ nsxp_resources = {
|
|||
[Operations.CLEAN_ALL.value,
|
||||
Operations.VALIDATE.value,
|
||||
Operations.NSX_REDISTRIBUTE.value]),
|
||||
constants.LOADBALANCERS: Resource(constants.LOADBALANCERS,
|
||||
[Operations.SET_STATUS_ERROR.value]),
|
||||
}
|
||||
|
||||
nsxv3_resources_names = list(nsxv3_resources.keys())
|
||||
|
|
Loading…
Reference in New Issue