In some cases we need to create VLANs/fabrics for interfaces that don't have
links. For example for VLAN interfaces, often it's the VLAN interface that has
an address, while the underlying physical interface often is without any
address. In that case, the physical interface should have a VLAN that is on the
same fabric as the VLAN interface.
Also removed the check whether a machine is a controller. A controller is not
special. It's a deployed machine. If Calico is installed on a controller, we
should not create useless fabrics.
(cherry picked from commit 94dac1082c3a3958e7c01f29e1d0320a775633ae)
The fix for GRUB introduced in a0b47aba48b2ad324c34b42aed9f47a7dfc85b28
lead to an issue with legacy BIOS mode, which is expecting to receive
`Error code 1: File not found` for non existing pxelinux.cfg config
files instead for a 0-size result.
fix(agent): check if region endpoints are reachable
Region Controller might return IP:PORT that is not reachable by the
Agent (due to firewall configuration or network setup). Hence we should
add check if endpoints are reachable before applying them as targets
when configuring Agent HTTP reverse proxy service.
Workflow logic is constrained by deterministic execution requirements.
In Go, Workflow Definition code cannot directly do the following:
- Call an external API, conduct a file I/O operation, talk to another service, etc
Normally we should use Activity for this scenario, however we are
confident and consider that we want to do this I/O inside the workflow.
But by having a blocking I/O you might get the following panic:
```
panic: Potential deadlock detected: workflow goroutine "root" didn't yield for over a second
```
It happens simply because the "root" goroutine was not scheduled for
execution. By using `workflow.Go` we don't mess with the scheduler and
we should worry about logic inside `workflow.Go` not take more than 1
second.
(cherry picked from commit 17596243156a800d060b8c5138798da8eae0950b)