While attempting to reproduce a rabbitmq related failure on
an AIO-DX system, I somehow caused a situation where the
rabbitmq pods were running, but were missing some of the nova
queues - specifically, the notifications.info queue was missing.
When the VIM initialized, it attempted to attach a consumer to
this non existent queue, resulting in an exception, which
prevents the VIM from coming up, which causes SM to decide the
host was unhealthy, which resulted in a swact to the other
controller. The same problem happened there, which caused an
endless series of swacts.
The VIM already has code to check whether the nova exchange has
been created in the rabbitmq pod, but it did not catch the case
where the exchange was there, but some of the queues were
missing. This fix updates the VIM to detect this situation and
avoid attempting to create its consumer until the queue has
been created.
Change-Id: Ib5446bd15823cb0e7204ad8d0ff4f37270044c4b
Closes-Bug: 1816766
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
1. bring up guestAgent service
2. bring up guestServer service
3. move service enable check from plugin.sh to lib/stx-nfv
Story: 2003163
Task: 29191
Change-Id: I51badd4a737b0f4e2ed66f926640ad202bf6fb5f
Signed-off-by: Yi Wang <yi.c.wang@intel.com>
Add the minimum dependency bits for devstack master, plus the
required stx-update plugin in the devstack job definition.
The remaining master/bionic stuff will be in a follow-up review.
Change-Id: Id6b4e3dad1fe54d66b2b5a3dbbe3983621943bb2
Signed-off-by: Dean Troyer <dtroyer@gmail.com>
Changes done:
- The install instructions were moved into the makefile.
- Unused install instructions were removed.
- Cleanup in the spec file.
Change-Id: I9167f039c87360917de2d620fad718ab4e4cbaff
Story: 2004043
Task: 27555
Signed-off-by: Erich Cordoba <erich.cordoba.malibran@intel.com>
Systemd expects service files to be world readable or
it prints a warning log.
This update adds the world readable attribute to the
host agent's service file to avoid the log noise.
Change-Id: I577440bb99d4b69bb868f27b830fd6073c5a79b2
Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
When a compute host is deleted, the VIM attempts to delete the
node from kubernetes. However, if a compute host was powered
on and the personality was set, but the host was never installed,
no kubernetes node will exist for the host. When the VIM attempts
to delete the node from kubernetes, the API returns a failure
and the VIM doesn't handle that properly, so it continues to
attempt to delete the node over and over.
The fix is to handle the NOT_FOUND response from the delete API
and treat that as a success.
Change-Id: If9ca8baae4252a46ed7a514b2e91586436262688
Story: 2002843
Task: 29496
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
Changes done:
- install target created in makefile.
- install commands moved from specfile into makefile
- cleanup in specfile
Story: 2004043
Task: 27556
Change-Id: Ie2008b62e156e7c4aebace5a061f36b343d10955
Signed-off-by: Erich Cordoba <erich.cordoba.malibran@intel.com>
In the pre-kubernetes configuration, we had a single instance of
rabbitmq running, so the VIM configured a single non-HA queue
to listen for nova notifications. In the kubernetes configuration
there are two instances of rabbitmq running. The nova notification
queue is configured to be HA through a policy that matches names
starting with "notifications.". However, the VIM listener queue
is named nfvi_nova_listener_queue, so it does not match the
policy and is not configured to be HA. That means that when the
home rabbitmq node goes away (e.g. due to a controller reboot),
the VIM listener queue is no longer available, which causes
failures in the VIM.
The solution is to rename the VIM queue to:
notifications.nfvi_nova_listener_queue
This will ensure that it matches the nova policy and is configured
with the same HA parameters as the nova notification queue.
Change-Id: I958aadfa2da8f4aba9d18631ee0808fe97c42032
story: 2002843
task: 29380
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
This change applies the NoExecute taint to AIO-DX and worker nodes
when they are locked. This causes pods to be evicted from the node
and prevents new pods from being scheduled on that node. When the
node is unlocked and has rebooted, the taint is removed.
Change-Id: I2a7c8843a68661e15224260c53fd171920473161
story: 2002843
task: 29359
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
Store the remote_storage label against the host object and always
allow cold migration and evacuation for VMs on hosts
with the label enabled.
Change-Id: Iaf64474893f1426f1c24db9f535ac4c99faa0559
Story: 2004447
Task: 29190
Signed-off-by: Kevin Smith <kevin.smith@windriver.com>
Update conf.py for release notes to include the project
variable, set to the project name. This is so the string
above the left nav renders the project name.
Story: 2004900
Task: 29231
Change-Id: Ibb4bea0f5559285a47693833e9ebb2e9290470f5
Signed-off-by: Kristal Dale <kristal.dale@intel.com>
After the openstack application is removed, stale hypervisor information
in the VIM's database could cause repeated controller host swacts when a
worker host lock/unlock is attempted. Qualifying the hypervisor query
with an enabled compute plugin will resolve this. Note that subsequent
openstack application apply will re-initialize the VIM's hypervisor
information in the database.
Story: 2004520
Task: 29186
Change-Id: I7365fb88c71f3152864239aa629798e66b5c988a
Signed-off-by: Kevin Smith <kevin.smith@windriver.com>
As a result of time spent within stx-nfv, there are API reference content
gaps:
- nfv/nfv-docs directory removed
More Information:
- [Starlingx-discuss] API requests: stx-nfv [0]
- Etherpad StarlingX APIs Review [1]
[0] http://lists.starlingx.io/pipermail/starlingx-discuss/2018-December/002139.html
[1] https://etherpad.openstack.org/p/stx-apis
Story: 2004877
Task: 29154
Change-Id: I00c166be0c6a6a53952da5796dcf5d437835c12d
Signed-off-by: Abraham Arce <abraham.arce.moreno@intel.com>
Small change to recently submitted update for tasks 26663/26669.
As neutron config 'enable_new_agents' is now set to False,
agents other than the managed L3 and DHCP agents do not ever
get their admin_state_up set to True (though it is unclear if
the agents actually respect the admin_state_up setting). This
change sets all admin_state_up values to True on host enable
for all agents. On Host disable the admin_state_up is not changed
for agents other than L3 and DHCP.
Story: 2003857
Task: 29069
Change-Id: I2d6d426b9111361e109c00dbc3a23ece6cb2916f
Signed-off-by: Kevin Smith <kevin.smith@windriver.com>
Rework neutron system host management to operate on agent states
rather than an extended host entity, as it was agreed with the
neutron team that a new host level entity was not desired in the
neutron core.
DHCP and L3 agents on hosts with openstack_compute labels are
now managed by the VIM.
Story: 2003857
Task: 26663
Change-Id: I441fcf3c186f68d17abafe337af71d0caf9c40da
Signed-off-by: Kevin Smith <kevin.smith@windriver.com>
The setting of the storage extra spec on each flavor was
removed from nova recently. However, the VIM still relies
on this extra spec being set and this results in the VIM
not making proper decisions on whether to live migrate,
cold migrate or evacuate instances during various system
events (e.g. a host lock).
The solution is to remove the storage extra spec from the
VIM. Live migration is now supported for instances,
regardless of the storage type. The cold migrate and
evacuate decisions will assume local storage is being
used until support for remote storage has been added to
the containers configuration.
Change-Id: I42d2d755c5cc61acb8e23bc278cd920a3b782562
Story: 2004386
Task: 28911
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
replace unicode by six.text_type
replace urlparse by six.moves.urllib.parse
remove the ignore for F821 from the flake8 config
PS: as there is a bug of pylint 1.9, six.moves.urllib.parse
should be import as follows:
e.g.
from doc of module six:
from six.moves.urllib.parse import urlparse
urlparse(endpoint).path
here:
from six.moves import urllib
urllib.parse.urlparse(endpoint).path
pylint bug: https://github.com/PyCQA/pylint/issues/2180
Story: 2003427
Task: 24605
Task: 24608
Change-Id: I098ba8093dbf08dd91acaf403291ebb469195558
Signed-off-by: SidneyAn <ran1.an@intel.com>
Updates the VIM to avoid creating the nova-compute service, which
required an extension to the nova API. Instead:
- Nova is configured to automatically create new services and
set them to disabled.
- When a host configured with the nova-compute service is
unlocked, the VIM will wait for the nova-compute service to
be created and then enable it.
These changes only apply to the kubernetes configuration.
This commit also adds some robustness to the VIM's keystone token
handling code to fail earlier when a token cannot be retrieved.
Change-Id: If8ce4eea87a51451495517077ca2ea6fbc6b689d
Story: 2004583
Task: 28387
Depends-On: Idb27a927de2ac91ebbb1df343a349bb14ec2f0d5
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
This does not ensure nfv is python3 compatable, but
it does ensure that the current unit tests and code covered
by those tests work in python3.
The shell.py changes are due to a change in default values in argparse.
The instance director change is because python3 uses a reference
rather than a copy, for its dict keys.
Story: 2003427
Task: 28818
Change-Id: Iaccc0ab5fc4e30b41df108f817612abad8ec612c
Signed-off-by: Al Bailey <Al.Bailey@windriver.com>
This patch adds compiler flags to improve the security of STX code.
Flags added:
Format string vulnerabilities: CFLAGS="-Wformat -Wformat-security"
Compiler will treat string format warnings as errors,
so at compiling level, buffer overflow is avoided.
Story: 2004380
Task: 28808
Signed-off-by: Luis Botello <luis.botello.ortega@intel.com>
Reviewed-by: Erich Cordoba <erich.cordoba.malibran@intel.com>
Victor Rodriguez <vm.rod25@gmail.com>
Suggested-by: Victor Rodriguez <vm.rod25@gmail.com>
Erich Cordoba <erich.cordoba.malibran@intel.com>
Change-Id: I7e844718e14b35893f9eeb725e32d9d7477f0d57
when dict keys/values/items as a list
replace keylist = heights.keys()
to keylist = list(heights)
replace valuelist = heights.values()
valuelist = list(heights.values())
when Iterating through dict keys/values/items
keep for key in heights.keys()
Story: 2003427
Task: 24607
Change-Id: I22c8e1c5494a6763821b394a77a4d93ec837edc0
Signed-off-by: SidneyAn <ran1.an@intel.com>