wiki:JacksIssues

Version 155 (modified by Aaron Helsinger, 9 years ago) (diff)

--

Jacks Bugs

This page is obsolete. Most issues listed here are now fixed. New issues, or issues here that have been re-confirmed, should be entered and tracked on Github: https://github.com/Jacks-GENI/Jacks.

9/11/15

8/13/15

  • If you add the field for an install or execute script in Jacks, but then don't fill in the various fields (command, url, install path) the RSpec includes <execute> and/or <install> tags which have no attributes and violate the schema. For example, the following RSpec was generated by Jacks and does not pass rspeclint:
    <rspec xmlns="http://www.geni.net/resources/rspec/3" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1" xmlns:tour="http://www.protogeni.net/resources/rspec/ext/apt-tour/1" xmlns:jacks="http://www.protogeni.net/resources/rspec/ext/jacks/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3    http://www.geni.net/resources/rspec/3/request.xsd" type="request">
      <node xmlns="http://www.geni.net/resources/rspec/3" client_id="node-0">
        <icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/VM-noTxt-centered.svg"/>
        <site xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" id="Site 1"/>
        <sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="default-vm"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
          <execute xmlns="http://www.geni.net/resources/rspec/3" shell="/bin/sh"/>
          <install xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
      </node>
    </rspec>
    

In particular, rspeclint generates the following error:

Line 1: Failed validation with root at element: Schemas validity error : Element '{http://www.geni.net/resources/rspec/3}execute': The attribute 'command' is required but missing.
Schemas validity error : Element '{http://www.geni.net/resources/rspec/3}install': The attribute 'url' is required but missing.
Schemas validity error : Element '{http://www.geni.net/resources/rspec/3}install': The attribute 'install_path' is required but missing.
: rspec

7/30/15

  • Not urgent. The RSpec in the Jacks manifest viewer on the Slice page does not include the "nomac_learning" tag even though it is shown in the manifest returned by omni:
    <link_attribute xmlns="http://www.protogeni.net/resources/rspec/ext/emulab/1" key="nomac_learning" value="yep"/>
    

7/17/15

Changes before we push to stable (details below):

  • Fix 'ghost site'
  • More Validation/warning fixes
  • Testing

