248 Commits

Author SHA1 Message Date
Dmitri Dolguikh
c39e902fd4 and moar testability changes 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
f00c8cae74 moar changes around packet construction to make testing easier 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
bf8701a8c5 Made dhcpv6 packet easier to test 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
b6741d78b8 added options tests 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
ffff3b81ba a reminder of the cli startup command 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
cb79b8eaa4 Added bootipv6 command 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
3a5808cb30 first stab at dhcpv6 support 2018-02-05 12:33:17 -08:00
David Anderson
8834cc3e94 Update the dependency set with a recent version of dep. 2018-02-04 19:30:25 -08:00
David Anderson
0fe0d3e719 Delete the api-example binary I accidentally committed a while ago. 2018-02-04 19:22:58 -08:00
David Anderson
ff3b2f6fd6 Refactor firmware identification to be a bit easier to follow. #63 2018-02-04 17:56:00 -08:00
David Anderson
b7411f3ed3 Only boot with ipxe.pxe if we're chainloading from another iPXE. #63
undionly.kpxe doesn't work if you chainload from a native iPXE, but it's
required for physical machines with NICs that iPXE doesn't natively
support.

In my previous attempt to handle Virtualbox's crippled iPXE, I switched
all BIOS-based boots to use ipxe.pxe. This was a bad idea, so now instead
we specifically recognize third-party iPXE builds, and only chainload
*those* with ipxe.pxe, and stick with undionly.kpxe for the rest.
2018-02-04 14:41:09 -08:00
David Anderson
a44cef6d7b Add an advanced option to pass in a raw iPXE script.
The feature is heavily laced with warnings and a complete lack of
promises around future compatibility. But within those parameters,
it might allow some people to do cool things.

Fixes #60.
2018-02-03 21:25:55 -08:00
Matt Layher
c41aa79265 dhcp4: parse transaction ID as a byte slice 2018-02-03 11:23:32 -08:00
David Anderson
bc300c7140 Rename README.testing to README.testing.md so that github formats it. 2018-01-15 19:17:56 -08:00
David Anderson
029be8d339 Force machines to chainload through Pixiecore's embedded iPXE.
This guarantees that we load the real OS from an iPXE with a known
featureset, rather than rely on the firmware iPXEs to be correct.

Also switch to ipxe.pxe for BIOS boots instead of undionly.kpxe.

ipxe.pxe works when you chainload from one iPXE to another, whereas
undionly.kpxe encounters some kind of poorly explained bug where
it loses the ability to configure networking.

Tested against the following configurations:
 - VirtualBox + BIOS w/ iPXE
 - VirtualBox + BIOS w/ Intel UNDI
 - VirtualBox + EFI
 - KVM + SeaBIOS w/ iPXE
 - KVM + OVMF (EFI)
 - Dell R610 + Dell BIOS/PXE

Fixes #51, fixes #52.
2018-01-15 19:17:56 -08:00
David Anderson
5f8e425f57 Add a quick command to boot CoreOS. 2018-01-12 21:05:11 -08:00
Jinank Jain
ba3694a23b misc: Remove glide and use dep
Since glide is deprecated as a dependency manager for go
project and dep is now officially supported so it would
be a good idea to move to dep
2017-12-31 14:38:36 -06:00
David Anderson
81fbed5acf Also check foor bzImage support in the ProxyDHCP stage. #51
Virtualbox inexplicably ships with an iPXE image that knows
how to speak HTTP, but cannot handle bzImage files. This is a
quick and dirty fix for that specific issue, while I work on
the more permanent fix of always chainloading into a known
good iPXE.
2017-12-24 19:28:41 -08:00
David Anderson
c813cd6b8e Update Travis to run on Go 1.8+1.9. 2017-12-24 17:34:30 -08:00
David Anderson
6cd17867fc Delete the UI. It's ugly, not very useful, and afaik nobody uses it. 2017-12-24 17:33:18 -08:00
David Anderson
e8185cf62d Use cmp.Diff to compare pcap packets.
This fixes a spurious failure from reflect.DeepEqual.
2017-12-24 17:22:09 -08:00
David Anderson
bff58e14b3 Update the glide lock to newer versions. 2017-12-24 17:19:14 -08:00
David Anderson
18af042ed8 Update the embedded copy of iPXE. 2017-12-24 17:12:15 -08:00
Anatoli Babenia
7eee7d4832 Rename pixiecore quick netboot into pixiecore quick xyz
This places the option below OS specific installers and
makes the command explicit.
2017-12-24 16:07:16 -08:00
Anatoli Babenia
7144ad4cdc Add netboot.xyz into quick boot options
Fixes #46
2017-12-24 16:07:16 -08:00
pancho horrillo
b8b3aeb641 Replace ENV with ARG at Dockerfile for vars that should not be persisted
Vars declared via the ENV mechanism will also be present at run time, polluting
somewhat the environment.  Since both PIXIECORE_{SANDBOX,CONTEXT} are only
needed at build time, using the ARG form is a cleaner solution.

