The build/upload process CAN get stuck sometimes. As we are paying
utility rates for the high-power build server, we should timeout when
it's likely the build is stuck.
Use a default timeout just short of 4 hours, as some providers round up
partial instance-hours for billing.
Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
It is possible for 'server create' to return success, but then NOT have
a good VM afterwards. The instance will be in state ERROR.
Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
When there are more than one network, it is required to select the one
to be attached to the nic of the instance.
Signed-off-by: Loic Dachary <loic@dachary.org>
The packages repo host fails in environments where networking setup is
needed in VMs. Use the same user-data as the buildhosts to ensure this
is the case.
Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
Split the sleep from the server creation, so we catch 'server create'
failures (eg due to quota):
> Quota exceeded for cores: Requested 16, but already used 10 of 20 cores
> (HTTP 403) (Request-ID: req-6467934e-db50-4479-995c-4d44dedf553a)
Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
OpenStack could tell us the VM has multiple networks, and offers no
guarantee about the order of addresses either (the old code failed if
the v4 IP was first).
For now, take the first listed network, and the first listed IPv4
address therein. Comments contain more detailed examples of possible
output from openstack tool.
Also remove the need for using jq to parse the output.
Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
When the quotas are low, it matters to block until the build machine is
actually deleted. Otherwise target provisionning may fail because the
they exceed the quota. For instance the default on OVH is to have 32
cores and the build machine uses 16. The packages-repository machine
uses two, the teuthology cluster uses one and that leaves only 13 cores
for the targets which may be too low when running jobs that require
large instances.
Signed-off-by: Loic Dachary <loic@dachary.org>
Most of the flavor, sha1, tag etc. selection logic as implemented in the
packaging module of teuthology relies on remote hosts. This is complex
to tests and inconvenient because hosts must be provisionned even before
trying to figure out which packages need to be installed.
Using remote hosts is necessary when bare metal targets are used because
teuthology must adapt to the operating system already installed. The
selection logic in the context of dynamically provisionned targets is
simpler because it is defined by the job being run.
The buildpackages is refactored to use only the job configuration to
figure out which packages must be built. It makes it specific to targets
that are dynamically provisionned. It would have to be modified to query
the remote host in the case of bare metal targets.
Signed-off-by: Loic Dachary <loic@dachary.org>
CentOS 6.5 needs to install a package and reboot to grow the root file
system. Instead of assuming a common user-data.txt file can fit all
Operating Systems, make one user data per os-type/os-version combination.
Signed-off-by: Loic Dachary <loic@dachary.org>
Instead of relying on git_base_url, use the get_ceph_git_url() to obtain
the URL of the Ceph repository to use with git clone. This allows the
user to override it via the git_ceph_url configuration option and the
--git-ceph-url command line option to teuthology-openstack.
http://tracker.ceph.com/issues/11883 Refs: #11883
Signed-off-by: Loic Dachary <loic@dachary.org>
Build Ceph packages from source for the required revision, os_type,
os_version and architecture and upload them to the gitbuilder
repository.
http://tracker.ceph.com/issues/13031Fixes: #13031
Signed-off-by: Loic Dachary <loic@dachary.org>