Reflecting changes currently on devel, proposed for stable next week:

  • 'ghost node' issue (nodes appear due to RSpec from other AM) is fixed
    When passing in a context, indicate that this is a manifest-viewer by doing this:
    
    Jacks({
    
    ...
    mode: 'viewer',
    isManifest: true
    ...
    }) 
    
    • But now there is a 'ghost site' problem (the site for that ghost node is still there). Jon will fix before we push to stable.
    • Portal issue: need to support this
  • Jacks accepts a 'source_urn' on RSpecs, so selected nodes are tagged with the proper source aggregate, allowing Jacks App to know which EG AM to use. Needs testing.
    When you pass in a new rspec, there is an optional sourceUrn field now:
    
    jacksInput.trigger('modify-topology',
    [{ rspec: myRspec, sourceUrn:
       'urn:publicid:...' }, ...]);
    
    Now whenever you get a modified-topology event, every node will be tagged with the opaque string from sourceUrn:
    
    function modifiedHandler(data)
    {
      console.log(data.nodes[i].sourceUrn)
    }
    
    sourceUrn may, of course, be undefined if it was added inside the app or if there was no sourceUrn when adding or modifying the topology. 
    
    • Portal issue: need to support this
  • Can now set link bandwidth. HOWEVER:
    • Properties other than capacity in parsed RSpecs are dropped. Jon will fix this.
    • Jacks assumes all properties are the same, and picks one randomly to use its capacity. Need to figure out a good solution for this.
    • The UI puts the bandwidth on the interface. The UI doesn't make clear that this is only the bandwidth _from_ that interface, and that this limit is for each link from that interface separately, not cumulative. Suggestions?
  • You can now specify on default nodes install and execute commands and that you want a routable IP.
    'routable' is either true or false
    'execute' is a list of objects with 'command' and 'shell' fields, each of
      which are strings.
    'install' is a list of objects with 'url' and 'install_path' fields, each
      of which are strings. 
    
  • The bug with a bound site being changed to 'any' but the label doesn't change is fixed.
  • The version tag on disk images is now saved
  • The merging of EG manifests (see below) is NOT addressed
  • Adding an RSpec to an empty Jacks viewer removes that empty site
  • You can request a non trivial link. And if the context specifies non trivial, then the checkbox will be checked and disabled - fixing the NEW item listed below
  • Validating RSpecs and the warning system needs work still
    • Modal dialogs need work
    • Need to do more RSpec validation
    • Jon hopes to fix some of this before pushing to stable
  • Bind to a PC:
    • Jon will add this as a usually hidden advanced feature
    • This is free text not verified against context or selected aggregate
  • Add LAN with only 1 node (like shared LAN)
    • still on the todo list
  • Allow dragging the link box for shared LAN
    • still on the todo list
  • Support multi select
    • To support Kentucky folks, you'll be able to select multiple things
  • Constraint system scaling
    • Motivated by Cloudlab, this will improve applying constraints (faster). It may split up the list of disk images into a standard and other list, allowing constraints to usually only check the standard list
  • Jacks now supports a 'headless' mode
    • For use in validating RSpecs / running constraint checker
  • Pan / Zoom
    • Need to consider specific use cases
      • Is Jacks for editing topologies with 12s of nodes?
      • Would a Jacks viewer case be handled with tooltips and a searchable list of nodes on each site?
  • Portal issue: Add a "create image" button for IG (to Jacks App)
  • Merging manifests including a link to an ExoGENI node can lose interfaces from other AMs.
    • ExoGENI manifests include only local interfaces, so using an ExoGENI definition of a link as the base means Jacks must merge in interfaces in other manifests.
    • Portal: May try to handle this in some cases in the app: https://github.com/GENI-NSF/geni-portal/issues/1379

To deprecate Flack we need

  • Allow specifying for default nodes: install, execute. Also request routable IP
    • In next version of Jacks

6/15/15

  • Start with a bound site. Change the site to '(any)'. The text field above showing the site name does not clear out, but remains the previous value.

5/28/15

5/20/15

  • Merging manifests including a link to an ExoGENI node can lose interfaces from other AMs.

4/24/15

Close to pushing to devel

  • When adding an rspec ('add-topology') to an empty Jacks (only has a single site with nothing in it), the new RSpec should over-ride the previous stuff; discard the empty site
    • In devel branch
  • Allow requesting that a link be 'non-trivial' going through a hardware switch, such that the link can be openflow controlled and shared. EG:

<vlan_tagging xmlns="http://www.protogeni.net/resources/rspec/ext/emulab/1" enabled="true"/>

  • Add a 'No MAC' checkbox on disk images
    • Allows user custom disk images and EG images to get the nomac flag that otherwise comes only from the constraint generator's config file
    • Checkbox says 'Disable MAC Learning' and is ORed with the setting in the context
    • NEW: Checkbox should be both checked and disabled if the 'nomac' is in the context (if not in the context, checkbox is neither checked nor disabled)