See ¹ for reference.

¹: https://docs.docker.com/engine/reference/builder/#arg
2017-08-16 10:55:09 -07:00
pancho horrillo
7ffd9d9f64 Bump alpine version to 3.6
Alpine 3.6 is readily available, and provides go 1.8.1
2017-06-01 20:13:15 -07:00
David Anderson
e78af6b0e8 dhcp4: only run the linuxConn tests on linux.
Seems obvious when you say it like that! Fixes #41.
2017-06-01 20:11:50 -07:00
David Anderson
eb35906ff0 netboot: update vendored dependency versions. 2017-06-01 20:09:08 -07:00
David Anderson
e9e2bb6f2d dhcp4: avoid reusing bs between the writing and reading tests.
Although it looks like the sequencing of writing bs to the socket
and reusing the slice for the read test is guaranteed by there being
a receive from the socket in between, the race detector disagrees, and
found a race.
2017-06-01 20:07:28 -07:00
David Anderson
565eb761d1 Use a NAME= env as a proxy for naming the deploy tasks. 2017-05-21 00:01:51 -07:00
David Anderson
3d9311210e Try out setting per-stage-task env vars. 2017-05-21 00:00:20 -07:00
David Anderson
e95eb0d321 Split out the Docker and Quay build triggers into their own step.
That way, those builds can trigger ASAP, instead of waiting for
the Debian packages to build.
2017-05-20 23:59:15 -07:00
David Anderson
2a09d6a021 Add a cleaner for the ARM debian packages, and remove the 386 build. 2017-05-20 23:53:59 -07:00
David Anderson
24e2772a3d Add the deploys back to the deploy stage task. 2017-05-20 23:47:35 -07:00
David Anderson
507b9e46f1 Add a deploy stage, go 1.8 only, that builds all architectures. 2017-05-20 23:39:18 -07:00
David Anderson
6bb7a1413d omg I've forgotten how to shell. 2017-05-20 23:31:53 -07:00
David Anderson
9d842b4b03 Okay, I think I finally get what's happening to me. Let's try this. 2017-05-20 23:29:06 -07:00
David Anderson
ec37c75374 Okay, MY_GOARCH mysteriously does make it into the environment.
So, let's try transfering now...
2017-05-20 23:23:29 -07:00
David Anderson
435d88f7e1 As I suspected, my env vars aren't making it into the env. WTF. 2017-05-20 23:21:52 -07:00
David Anderson
6bb05ccb2c So now, the environment matrix results in the right spread,
but afaict the environment variables are not actually being set...
2017-05-20 23:15:28 -07:00
David Anderson
5bf85b963a Okay, I think I see what madness it's doing now.
Stages and matrices are just 100% incompatible. Stick to doing the
matrix-y stuff in the first (default, implicit) stage, stay far
away from it for the other stages.
2017-05-20 23:11:12 -07:00
David Anderson
d08119a16b I'm seriously lost now. 2017-05-20 23:05:26 -07:00
David Anderson
d3d5bdecb5 Now I can't even get a simple case to behave logically at all. WTF. 2017-05-20 23:04:16 -07:00
David Anderson
e65704eb74 watwat 2017-05-20 23:02:13 -07:00
David Anderson
18043c2ca1 wat 2017-05-20 23:01:14 -07:00
David Anderson
52cc4b4513 Flail around some more.
I'm really confused on how anything works now. Trying a simple test
stage with a builtin matrix to see what travis even makes of that.
2017-05-20 22:59:18 -07:00
David Anderson
97ef1a3546 I can't tell whether tests are being run or not now. 2017-05-20 22:54:38 -07:00
David Anderson
6638e6b146 Fix the incorrect shell assertion. 2017-05-20 22:52:01 -07:00
David Anderson
abf3290c25 Give up on stages for a second, just try to get the matrix to work.
It looks like stages *combine* with the top-level stage, rather than
replacing it. So, the first stage will be "test", and will run the
top-level commands no matter what. Based on that, let's try to have
our old script as the top-level thing, but have it only run tests
when GOARCH=amd64. Other architectures will just build and vet/lint.
2017-05-20 22:48:12 -07:00