StarlingX stopped supporting CentOS builds in the after release 7.0.
This update will strip CentOS from our code base. It will also remove
references to the failed OpenSUSE feature as well.
Story: 2011110
Task: 49944
Change-Id: I8cd4e23ab83f2fe064fa1f88553eb32a69a67265
Signed-off-by: Scott Little <scott.little@windriver.com>
The release stx.9 with FQDN support for MGMT network
uses the hieradata with the new pattern:
<hostname>.yaml
But the release stx.8 is still using the old name:
<mgmt_ip>.yaml
During an upgrade controller-0 want to update
the <mgmt_ip>.yaml and controller-1 wants to use
the <hostname>.yaml, so it is necessary to change
the code to use/update the right hieradata.
Additionally, during an upgrade the active
controller running the old release can't resolve
the FQDN (i.e: controller.internal ), for this
reason during the controller-1 upgrade, the FQDN
can not be used.
Test Plan:
IPv6 AIO-SX fresh install
IPv6 AIO-DX fresh install
IPv4 AIO-SX upgrade from previous release
without story 2010722 to new release
that has the story 2010722 (not master)
IPv4 AIO-DX upgrade from previous release
without story 2010722 to new release
that has the story 2010722 (not master)
IPv4 STANDARD upgrade from previous release
without story 2010722 to new release
that has the story 2010722 (not master)
IPv6 AIO-DX upgrade from previous release
without story 2010722 to new release
that has the story 2010722 (not master)
IPv6 DC lab upgrade from previous release
without story 2010722 to new release
that has the story 2010722 (not master)
Story: 2010722
Task: 48609
Signed-off-by: Fabiano Correa Mercer <fabiano.correamercer@windriver.com>
Change-Id: I555185bea7fadb772a4023b6ecb4379e01e0f16c
The constraints file used for tsconfig and root was removed.
We need to update the file to use the StarlingX Debian constraints file.
Test Plan:
PASS: Run tox for tsconfig and root dir
Closes-bug: 2055734
Change-Id: I3b2430008a8f6c76a41457b2e4ea01f7b529854c
Signed-off-by: Hugo Brito <hugo.brito@windriver.com>
Updates the no_proxy list in the
service-parameter-list during the management
network reconfiguration.
In the first reboot after the management network
reconfiguration, The system will use the new
management IPs and some files will be updated,
like the /etc/hosts.
It is necessary to update the following paths,
with the new values:
/opt/platform/sysinv
/opt/platform/config
Additionally, during the first reboot the
system is still using the old mgmt IPs until the
apply_network_config.sh and puppet code updates
the system.
The sw-patch services starts before or at same
time of these operations and can use the old
MGMT IPs and failed to answer audit requests.
For this reason it is necessary to restart
these services.
Tests:
IPv6 mgmt network reconfig in subcloud AIO-SX
IPv4 mgmt network reconfig in standalone AIO-SX
AIO-DX Fresh install
AIO-SX Fresh install
AIO-SX IPv4 apply patch after mgmt reconfig
Story: 2010722
Task: 49203
Change-Id: I8a17f50c229a53965e13c889f0ea6ff8efd687c3
Signed-off-by: Fabiano Correa Mercer <fabiano.correamercer@windriver.com>
This change allows the reconfiguration of the management
address_pool for an AIO-SX installation.
The reconfiguration can be done even when the system was
already configured and unlocked, but it needs to lock the
controller in order to reconfigure the management network.
Since there are ansible rules using the name: "management"
as the address_pool, it is necessary to enforce the use of
the address_pool named "management" in order to create the
mgmt network.
During a management network reconfiguration the DNSMASQ
changes must not be applied in runtime, to all changes
take effect the host lock/unlock is mandatory.
Test plan
PASS: AIO-SX IPv4 delete and create another management
address-pool and create the management network with it
PASS: AIO-SX IPv6 delete and create another management
address-pool and create the management network with it
PASS: AIO-SX IPv4 fresh install
PASS: AIO-SX IPv6 fresh install
PASS: AIO-DX IPv4 fresh install
PASS: AIO-DX IPv6 fresh install
PASS: STANDARD IPv4 fresh install
PASS: DC with AIO-SX IPv4 fresh install
Story: 2010722
Task: 48469
Change-Id: I2de156162dc83d2c16437d2d8068054de19a3b20
Signed-off-by: Fabiano Correa Mercer <fabiano.correamercer@windriver.com>
Signed-off-by: Teresa Ho <teresa.ho@windriver.com>
During system bootstrap, after bootstrap ansible playbook starts,
if it fails after completing persist-config step and before k8s service
is started, the installation will fail again when trying to replay the
bootstrap ansible playbook.
Test Plan:
PASS: Start fresh install with Debian AIO-SX.
PASS: Stop bootstrap ansible playbook after persist-config step.
PASS: Replay bootstrap ansible playbook and complete the installation.
PASS: Add extra-volumes during runtime, apply changes and delete.
Closes-Bug: 2013103
Signed-off-by: Jorge Saffe <jorge.saffe@windriver.com>
Change-Id: I59f08b587c45c405a4ce1afc88913efd7befe8f9
The Debian packaging has been changed to reflect all the
git commits under the directory, and not just the commits
to the metadata folder.
This ensures that any new code submissions under those
directories will increment the versions.
Test Plan:
PASS: build-pkgs -p config-gate
PASS: build-pkgs -p controllerconfig
PASS: build-pkgs -p storageconfig
PASS: build-pkgs -p cert-alarm
PASS: build-pkgs -p cert-mon
PASS: build-pkgs -p cgts-client
PASS: build-pkgs -p sysinv-agent
PASS: build-pkgs -p sysinv
PASS: build-pkgs -p tsconfig
PASS: build-pkgs -p workerconfig
Story: 2010550
Task: 47305
Signed-off-by: Luis Sampaio <luis.sampaio@windriver.com>
Change-Id: I50ac37d06740cc096711c136ad815dcdf54528bf
The python2.7 jobs will no longer be executed as part
of the zuul check and gate.
The nodeset with the python2.7 interpreter has been
updated around Feb 5th 2023.
tsconfig flake8 was running python2.7 and has been updated
Story: 2010531
Task: 47312
Signed-off-by: Al Bailey <al.bailey@windriver.com>
Change-Id: I7bd3ec4fb3019356a344196f1a20a8ecdea0e018
This change will allow this repo to pass zuul now
that this has merged:
https://review.opendev.org/c/zuul/zuul-jobs/+/866943
Tox 4 deprecated whitelist_externals.
Replace whitelist_externals with allowlist_externals
skipsdist and usedevelop are incompatible in tox 4.
Setting tox < 4 in .zuul.yaml rather than trying to
figure out why the sysinv component is not properly
installing in tox.
Partial-Bug: #1997255
Signed-off-by: Al Bailey <al.bailey@windriver.com>
Change-Id: If8e339d20e57e0830ea4ce27c098bacfef2f2ef8
This feature adds a new RPC backend for communication between
sysinv-api, sysinv-conductor and sysinv-agent processes.
This backend is implemented using a patched zerorpc library [1],
which is built on top of ZeroMQ and message-pack.
The motivation behind this change is to decouple sysinv from RabbitMQ,
and use a brokerless solution for RPC instead.
The key points are:
- All imports of rpcapi.py are replaced by rpcapiproxy.py, which
decides the backend to use (rabbitmq or zeromq) according to
configuration.
- During an upgrade process the rpc service listens to both rabbitmq
and zeromq. For communication between hosts, the client backend api
is chosen according to host software version.
- In future versions, the usage of RabbitMQ will no longer be
necessary and its usage can be removed. I have marked these parts of
code with "TODO(RPCHybridMode)" to easily track it.
[1] https://review.opendev.org/c/starlingx/integ/+/864310
TEST PLAN:
PASS: Bootstrap and host-unlock on AIO-SX, AIO-Duplex, Standard
PASS: Bootstrap and host-unlock on DC system-controller and subcloud
PASS: Verify sysinv.log and confirm no error occurs in RPC communication
PASS: Perform system cli commands that interacts with sysinv RPCs:
- system host-cpu-max-frequency-modify
- system license-install
- system storage-backend-add ceph-external
- system host-swact
PASS: Backup & Restore on AIO-SX
PASS: Bootstrap replay (updating mgmt and cluster subnet) on AIO-SX
PASS: Platform upgrade on AIO-DX (22.06 -> 22.12)
PASS: Platform upgrade on AIO-DX+ (22.06 -> 22.12)
PASS: Platform upgrade on AIO-SX (22.06 -> 22.12)
Depends-On: https://review.opendev.org/c/starlingx/tools/+/859576
Depends-On: https://review.opendev.org/c/starlingx/stx-puppet/+/859575
Depends-On: https://review.opendev.org/c/starlingx/ansible-playbooks/+/862609
Story: 2010087
Task: 46444
Change-Id: I5cd61b541a6d8c62628a0f99db0e35af1eae5961
Signed-off-by: Alyson Deives Pereira <alyson.deivespereira@windriver.com>
Signed-off-by: Eduardo Juliano Alberti <eduardo.alberti@windriver.com>
Debian and CentOS partition scheme differs, so on a upgrade
scenario from CentOS to Debian the hosts may report disk information
different from what is recorded on the database.
This commit allows deleting a PV that fall under these conditions
on the specific scenario of CentOS -> Debian upgrade, and makes
audit check if reported partition data have difference on some
fields to determine if they need to be updated.
Test Plan:
PASS: upgrade and unlock both controller-1 and controller-0 on Debian
and verify that disk and partition information is consistent
PASS: install, bootstrap and unlock AIO-SX on Debian
Story: 2009303
Task: 46078
Signed-off-by: Heitor Matsui <HeitorVieira.Matsui@windriver.com>
Change-Id: Ia812612c96806a7f886f1997e96f95241e5e0447
The commit a6a5349d02
(k8s-1.22.5: remove feature-gates)
added a script that removes deprecated feature gates which is run during
upgrade-activate phase of previous upgrade cycle .
The commit 73632416b3
(Preserve kube-apiserver manifest params during upgrade-activate)
modified the script to preserve the kube-apiserver manifest parameters
and it is supposed to run in next patch release upgrade.
This change adds a new 'from_version' for the manifest to run during
next patch release.
The previous 'from_version' is still supported as in the future, we will
need to support CentOS to Debian upgrade.
Test Plan:
On CentOS AIO-SX
PASS: Upgrade Successful. Check if advertise address in
kube-apiserver manifest before and after running
upgrade-activate is same.
Ensure that the seccomp profile configuration is
removed after upgrade-activate.
Kube-apiserver is running and cluster is accessible after
the upgrade.
Closes-Bug: 1986854
Signed-off-by: Kaustubh Dhokte <kaustubh.dhokte@windriver.com>
Change-Id: I0e40df6e341f2da4f0e7ed4b4803197cd07470d5
This change adds a method to apply 'update-k8s-feature-gates'
puppet class on both controllers during platform upgrade activate
phase.
Depends-On: https://review.opendev.org/c/starlingx/stx-puppet/+/845651
Test Plan: (CentOS)
On AIO-SX and AIO-DX:
PASS: Full platform upgrade successful
PASS: Check logs if puppet manifest is successfully
applied on both the controllers.
Story: 2009789
Task: 44765
Signed-off-by: Kaustubh Dhokte <kaustubh.dhokte@windriver.com>
Change-Id: I9cb494a72b7ad62476378f3512cb55c94596eb1e
During the upgrade from stx6.0 to stx7.0, the content of
/opt/platform/config/22.06/pxelinux.cfg/ is copied from the previous
release. This way, the grub.cfg, which is a symlink, points to
/pxeboot/pxelinux.cfg.files/grub.cfg. As in release stx7.0
/pxeboot was moved to /var/pxeboot, the symlink should be recreated
to point the correct path, which is
/var/pxeboot/pxelinux.cfg.files/grub.cfg. This fix recriates the symlink
pointing to the correct path.
Note:
cert-manager
nginx-ingress-controller
oidc-auth-apps
platform-integ-apps
The above apps were removed from upgrade path on 65-k8s-app-upgrade.sh
script to finish upgrade process successfully
Test plan
PASS: Run initial bootstrap successfully
PASS: Upgrade AIO-DX from stx6.0 to stx7.0
Closes-bug:1972572
Signed-off-by: Samuel Presa Toledo <samuel.presatoledo@windriver.com>
Change-Id: Icb2b026ccac583295089e922e98d2acd207cabdb
sysinv tox could not be run in a developer environment
due to a relative path that only existed in a zuul env.
the py39 zuul jobs do not need root repo cloned since
the upper constraints are accessed by URL.
The py files are only being updated in their header
so that the tox jobs will be triggered to be executed
due to zuul filtering.
Story: 2006796
Task: 44861
Signed-off-by: Al Bailey <al.bailey@windriver.com>
Change-Id: I184dc910717239fd343a70c343361a4c6b8fb9e3
With the previous logic, the legacy PTP instances could get created much
after update/upgrade procedure ran if the host was configured with
clock_synchronization=ntp during those procedures, but then changed to
ptp later on.
This change introduces a flag in the file system telling the
update/upgrade procedure actually ran and shouldn't run a second time
even the legacy instances were not created and host changed to be
ptp-synced.
Test Plan:
PASS: Upgrade from r/stx6.0 to r/stx7.0 (master), w/o configured PTP;
PASS: Upgrade from r/stx6.0 to r/stx7.0 (master), w/ configured PTP;
PASS: Patch apply then removal on r/stx6.0, w/o configured PTP;
PASS: Patch apply then removal on r/stx6.0, w/ configured PTP;
PASS: Upgrade from PATCHED r/stx6.0 to r/stx7.0 (master).
Task: 44606
Story: 2009248
Signed-off-by: Douglas Henrique Koerich <douglashenrique.koerich@windriver.com>
Change-Id: I04c9cf69a61cdfe21619f419a6d2be7d17467359
When the controllerconfig service starts it is expecting
tsconfig in /usr/bin and not /usr/sbin, preventing the
serivce from starting correctly.
Tested by build package and check for controller-config
on the debian image.
Story: 2009101
Task: 43022
Signed-off-by: Charles Short <charles.short@windriver.com>
Change-Id: Ib01d600637a9153608c58e3483c616a1ea0dc315
Python2 tox jobs may fail due to expired CA certificates.
The workaround is to explicitly set an environment variable.
This env variable is only passed to python2.7 targets.
If a developer is not currently blocked by certificate failures
then they do not need to set anything.
Ex:
CURL_CA_BUNDLE=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
The py files are only updated to trigger the appropriate zuul
tox jobs.
Story: 2008943
Task: 44007
Signed-off-by: albailey <Al.Bailey@windriver.com>
Change-Id: Iba6c251368e41cd6a34dd4be4138f5eb4ad3804c
Sharing cert between kubernetes-ca and etcd-ca will dramatically
increase the complexity of updating etcd-ca cert. Therefore do the
separating CA work.
Test Plan:
0) General -- PASS
check the communication status between apiserver and etcd
check the etcd status and configuration on controllers
verify applications are upgraded
check certs are split
check certs are persisted
1) Deployment test on simplex -- PASS (changeset 31)
Lock/unlock simplex
Simplex spontaneous reboot
2) Deployment test on duplex -- PASS (changeset 31)
Switch active controller (changeset 33)
Reinstall controller and Swact (changeset 33)
3) Backup and restore starlingx platform on simplex -- PASS (changeset 31)
4) Backup and restore starlingx platform on duplex --
PASS with config-out-of-date on c0 (changeset 31)
retest in progress
5) Upgrade starlingx platform on simplex -- PASS (changeset 31)
6) Upgrade starlingx platform on duplex -- PASS
Story: 2008833
Task: 42320
Depends-on: https://review.opendev.org/#/c/800412/
Change-Id: Ic11a2cba27db03c07e0d748e093b5451482db380
Signed-off-by: yuchengde <chengde.yu@intel.com>
Signed-off-by: Michel Thebeau <Michel.Thebeau@windriver.com>
- Update debian packaging python3
- Add missing files required to build package
- Adapt to the starlingx build system
Story: 2009101
Task: 43022
Signed-off-by: Charles Short <charles.short@windriver.com>
Change-Id: Idf2bf888e96ff3b9963190bb5c3ab31a859a1b31
A lot of work has gone into making sure that StarlingX is python3
compatible. To ensure future compatibility, enable the python3
portability checks. Disable the checks that are raising errors.
Another set of commits will address the offending code.
Story: 2006796
Task: 43109
Signed-off-by: Bernardo Decco de Siqueira <bernardo.deccodesiqueira@windriver.com>
Change-Id: I4373b4b8bcd886a6122758fb4e3fb29503256298
Add support for Debian bullseye which runs python3.9.
This was tested by running tox locally on a Debian bullseye
VM.
Story: 2006796
Task: 42931,42925,43099
Signed-off-by: Charles Short <charles.short@windriver.com>
Change-Id: I2b18437db2249ecd7b358c6d1e49023afa3da21a
Pin hacking to < 4.0.1 to fix zuul gate issues.
Test:
Ran tox -e pep8 command to validate the flake8 job and result.
Related-Bug: 1926172
Signed-off-by: Charles Short <charles.short@windriver.com>
Change-Id: I74fec1c352b8947b58498e32b7554e54c77aaeaa
The following changes are made, in order to remove the
dependencies to 'admin' user and use 'dcmanager' user to
authenticate with services in the subclouds:
. Configure dcmanager user for dcorch
. Add the dcmanager user id to the static.yaml on subclouds
during upgrade
Depends-On: https://review.opendev.org/#/c/735994/
Partial-Bug: 1883758
Change-Id: I72ed05d38ac6c25d240f99c4aeaf13b51273471f
Signed-off-by: Tao Liu <tao.liu@windriver.com>
This update makes use of the PKG_GITREVCOUNT variable to auto-version
the packages in this repo.
Change-Id: I3a2c8caeb4b4647608978b1f2ccfcf0661508803
Depends-On: https://review.opendev.org/727837
Story: 2006166
Task: 39766
Signed-off-by: Don Penney <don.penney@windriver.com>
1. Conversion filesystem can be added before/after
stx-openstack is applied
2. If conversion filesystem is added after stx-openstack
is applied, changes to stx-openstack will only take effect
once the application is re-applied
3. It is not allowed to delete image-conversion filesystem
when stx-openstack is in applying/applied/removing state
4. Raise alarms for image-conversion
Change-Id: Ie205329b694525509b0820497186fcd9ec2e45c9
Closes-bug: 1819688
Depends-On: https://review.opendev.org/#/c/724270/
Depends-On: https://review.opendev.org/724288/
Signed-off-by: Elena Taivan <elena.taivan@windriver.com>
Use the persistent backup to store the upgrade data during simplex
upgrades.
Change-Id: I83280fdc5b2c702045a6a51b1c379758dd50baa2
Story: 2007403
Task: 39606
Signed-off-by: David Sullivan <david.sullivan@windriver.com>
Enable the mechanism to upgrade the platform components on
a running StarlingX system with duplex controllers.
This includes upgrade updates for:
o generation of kubernetes join_cmd to enable the N+1 controller
to join the cluster
o migrate of kubernetes config
o migrate etcd on host-swact
o migrate of DistributedCloud dcmanager and dcorch databases
A maintenance release for stx3.x is required to upgrade to stx4.0
Tests Performed with duplex controller: AIO-DX and Standard
- system load-import
- system health-query-upgrade
- system upgrade-start
- system host-upgrade controller-0
- system host-lock/unlock host N while controller N, N+1
- system host-lock/unlock controller-0 while controller N+1
- system host-upgrade controller-1
- system host-upgrade storage
- system host-upgrade worker
- system upgrade-activate
- system upgrade-abort
- system host-downgrade
- system upgrade-complete
- verified application (e.g. stx-monitor) over upgrade
Change-Id: I4267c7b32b2e7b59b5ffdd8146288698962da1e0
Story: 2007403
Task: 39243
Task: 39244
Task: 39245
Signed-off-by: John Kung <john.kung@windriver.com>
Define a constant for /opt/platform/deploy/<version>
Partial-Bug: 1864508
Change-Id: Ide43993992aeae830631a0c1bb8ee377990a6974
Signed-off-by: Tao Liu <tao.liu@windriver.com>
This commit removes obsolete version checks from sysinv code.
Story: 2007403
Task: 39226
Change-Id: Ibc5ba1d65c16971926dfd3aae05564fbb314aa1b
Signed-off-by: Carmen Rata <carmen.rata@windriver.com>
1. Rename Titanium Cloud to StarlingX for .spec files
2. Rename Titanium Cloud to StarlingX for .service file
Test:
After the de-brand change, bootimage.iso has built in the flock layer
and installed on the dev machine to validate the changes.
Please note, doing de-brand changes in batches, this is batch4 changes.
Story: 2006387
Task: 36202
Change-Id: I708a1edb07dcd21a623fa484bb3b935c5180d089
Signed-off-by: Sharath Kumar K <sharath.kumar@intel.com>
Most of the v1 mitigation is baked into the kernel and not
optional. The swapgs barriers are, however, optional.
They have a negative performance impact so we disable them
by using the nospectre_v1 kernel bootarg.
Change-Id: Ia5938249ad0f0a53435251e505dac843b923ad62
Closes-Bug: 1860193
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
This update adds INITIAL_CONTROLLER_CONFIG_COMPLETE to the tsconfig
shell variable subscript.
Change-Id: I8740c468b002ae2d7da5ac4130d7517d3ea80261
Partial-Bug: 1847872
Signed-off-by: Don Penney <don.penney@windriver.com>
These files will be extracted by the _service file that is managed
by OBS.
These do not affect the CentOS build
Story: 2006723
Task: 37133
Change-Id: Iec8329ca2c7d6442cd41436c291eae79326052fb
Signed-off-by: Saul Wold <sgw@linux.intel.com>
The disable_worker_services file was originally created
to prevent the (bare metal) nova-compute services from
running on a newly upgraded controller in an AIO-DX
configuration. This situation no longer exists because
the bare metal nova-compute services do not exist after
transiting to containers. this flag is no longer needed.
Removing all references to the disable_worker_services file.
Change-Id: I551122d0383eb7f7d6e53defa4010e1d62c1c899
Partial-Bug: #1838432
Signed-off-by: marvin <weifei.yu@intel.com>
Rpmlint show the following error for the tsconfig configuration script,
since tsconfig is not actually executable force an error if it is tried.
tsconfig should really be located in another directory that does not
expect executables.
[ 6s] tsconfig.x86_64: E: script-without-shebang (Badness: 2) /usr/bin/tsconfig
[ 6s] This text file has executable bits set or is located in a path dedicated for
[ 6s] executables, but lacks a shebang and cannot thus be executed. If the file is
[ 6s] meant to be an executable script, add the shebang, otherwise remove the
[ 6s] executable bits or move the file elsewhere.
Story: 2006564
Task: 36665
Change-Id: If52becbb3f6f7cc4833d878a1ded550497101ea9
Signed-off-by: Saul Wold <sgw@linux.intel.com>
These will be used with the Open Build Service (OBS) an _service
will be used to automagically generate the tarball.
OBS is a generic system to build and distribute binary packages from
sources [0], StarlingX OBS Project:
- Cloud:starlingx:2.0 [1]
[0] openbuildservice.org
[1] https://build.opensuse.org/project/show/Cloud:StarlingX:2.0
Story: 2006508
Task: 36650
Task: 36651
Task: 36652
Task: 36653
Change-Id: Ie59e8403a6f3173a678f5fd1cd5cf03df4a7e961
Signed-off-by: Saul Wold <sgw@linux.intel.com>
This is used by kickstarts during installation to determine if
controller-1 OSDs should be wiped and is needed at B&R
restore platform step.
Response is 'true' or 'false' based on the existence of
/etc/platform/.skip_ceph_osds_wipe flag. This flag is
created by Ansible restore blaybook if wipe_ceph_osds
is set to 'false'.
Change-Id: I93ab2c1e0a0759c2492d4d481e49de315c4998b3
Story: 2004761
Task: 36593
Signed-off-by: Ovidiu Poncea <ovidiu.poncea@windriver.com>
Depends-On: I96392f293883d5583e51abfca8cac8e4c3d187a1
Depends-On: Ibe6121c430eccf84698be67d587ebc7ac7c40755
Change-Id: I9325f57a85bcea7274dfb7ab41898b5c48d294a3
Signed-off-by: Scott Little <scott.little@windriver.com>
The filesystem /opt/cgcs is removed and its content moved under
/opt/platform.
Tested in AIO-SX, AIO-DX and Standard hardware labs.
Depends-On: https://review.opendev.org/674360
Partial-Bug: 1830142
Depends-On: I4c55186f939675cc2c3dc871ad03699d95c6091b
Change-Id: I96392f293883d5583e51abfca8cac8e4c3d187a1
Signed-off-by: Kristine Bujold <kristine.bujold@windriver.com>