Next Items

  • 'ghost nodes': Resources from other AMs / merging manifests:
    • Should be in next version of Jacks
    • An IG manifest may includes components which are not from the current AM
      • They may even be from AMs not known to the portal
    • The result is
      • The resources listed in that manifest may have since been deleted at the "real" AM, but Jacks still shows them
      • If the resources exist but at an AM not in the Jacks Context and not known to the portal, then Jacks shows resources that cannot be manipulated through the portal
    • Action:
      • Option 1: Jacks should only show nodes in View mode whose component_manager matches one of the aggregates in the current Jacks context
      • Option 2: When in view mode and receive an RSpec of type 'manifest', only show nodes from the sender aggregate (alternatively implement as only nodes with a sliver_id)
        • Links between AMs will need to be drawn like shared VLANs, with dangling endpoints
    • Status: Option 2 mostly implemented, links aren't quite handled correctly
  • Validate RSpec on submission
    • Partial solution in place, needs work
    • When extracting RSpec from Jacks, apply some sanity checks
      • See above about 'any' and constraints for default values, on links in particular
      • Warn on duplicated IP address
      • Warn on a link with 'Enable OpenFlow' checked but no controller
    • Status: Working on the warning system to support these checks
  • Duplicate constraints coming from generator
    • Looping over nodes and generating by AM constraint does not go through de-duping code
    • To do: Warn when constraint loaded detects a duplicate
  • Should be able to set bandwidths on links.
    • Will warn if RSpec tried to set different BW on on same interface for 2 different destinations but pick the first
  • Sliver type emulab_openvz should be available only in racks that support this type on shared nodes (note, all IG racks support this type on raw pcs, but jacks should still show those racks as invalid if and openvz container is in the topology)
  • Allow drawing two links between the same two nodes. Change the layout so that multiple links between the same nodes don't show up on top of each other.
    • UPDATED 4/28/15 Actually the two links are being drawn, but they are just on top of each other so you can't see them.

Other Items

  • Constraints
    • If only a GRE tunnel is a valid link type, leaving the link type as 'any' will fail when you reserve
      • 'any' is treated as stitched by stitcher and the AMs, but stitched constraints are not applied by Jacks
      • Perhaps check all 'any' attributes and apply constraints as though the default (whatever that is) was selected?
        • Perhaps only on submission?
      • Action: If a link type is 'any' and the endpoints do not allow LAN or VLAN, then this is a warning (so the experimenter can pick GRE for example)
    • Visible indication of what is not allowed when dragging on palette (the warning system)
    • Ethernet/LAN should not be an option between sites
      • Jacks bug that constraints don't realize that a 2nd site cannot be same as a first site
        • Note though that if you pick ethernet and stitched ethernet is right, the right thing still happens
    • Stitched/VLAN and ExoGENI stitching don't work well together

Portal Items

  • Deleting resources from Jacks leaves Jacks with a non-empty canvas: http://grab.by/G8Fa
  • Portal: Expanded editor fails to load in some situations

Lower Priority

  • Manifest with linktype of 'vlan' shows in the link properties as link type Other='vlan' instead of 'Stitched Ethernet'
  • Optimize constraint enforcement
  • bind to a PC (i.e be able to set the component_id on a node; could simply be a textbox for now)
  • Portal: support 'create image' action
  • Add a LAN with only 1 node (like shared VLAN)
  • Change node ID changes interface ID
  • Pan / Zoom
  • Show actual path of stitched links
  • Allow moving shared VLAN UI element
  • Allow changing an attribute on multiple nodes/links that originally has different values to the same new value

3/12/15

  • Deleting resources from Jacks leaves Jacks with a non-empty canvas: http://grab.by/G8Fa
  • Constraints
    • Ethernet/LAN should not be an option between sites
      • Jacks bug that constraints don't realize that a 2nd site cannot be same as a first site
        • Note though that if you pick ethernet and stitched ethernet is right, the right thing still happens
    • Stitched/VLAN and ExoGENI stitching don't work well together
    • If only a GRE tunnel is a valid link type, leaving the link type as 'any' will fail when you reserve
      • 'any' is treated as stitched by stitcher and the AMs, but stitched constraints are not applied by Jacks
      • Perhaps check all 'any' attributes and apply constraints as though the default (whatever that is) was selected?
        • Perhaps only on submission?
    • Visible indication of what is not allowed when dragging on palette
  • Validate RSpec on submission
    • When extracting RSpec from Jacks, apply some sanity checks
      • See above about 'any' and constraints for default values, on links in particular
      • Warn on duplicated IP address
      • Warn on a link with 'Enable OpenFlow' checked but no controller
  • Any changes that change the rspec cause modified-topology events
    • Support seeing/handling GRE links differently
    • New modified-field event coming to devel 2/18
  • Portal: Expanded editor fails to load in some situations
  • Portal: must reload slice-jacks and Details pages to get ExoGENI login information
  • Duplicate constraints coming from generator
    • Looping over nodes and generating by AM constraint does not go through de-duping code
  • Should be able to set bandwidths on links.

