18562 Commits

Author SHA1 Message Date
Ben Thomasson
48d801271c
Imports prototype from ansible-network-ui
The ansible-network-ui prototype project builds a standalone Network UI
outside of Tower as its own Django application. The original prototype
code is located here:
https://github.com/benthomasson/ansible-network-ui.

The prototype provides a virtual canvas that supports placing
networking devices onto 2D plane and connecting those devices together
with connections called links.  The point where the link connects
to the network device is called an interface.  The devices, interfaces,
and links may all have their respective names.  This models physical
networking devices is a simple fashion.

The prototype implements a pannable and zoomable 2D canvas in using SVG
elements and AngularJS directives.   This is done by adding event
listeners for mouse and keyboard events to an SVG element that fills the
entire browser window.

Mouse and keyboard events are handled in a processing pipeline where
the processing units are implemented as finite state machines that
provide deterministic behavior to the UI.

The finite state machines are built in a visual way that makes
the states and transitions clearly evident.  The visual tool for
building FSM is located here:
https://github.com/benthomasson/fsm-designer-svg.   This tool
is a fork of this project where the canvas is the same.  The elements
on the page are FSM states and the directional connections are called
transitions.   The bootstrapping of the FSM designer tool and
network-ui happen in parallel.  It was useful to try experiemental
code in FSM designer and then import it into network-ui.

The FSM designer tool provides a YAML description of the design
which can be used to generate skeleton code and check the implementation
against the design for discrepancies.

Events supported:

* Mouse click
* Mouse scroll-wheel
* Keyboard events
* Touch events

Interactions supported:

* Pan canvas by clicking-and-dragging on the background
* Zooming canvas by scrolling mousewheel
* Adding devices and links by using hotkeys
* Selecting devices, interaces, and links by clicking on their icon
* Editing labels on devices, interfaces, and links by double-clicking on
  their icon
* Moving devices around the canvas by clicking-and-dragging on their
  icon

Device types supported:

* router
* switch
* host
* racks

The database schema for the prototype is also developed with a visual
tool that makes the relationships in the snowflake schema for the models
quickly evident.  This tool makes it very easy to build queries across
multiple tables using Django's query builder.

See: https://github.com/benthomasson/db-designer-svg

The client and the server communicate asynchronously over a websocket.
This allows the UI to be very responsive to user interaction since
the full request/response cycle is not needed for every user
interaction.

The server provides persistence of the UI state in the database
using event handlers for events generated in the UI.  The UI
processes mouse and keyboard events, updates the UI, and
generates new types of events that are then sent to the server
to be persisted in the database.

UI elements are tracked by unique ids generated on the client
when an element is first created.  This allows the elements to
be correctly tracked before they are stored in the database.

The history of the UI is stored in the TopologyHistory model
which is useful for tracking which client made which change
and is useful for implementing undo/redo.

Each message is given a unique id per client and has
a known message type.  Message types are pre-populated
in the MessageType model using a database migration.

A History message containing all the change messages for a topology is
sent when the websocket is connected.  This allows for undo/redo work
across sessions.

This prototype provides a server-side test runner for driving
tests in the user interface.  Events are emitted on the server
to drive the UI.  Test code coverage is measured using the
istanbul library which produces instrumented client code.
Code coverage for the server is is measured by the coverage library.

The test code coverage for the Python code is 100%.
2018-03-23 17:00:14 -04:00
mabashian
348de30a17 Fixed several workflow node bugs 2018-03-23 15:50:34 -04:00
chris meyers
cb7e17885f remove uneeded auth ldap settings
* I had thought that setting the settings was required. But carefully
selected defaults for the settings is the correct way to deal with
errors I was seeing early in developing this feature.
2018-03-23 15:41:08 -04:00
Jared Tabor
8643972064 Fixes issue with sockets and XHR requests for backgrounded tabs
adjusts toggling based on API setting and doesn't toggle for job stdout page
2018-03-23 12:40:34 -07:00
AlanCoding
f6e507ad12 add API setting for UI live updates
include context data

update help text
2018-03-23 12:40:31 -07:00
John Mitchell
babad0b868
move all jobs views to using new view 2018-03-23 14:53:20 -04:00
AlanCoding
7ea9575e78
ignore workflow survey passwords when not applicable 2018-03-23 13:01:45 -04:00
AlanCoding
5fe63894d5
new credential passwords system on relaunch 2018-03-23 12:44:52 -04:00
Shane McDonald
1595947ae2
Merge pull request #1663 from jakemcdermott/fix-docker-installer-paths
update reference to role file path to work with installer roles dir
2018-03-23 12:43:54 -04:00
Jake McDermott
4a8f24becc
update reference to role file path to work with roles dir 2018-03-23 12:43:13 -04:00
Ryan Petrello
35e38760aa properly sanitize module arguments with no_log (like uri:password)
this will _not_ sanitize playbooks that have secrets hard-coded *in* the
playbook - for that, people will need to use Vault or a variable/lookup

