vmware-nsx/vmware_nsx/shell/admin/README.rst
Shih-Hao Li c8b984ed5b NSX|V3: Update upgrade scripts for native DHCP/Metadata
1. Upgrade ports with IPv4 address only
2. Delete previous internal metadata networks
3. Add list function for metadata proxy
4. Add more checking and logs
5. Pass required UUID from command-line
6. Refactor codes

DocImpact

Change-Id: I4e0f05b2dff9394cc6d0d567abf58507efaf6685
2016-08-25 09:26:06 +00:00

189 lines
5.6 KiB
ReStructuredText

Admin Utility
=============
Introduction
------------
Purpose of this script is to build a framework which can be leveraged to build
utilities to help the on-field ops in system debugging.
Adding custom functions
-----------------------
Refer to the security groups example for reference implementation under,
admin/plugins/nsx_v3/resources/securitygroups.py
Adding new functions is fairly straightforward:
* Define the function under appropriate package. We use neutron callbacks to provide hooks.
So your function definition should be like,
::
def function(resource, event, trigger, **kwargs)
* Add the Resources and Operations enums if they don't exist.
::
class Operations(object):
NEUTRON_CLEAN = 'neutron_clean'
::
nsxv3_resources = {
constants.SECURITY_GROUPS: Resource(constants.SECURITY_GROUPS, ops)
}
* In resource.py, add the function to the callback registry.
::
registry.subscribe(neutron_clean_security_groups,
Resources.SECURITY_GROUPS.value,
Operations.NEUTRON_CLEAN.value)
* To test, do
::
cd python-nsxadmin/
sudo pip install -e .
nsxadmin -r <resource_name_you_added> -o <operation_you_added>
TODO
----
* Use Cliff
* Auto complete command line args.
Directory Structure
-------------------
admin/
plugins/
common/
Contains code specific to different plugin versions.
nsx_v3/
resources/
Contains modules for various resources supported by the
admin utility. These modules contains methods to perform
operations on these resources.
Installation
------------
::
sudo pip install -e .
Usage
-----
::
nsxadmin -r <resource> -o <operation>
Example
-------
::
$ nsxadmin -r security-groups -o list
==== [NSX] List Security Groups ====
Firewall Sections
+------------------------------------------------+--------------------------------------+
| display_name | id |
|------------------------------------------------+--------------------------------------|
| default - 261343f8-4f35-4e57-9cc7-6c4fc7723b72 | 91a05fbd-054a-48b6-8e60-3b5d445be8c7 |
| default - 823247b6-bdb3-47be-8bac-0d1114fc1ad7 | 78116d4a-de77-4a8f-b3e5-e76f458840ea |
| OS default section for security-groups | 10a2fc6c-29c9-4d8d-ac2c-b24aafa15c79 |
| Default Layer3 Section | e479e404-e712-4adb-879c-e432d510c056 |
+------------------------------------------------+--------------------------------------+
Firewall NS Groups
+------------------------------------------------+--------------------------------------+
| display_name | id |
|------------------------------------------------+--------------------------------------|
| NSGroup Container | c0b26e82-d49b-49f0-b68e-7449a59366e9 |
| default - 261343f8-4f35-4e57-9cc7-6c4fc7723b72 | 2e5b5ca1-f687-4556-8130-9524b313474b |
| default - 823247b6-bdb3-47be-8bac-0d1114fc1ad7 | b5cd9ae4-42b5-47a7-a1bf-9767ac62466e |
+------------------------------------------------+--------------------------------------+
==== [NEUTRON] List Security Groups ====
Security Groups
+--------+------+
| name | id |
|--------+------|
+--------+------+
$ nsxadmin -r security-groups -o list -f json
==== [NSX] List Security Groups ====
{
"Firewall Sections": [
{
"display_name": "default - 261343f8-4f35-4e57-9cc7-6c4fc7723b72",
"id": "91a05fbd-054a-48b6-8e60-3b5d445be8c7"
},
{
"display_name": "default - 823247b6-bdb3-47be-8bac-0d1114fc1ad7",
"id": "78116d4a-de77-4a8f-b3e5-e76f458840ea"
},
{
"display_name": "OS default section for security-groups",
"id": "10a2fc6c-29c9-4d8d-ac2c-b24aafa15c79"
},
{
"display_name": "Default Layer3 Section",
"id": "e479e404-e712-4adb-879c-e432d510c056"
}
]
}
{
"Firewall NS Groups": [
{
"display_name": "NSGroup Container",
"id": "c0b26e82-d49b-49f0-b68e-7449a59366e9"
},
{
"display_name": "default - 261343f8-4f35-4e57-9cc7-6c4fc7723b72",
"id": "2e5b5ca1-f687-4556-8130-9524b313474b"
},
{
"display_name": "default - 823247b6-bdb3-47be-8bac-0d1114fc1ad7",
"id": "b5cd9ae4-42b5-47a7-a1bf-9767ac62466e"
}
]
}
==== [NEUTRON] List Security Groups ====
{
"Security Groups": []
}
Upgrade Steps (Version 1.0.0 to Version 1.1.0)
----------------------------------------------
1. Upgrade NSX backend from version 1.0.0 to version 1.1.0
2. Create a DHCP-Profile and a Metadata-Proxy in NSX backend
3. Stop Neutron
4. Install version 1.1.0 Neutron plugin
5. Run admin tools to migrate version 1.0.0 objects to version 1.1.0 objects
* nsxadmin -r metadata-proxy -o nsx-update --property metadata_proxy_uuid=<UUID of Metadata-Proxy created in Step 2>
* nsxadmin -r dhcp-binding -o nsx-update --property dhcp_profile_uuid=<UUID of DHCP-Profile created in Step 2>
6. Start Neutron
7. Make sure /etc/nova/nova.conf has
metadata_proxy_shared_secret = <Secret of Metadata-Proxy created in Step 2>
8. Restart VMs or ifdown/ifup their network interface to get new DHCP options
Help
----
::
$ nsxadmin --help