3/6/15 update

  • NEW If I draw two xen VMs (or two default-vm) at an IG aggregate, EGRE is a valid link type between these nodes (even though they are at the same AM).
    • Related to the Ethernet constraint bug below?
    • Same bug is true with 2 openvz nodes within a single IG site having GRE link listed as a valid link type
  • The link type checkbox 'Enable Openflow' pops up a text box. The box is meant for the controller URL but is unlabeled.
    • A default value like 'ex: tcp:controller_ip:6633'

2/18/15 update

Required for GEC22

  • Public IP issues
    • FIXED (SE tested on FF/Chrome) RSpec with a public IP when loaded in Jacks does not have the Public Ip checkbox checked.
    • FIXED (SE tested on FF/Chrome) Checking public IP on one node makes the checkbox checked on other nodes that don't have a public IP
  • Constraints
    • Ethernet/LAN should not be an option between sites
      • Jacks bug that constraints don't realize that a 2nd site cannot be same as a first site
        • Note though that if you pick ethernet and stitched ethernet is right, the right thing still happens
    • Stitched/VLAN not option in right places
      • Extend constraint system to limit sites by link type

Required to take Jacks out of Beta

  • 2 Parse errors should not be fatal in Jacks
    • FIXED (AH tested) Node with an interface but no link causes fatal error in Jacks
    • FIXED (SE tested on FF) RSpec with single node on a shared VLAN gives a transform error

Other

  • New 3/3/15: If only a GRE tunnel is a valid link type, leaving the link type as 'any' will fail when you reserve
  • Site ID: Always label a site with the component_manager, if specified.
    • Fixed in roll-out 3/4
  • FIXED (SE tested on FF) Shared VLAN link icon not showing in Firefox
    • Actually 2 issues Jon saw
  • Constraints
    • Visible indication of what is not allowed when dragging on palette
  • Any changes that change the rspec cause modified-topology events
    • Support seeing/handling GRE links differently
    • New modified-field event coming to devel 2/18
  • Add a 'No MAC' checkbox on disk images
    • Allows user custom disk images and EG images to get the nomac flag that otherwise comes only from the constraint generator's config file
  • Portal: Expanded editor fails to load in some situations
  • Portal: must reload slice-jacks and Details pages to get ExoGENI login information
  • Duplicate constraints coming from generator
    • Looping over nodes and generating by AM constraint does not go through de-duping code

Fixed Pre GEC items

  • FIXED: Copy-Paste broken on Firefox
    • Partial fixes coming to devel 2/18, with another case still to do
  • FIXED: Constraints
    • FIXED: ExoSM is always not an option
      • Tom will generate constraints that make ExoSM an option for all, ExoGENI-M4 only an option at ExoSM
        • Don't include ExoSM in list of Ads
        • Add ExoSM as AM type
        • Add explicit constraints for ExoSM and node type, HW type, link type
        • Explicitly add the EG M4 node type
    • FIXED: XOSmall node type forbids some EG sites
    • FIXED: GRE tunnels:
      • Jon will provide context config that says tunnels only among InstaGENI
    • FIXED: Tom: Remove default-vm constraints that mention images

Lower (post-GEC) Priority

  • Optimize constraint enforcement
  • bind to a PC (i.e be able to set the component_id on a node; could simply be a textbox for now)
  • Portal: support 'create image' action
  • Add a LAN with only 1 node (like shared VLAN)
  • Change node ID changes interface ID
  • Pan / Zoom
  • Show actual path of stitched links
  • Allow moving shared VLAN UI element

