Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added an entry about 504 errors, and consolidated the first section into a single numbered list.


  1. I'm getting an error about "UnmanagedComponent" saying that a DPID is "unknown to this aggregate", but I'm sure it's a valid DPID!

    One common cause of this is that the datapath URN format changed in FOAM 0.6.2, to have a plus character between the word "datapath" and the DPID rather than a colon character. They should now look like

    No Format

    To update your rspecs, do something like

    No Format
    sed -i -e 's/\+datapath:/+datapath+/' thing-1.rspec thing-2.rspec ...

    If that doesn't help, you may in fact have a typo in your rspec – compare it very carefully to the output of listresources from that aggregate.

  2. All requests from Omni return "400 Bad Request"
    This typically means that your SSL client certificate is signed by a CA that the FOAM application server (usually nginx) isn't configured to trust. If the CA cert was installed for FOAM, this can usually be resolved by running sudo foamctl bundle-certs and restarting nginx.

  3. All requests from Omni fail with "Couldn't validate credential for caller [...] with target [...] with any of 1 known root certs"
    This typically means that your SSL client certificate is signed by a CA the FOAM application server (usually nginx) is configured to trust, but FOAM itself isn't configured to trust. This can happen if the admin has added certificates and restarted nginx, but not restarted FOAM; or if the admin has removed certificates and restarted FOAM, but not nginx.

  4. All requests from Omni fail with "Couldn't validate credential for caller [...] with target [...] with any of 1 known root certs: can't compare offset-naive and offset-aware datetimes"
    This often means that you have installed FOAM on a machine that previously had Expedient installed and there are old "geni" and "sfa" libraries in your PYTHONPATH (in dist-packages somewhere).  You need to remove these old libraries so that the ones shipped with FOAM can take precedence.

  5. Omni calls fail with "502 Bad Gateway"
    This typically means that the application server (e.g. nginx) is running, but FOAM is not.

  6. When I approve a sliver (or at other times), I get an "HTTP Error 504: Gateway Time-out" error.
    This typically means that the application server (e.g. nginx) tried to contact FOAM, which (in the approval case) tried to contact FlowVisor, and something timed out. If FOAM or FV is very slow for some reason, you might get this error, but this should pretty much never happen if things are working normally (i.e. this usually doesn't indicate a "maybe things were a little slow right then" kind of problem, it's more likely something more persistent that's wrong with FV).

  7. Omni fails with "class 'lxml.etree.DocumentInvalid'>:Element '{\}rspec': No matching global declaration available for the validation root."
    This is an example of an rspec parsing error; the rspec schema validator is saying that your rspec seems invalid. In this particular case, it's because FOAM only supports GENI v3 rspecs, and does not support ProtoGENI v2 rspecs.

  8. foamctl fails with "Basic auth failed: invalid password" but my password is correct
    This can happen if nginx is running and FOAM is not.

  9. I can reserve ports that aren't advertised!
    This isn't actually an error: Due to the ephemeral nature of ports (especially virtual ones such as those configured as tunnel endpoints) you are permitted to reserve a port which may not currently exist, but which may exist in the future.

  10. I tried to approve a sliver, but got an error, but when I checked, the sliver did get approved. So I guess it worked?
    Only sort of: If you get an error with foamctl geni:approve-sliver, chances are the sliver will be marked as approved (i.e. FOAM thinks an admin has said "I want to approve this"), but not enabled (i.e. active in the FlowVisor). Check closely; and pay attention to the error condition, and see if it makes sense (e.g. if it says FlowVisor is down, or a slice already exists with that controller, or some such, that's worth investigating). And if you get an error about something that you can't fix yourself, consider reporting it as a FOAM bug.

  11. Omni fails with "(OperationalError) database is locked".
    If this happens once, retry the command; if the second time succeeds, it's probably the issue described here. If it happens consistently, something else may be wrong, and you should drop a note to the FOAM admin.

  12. Omni returns an error "Fault 1: "<type 'exceptions.TypeError'>:'NoneType' object is unsubscriptable"", but the operation seems to have succeeded.

    This typically means that e-mail hasn't been configured in FOAM. This can generally be resolved by running foamctl config:setup-email.