see: https://github.com/ansible/tower/issues/1101
see: https://github.com/ansible/awx/issues/1633
2018-03-23 11:15:37 -04:00
mabashian
bf142fa434
Fixed permissions multi-select deselect bug 2018-03-23 10:51:44 -04:00
Ryan Petrello
07680dd7c0
Merge pull request #1652 from ryanpetrello/fix-500
send job notification templates _after_ all events have been processed
2018-03-23 10:51:06 -04:00
John Mitchell
95f80ce512
implement new style jobs list in ui 2018-03-23 09:35:41 -04:00
Michael Abashian
e7cfe1e0b6
Merge pull request #1640 from mabashian/1561-survey-multi-select
Fixed bug on non-required multiple choice survey questions
2018-03-23 09:31:56 -04:00
Michael Abashian
224d996b9c
Merge pull request #1622 from mabashian/169-prompt-cleanup
Propagate new launch/relaunch logic across the app
2018-03-23 09:31:33 -04:00
Ryan Petrello
61aafe15d6 fix busted shippable builds 2018-03-22 16:56:04 -04:00
mabashian
7a4bc233f6 Pass job into the relaunch component rather than pull it from the parent. Added launch template component, use it on the templates lists. 2018-03-22 16:14:54 -04:00
Shane McDonald
caf576cac0
Merge pull request #1655 from shanemcd/devel
Move installer roles into roles directory
2018-03-22 14:39:03 -04:00
Shane McDonald
84cd933702 Move installer roles into roles directory
Signed-off-by: Shane McDonald <me@shanemcd.com>
2018-03-22 14:34:03 -04:00
mabashian
c3b32e2a73 Cleaned up awRequireMultiple and fixed broken survey question error messaging 2018-03-22 11:58:47 -04:00
Shane McDonald
0d86e646ec
Merge pull request #1100 from rooftopcellist/fix_upgrade_python_saml24
fix_python_saml24_update
2018-03-22 11:48:24 -04:00
adamscmRH
ad37f71af4 fix_python_saml24_update 2018-03-22 11:26:17 -04:00
Jeandre Le Roux
0525df595e Add unit test for rocket.chat notifications
Signed-off-by: Jeandre Le Roux <theblazehen@theblazehen.com>
2018-03-22 16:11:03 +02:00
Ryan Petrello
f59f47435b send job notification templates _after_ all events have been processed
see: https://github.com/ansible/awx/issues/500
2018-03-22 09:30:41 -04:00
Chris Meyers
ddf000e8e7
Merge pull request #1643 from chrismeyersfsu/fix-tower_special_group
do not allow tower group delete or name change
2018-03-22 08:06:03 -04:00
chris meyers
305ef6fa7e do not allow tower group delete or name change
* DO allow policy changes and other attribute changes
2018-03-22 08:05:06 -04:00
Chris Meyers
3446134501
Merge pull request #1646 from chrismeyersfsu/fix-kombu_unicode
use non-unicode queue names
2018-03-21 21:59:05 -04:00
Bill Nottingham
eae85e803e
Merge pull request #1644 from wenottingham/botbotbot
update team map
2018-03-21 19:35:58 -04:00
mabashian
8d04be0fc8 Fixed unit test failures 2018-03-21 19:22:08 -04:00
chris meyers
e0803b9f08 use non-unicode queue names
* Use unicode InstanceGroup and queue names up until the point we
actually create the queue
* kombu add_consumers returns a dict with a value that contians the
passed in queue name. Trouble is, the returned dict value is a string
and not a unicode string and this results in an error.
2018-03-21 16:50:07 -04:00
Chris Meyers
724812e87c
Merge pull request #1637 from chrismeyersfsu/fix-instance_removed_from_group
handle instance group names unicode
2018-03-21 15:47:00 -04:00
Bill Nottingham
45240a6bf0 update team map 2018-03-21 15:46:50 -04:00
mabashian
0cadea1cb5
Fixed bug preventing the user from ignoring a non-required multi-select survey question on launch 2018-03-21 14:55:38 -04:00
Alan Rominger
b3e15f70cb
Merge pull request #1612 from AlanCoding/token_no
Make user_capabilities False for read tokens
2018-03-21 14:45:19 -04:00
Ryan Petrello
a13ddff81a
Merge pull request #1627 from aperigault/fix_deprecation
Replace deprecated -U option by --become-user
2018-03-21 14:32:13 -04:00
Bill Nottingham
88ef889cf1
Merge pull request #1634 from wenottingham/winrm-rf
Cherry-pick fix for WinRM listener to AzureRM inventory script.
2018-03-21 14:13:08 -04:00
chris meyers
91bfed3d50 handle instance group names unicode 2018-03-21 13:41:48 -04:00
AlanCoding
4f1f578fde
make user_capabilities False for read tokens 2018-03-21 13:14:14 -04:00
Shane McDonald
f8b5318206
Merge pull request #1093 from rooftopcellist/upgrade_python_saml
upgrade python-saml for CVE fix
2018-03-21 12:27:35 -04:00
adamscmRH
c3842b6bf9 upgrade python-saml for CVE fix 2018-03-21 12:07:18 -04:00
Ryan Petrello
1a542c5e06
Merge pull request #1620 from ryanpetrello/dynamic-autoscale
dynamically set worker autoscale max_concurrency based on system memory
2018-03-21 11:52:16 -04:00
Marliana Lara
6e11b5b9c8
Merge pull request #1557 from marshmalien/feat/final_granular_permission_types
New RBAC roles at the Org level
2018-03-21 11:35:15 -04:00
Marliana Lara
4106e496df
Merge pull request #1574 from marshmalien/fix/capacity_adjustment_value
Add capacity adjuster slider label
2018-03-21 11:35:03 -04:00
Ryan Petrello
6a96e6a268 dynamically set worker autoscale max_concurrency based on system memory 2018-03-21 11:10:48 -04:00
mabashian
bee7148c61 Addressed jshint errors 2018-03-21 10:59:13 -04:00
Marliana Lara
2ae02fda82
Update pr based on feedback 2018-03-21 10:55:00 -04:00
Marliana Lara
01d35ea9c0
Show organizations based on more granular RBAC roles 2018-03-21 10:54:59 -04:00
Marliana Lara
c156a0af99
Add capacity adjustment slider label 2018-03-21 10:53:16 -04:00
Bill Nottingham
531e5b5137 Cherry-pick fix for WinRM listenr to AzureRM inventory script.
(ref: https://github.com/ansible/ansible/pull/37499/)
2018-03-21 10:46:30 -04:00