Constraints

  • extras/constraints in jacks-context config file not included in output. Jon says this is a bug in jacks-context.
    • This impacts the ability to put ExoGENI images in the output because you can't associate those images with ExoGENI resources
    • The workaround, if necessary, is to add the constraints as a post-processing step
  • [Minor] Some constraints are repeated in the jacks-context output.
    • This is due to a loop over nodes in the ads, resulting in repeated constraints showing the same aggregate and image
  • Stitchable sites don't seem to do the right thing in Jacks.
    • Connecting stitchable sites results in GRE & EGRE options, but not stitched.

New issues on 2/6/15

  • WORKING and tested on both FF/Chrome Lab 0 and Lab 1
  • BROKEN IN FIREFOX ONLY Shared VLANS don't show up in requests (I didn't check manifests). That is the box for the link is missing but the line between the node and the box are both there.

HIGH (required to remove beta)

  • GEC22 DEMOS (4 issues):
    • BROKEN Deconflict manifests so we can combine the manifests from multiple AMs.
      • 1/14/15: Mostly working if you specify 'source=devel'.
        • Need to add logic to compare sliver_id to fully uniqify 2 nodes (for ExoGENI), and to keep the 'old' equivalent node if it has a sliver_id and the 'new' node does not.
        • Must refuse to allow picking an AM that is already picked for another site
        • Marshall will confirm portal works with the new semantics
    • For bound requests and all manifest, make sure the site ID is not a number but the site name instead
      • Use site name from component_manager_id if present
      • 1/14/15: Fixed if you specify 'source=devel'. Please test.
      • 1/15/15: Sarah using Chrome on a mac: Tested manifests and seems to work. Having trouble verifying the request version of this bug on the production jacks so I don't have anything to compare the devel version to.
      • 2/6/15: Seems to work for requests, but not for manifests in some situations (Lab1 RSpec; two nodes with the same name at different aggregates)
  • GEC22 TUTORIALS (extra 4 issues):
    • A basic working constraint system with reasonable defaults JON WORKING ON THIS
      • includes being able to get a reasonable list of available OSes (perhaps constructed from the advertisement)
      • Limit aggregates to bind to things Jacks understands (for example, don't include OpenFlow aggregates)
      • selecting the appropriate default link type for inter-aggregate links
        • i.e. use EGRE if stitching is not available between 2 IG sites, stitching if it is available, and always stitching for EG sites
      • cannot add an IG VM/raw-pc to a site that is EG and vice-versa
    • OpenFlow topologies with the OVS image:
    • Plus see 1 portal item marked "GEC22" below
    • NEW Have to reload entire Slice page to get login information for ExoGENI only.
      • A portal issue
  • Others (3 issues)
    • BROKEN ON FF ONLY Copy-paste of text (e.g. hostname)
      • This is a known Firefox issue. Instead of disabled="disabled" you need to specify readonly="readonly". This seems to work for Chrome as well. So make the hostname box (or other non-editable box) readonly="readonly".
      • 1/14/15: Fixed if you specify source=devel. Please test.
      • 1/15/15: Sarah on Chrome on a mac: FIXED.
      • 2/6/15: NOT fixed on Firefox on a mac. FIXED on Chrome on a mac.
    • Proper handling of lan/vlan toggling
      • Will show a single link type that covers both LAN & VLAN and do the right thing under the covers.
    • Make sure we can still reserve at OpenFlow aggregates using canned RSpecs
    • REQUIRES CHANGE BY SW GROUP NEW If using GRE/EGRE tunnels, prompt the user to include IP addresses on the links.

MED

Items here and below are not required to get Jacks out of beta, may be needed by GEC22.

  • UI cleanup items on Jon's list (including changing the router image)
    • 1/14/15: Most are done, including router image.
  • FireFox formatting JON WORKING ON THIS
    • 1/14/14: Most are done.
  • bind to a PC (i.e be able to set the component_id on a node; could simply be a textbox for now)

LOW

  • Change node ID changes interface ID

Jacks enhancements

HIGH

  • GEC22 NEW Bigger Jacks pane on both Add Resources and Manifest views.
    • A portal bug, being worked
  • NEW Copy-paste of NODES (see description under (1) below)
    • Jacks App solution in process
  • Remove a node from a LAN
    • FIXED on Firefox
  • Full AM API v3 support including
    • This is a portal issue
    • view and renew slice expiration times
    • POA commands including restart, reload, create image
  • DONE? ability to specify the URL/URN for a custom OS

MED

  • Add a LAN with only 1 node (like shared VLAN)
  • NEW Substantial node type features (see description under (2) below)
  • NEW On the listresources.php page, have a combined manifest viewer (like on the slice page) which shows status.
    • A portal bug
  • NEW Auto-IP
    • Fixed for some cases?
  • NEW Validate user entered data such as IP addresses (e.g. both ends of link have IP and on same network). Warn if not make sense.

LOW

  • Pan / Zoom
  • Show actual path of stitched links
  • Allow moving shared VLAN UI element
  • Support non ASCII OS ???

Explanation of NEW items from above

1) Add "copy and paste" to Jacks (Flack has had it for a long time).

  • Without copy and paste you introduce a huge risk for introducing manual errors.
  • But a big reason we want this is that we are trying to encourage experimenters to define standard node types (or templates if you prefer) which they replicate as needed. Copy and paste is a cheap way of getting this feature.
  • Priority: Not required to get out Jacks out of beta, but top of the list after that

2) We'd also like to discuss adding more substantial support for node types with Jon. We envision two distinct possibilities:

a) Support for Pre-canned node types (a button with a custom icon, OS image, install/execute scripts, even an OF controller that serves a particular function such as "firewall") b) Support for Custom node types. Allow the experimenter to define their own node types (icon, image, install/execute, etc for a a particular function) on the fly.

  • Priority: Nice to have. We like to discuss this with him so it's in the back of his head as he's developing new features.

Jon is also working on (according to Aaron's notes from when we last spoke)

  • cleanup Jacks internals
  • clean up Jacks programmatic interface
  • Jacks shares more semantic information about nodes with the embedding page
  • apply/check constraints when dragging nodes and links, not just when picking an attribute from a drop-down list
  • avoid silent exceptions that cause blank screen

FIXED items

Bugs from Sarah testing source=devel on Chrome on 1/15/15

  • FIXED BLOCKER: In Firefox I getting a "Jacks loading..." or "Loading..." message in both the request and manifest views.
  • FIXED The aggregate pulldown for the single AM case is very narrow (just big enough to fit "any")
  • FIXED Why is the single AM case different from the multi-AM case? It's not clear to me that that's a good thing.
  • FIXED I was confused by the giant message to "Click to select". Clicking that message does nothing. I think it's trying to tell you to click on an icon on the right to select the icon.
  • FIXED Make saved RSpec format prettified
    • 2/6/15: Sarah on Firefox and Chrome on a mac: FIXED
  • FIXED ExoSM nodes don't highlight as Green when ready
    • Requires a Jacks fix and then a portal fix
    • Jon must return sliver_id with all topology information
  • FIXED Removing install/execute scripts from Jacks doesn't modify the RSPec (see proto-ch 1254)
    • If I do the following:
      1. Load an RSpec from a URL (I did: http://www.gpolab.bbn.com/experiment-support/HelloGENI/hellogeni.rspec)
      2. Edit the RSpec (I removed the install and execute scripts from both nodes using the Remove button)
      3. View, Download, or Reserve the RSpec
    • The resulting RSpec includes the install and execute scripts even though they are deleted in the GUI.
    • 1/14/15: Fixed if you specify source=devel. Please test.
    • 1/15/15: Sarah on Chrome on a mac: FIXED.
    • 2/6/15: Sarah on Firefox and Chrome on a mac: FIXED
  • FIXED Jacks sshes into wrong node when there are duplicate client_ids in a slice (see proto-ch 1257)
    • 2/6/15: Sarah tested on both chrome and ff.