From b29a6058003713aa21876e8c09a1f9774671ec2e Mon Sep 17 00:00:00 2001 From: Ben Thomasson Date: Thu, 22 Feb 2018 14:41:53 -0500 Subject: [PATCH] Cleans up feature set for 3.3 This removes the experimental features that were not selected for 3.3 release. * Removes dpath requirement * Removes generated action_plugins * Removes network UI v1 api * Removes unused network management commands * Removes network UI CLI client * Removes templates * Removes unused DataBinding models * Removes obsolete test * Removes unused admin and tests * Removes experimental UndoPersistence, RedoPersistence, and auto-layout functions * Removes API endpoints for network visualization * Removes unused consumer routes * Removes group, site, and rack features for 3.3 * Removes unused tables controller * Removes undo/redo * Removes group code and scale checks --- awx/network_ui/Makefile | 120 - .../action_plugins/create_device.py | 61 - awx/network_ui/action_plugins/create_group.py | 61 - .../action_plugins/create_groupdevice.py | 46 - .../action_plugins/create_interface.py | 48 - awx/network_ui/action_plugins/create_link.py | 54 - .../action_plugins/create_process.py | 51 - .../action_plugins/create_stream.py | 51 - .../action_plugins/create_toolbox.py | 44 - .../action_plugins/create_toolboxitem.py | 46 - .../action_plugins/create_topology.py | 59 - .../create_topologyinventory.py | 46 - .../action_plugins/delete_device.py | 29 - awx/network_ui/action_plugins/delete_group.py | 29 - .../action_plugins/delete_groupdevice.py | 29 - .../action_plugins/delete_interface.py | 29 - awx/network_ui/action_plugins/delete_link.py | 29 - .../action_plugins/delete_process.py | 29 - .../action_plugins/delete_stream.py | 29 - .../action_plugins/delete_toolbox.py | 29 - .../action_plugins/delete_toolboxitem.py | 29 - .../action_plugins/delete_topology.py | 29 - .../delete_topologyinventory.py | 29 - awx/network_ui/action_plugins/get_device.py | 32 - awx/network_ui/action_plugins/get_group.py | 32 - .../action_plugins/get_groupdevice.py | 32 - .../action_plugins/get_interface.py | 32 - awx/network_ui/action_plugins/get_link.py | 32 - awx/network_ui/action_plugins/get_process.py | 32 - awx/network_ui/action_plugins/get_stream.py | 32 - awx/network_ui/action_plugins/get_toolbox.py | 32 - .../action_plugins/get_toolboxitem.py | 32 - awx/network_ui/action_plugins/get_topology.py | 32 - .../action_plugins/get_topologyinventory.py | 32 - awx/network_ui/action_plugins/list_device.py | 57 - awx/network_ui/action_plugins/list_group.py | 57 - .../action_plugins/list_groupdevice.py | 43 - .../action_plugins/list_interface.py | 45 - awx/network_ui/action_plugins/list_link.py | 51 - awx/network_ui/action_plugins/list_process.py | 47 - awx/network_ui/action_plugins/list_stream.py | 47 - awx/network_ui/action_plugins/list_toolbox.py | 41 - .../action_plugins/list_toolboxitem.py | 43 - .../action_plugins/list_topology.py | 55 - .../action_plugins/list_topologyinventory.py | 43 - .../action_plugins/update_device.py | 56 - awx/network_ui/action_plugins/update_group.py | 56 - .../action_plugins/update_groupdevice.py | 42 - .../action_plugins/update_interface.py | 44 - awx/network_ui/action_plugins/update_link.py | 50 - .../action_plugins/update_process.py | 46 - .../action_plugins/update_stream.py | 46 - .../action_plugins/update_toolbox.py | 40 - .../action_plugins/update_toolboxitem.py | 42 - .../action_plugins/update_topology.py | 54 - .../update_topologyinventory.py | 42 - awx/network_ui/admin.py | 251 -- awx/network_ui/client/README.md | 3 - awx/network_ui/client/conf.py | 11 - .../client/networking_visualization_client.py | 94 - awx/network_ui/client/requirements.txt | 3 - awx/network_ui/client/util.py | 27 - awx/network_ui/client/v1_api_client.py | 588 ---- awx/network_ui/client/v2_api_client.py | 502 ---- awx/network_ui/constraints.sql | 1 - awx/network_ui/consumers.py | 706 +---- awx/network_ui/designs/new.yml | 526 ---- awx/network_ui/library/create_device.py | 1 - awx/network_ui/library/create_group.py | 1 - awx/network_ui/library/create_groupdevice.py | 1 - awx/network_ui/library/create_interface.py | 1 - awx/network_ui/library/create_link.py | 1 - awx/network_ui/library/create_process.py | 1 - awx/network_ui/library/create_stream.py | 1 - awx/network_ui/library/create_toolbox.py | 1 - awx/network_ui/library/create_toolboxitem.py | 1 - awx/network_ui/library/create_topology.py | 1 - .../library/create_topologyinventory.py | 1 - awx/network_ui/library/delete_device.py | 1 - awx/network_ui/library/delete_group.py | 1 - awx/network_ui/library/delete_groupdevice.py | 1 - awx/network_ui/library/delete_interface.py | 1 - awx/network_ui/library/delete_link.py | 1 - awx/network_ui/library/delete_process.py | 1 - awx/network_ui/library/delete_stream.py | 1 - awx/network_ui/library/delete_toolbox.py | 1 - awx/network_ui/library/delete_toolboxitem.py | 1 - awx/network_ui/library/delete_topology.py | 1 - .../library/delete_topologyinventory.py | 1 - awx/network_ui/library/get_device.py | 1 - awx/network_ui/library/get_group.py | 1 - awx/network_ui/library/get_groupdevice.py | 1 - awx/network_ui/library/get_interface.py | 1 - awx/network_ui/library/get_link.py | 1 - awx/network_ui/library/get_process.py | 1 - awx/network_ui/library/get_stream.py | 1 - awx/network_ui/library/get_toolbox.py | 1 - awx/network_ui/library/get_toolboxitem.py | 1 - awx/network_ui/library/get_topology.py | 1 - .../library/get_topologyinventory.py | 1 - awx/network_ui/library/list_device.py | 1 - awx/network_ui/library/list_group.py | 1 - awx/network_ui/library/list_groupdevice.py | 1 - awx/network_ui/library/list_interface.py | 1 - awx/network_ui/library/list_link.py | 1 - awx/network_ui/library/list_process.py | 1 - awx/network_ui/library/list_stream.py | 1 - awx/network_ui/library/list_toolbox.py | 1 - awx/network_ui/library/list_toolboxitem.py | 1 - awx/network_ui/library/list_topology.py | 1 - .../library/list_topologyinventory.py | 1 - awx/network_ui/library/update_device.py | 1 - awx/network_ui/library/update_group.py | 1 - awx/network_ui/library/update_groupdevice.py | 1 - awx/network_ui/library/update_interface.py | 1 - awx/network_ui/library/update_link.py | 1 - awx/network_ui/library/update_process.py | 1 - awx/network_ui/library/update_stream.py | 1 - awx/network_ui/library/update_toolbox.py | 1 - awx/network_ui/library/update_toolboxitem.py | 1 - awx/network_ui/library/update_topology.py | 1 - .../library/update_topologyinventory.py | 1 - awx/network_ui/management/__init__.py | 0 .../management/commands/__init__.py | 2 - .../create_2_tier_clos_test_topology.py | 151 - .../create_worst_case_test_topology.py | 74 - .../management/commands/dump_topology.py | 17 - .../management/commands/find_duplicates.py | 24 - .../management/commands/replay_recording.py | 53 - awx/network_ui/management/commands/ui_test.py | 520 ---- awx/network_ui/management/commands/util.py | 5 - awx/network_ui/messages.py | 33 - .../migrations/0004_auto_20180304_2122.py | 40 + awx/network_ui/models.py | 26 - awx/network_ui/routing.py | 16 +- .../templates/action_plugins/create_model.pyt | 51 - .../templates/action_plugins/delete_model.pyt | 35 - .../templates/action_plugins/get_model.pyt | 37 - .../templates/action_plugins/list_model.pyt | 45 - .../templates/action_plugins/update_model.pyt | 44 - awx/network_ui/templates/admin.pyt | 12 - .../templates/library/create_model.pyt | 5 - .../templates/library/delete_model.pyt | 5 - .../templates/library/get_model.pyt | 5 - .../templates/library/list_model.pyt | 5 - .../templates/library/update_model.pyt | 5 - awx/network_ui/templates/models.pyt | 15 - awx/network_ui/templates/tuples.pyt | 10 - awx/network_ui/templates/v1_api_client.pyt | 50 - .../templates/v1_api_serializers.pyt | 15 - awx/network_ui/templates/v1_api_urls.pyt | 8 - awx/network_ui/templates/v1_api_views.pyt | 65 - awx/network_ui/templates/v2_api_access.pyt | 14 - awx/network_ui/templates/v2_api_client.pyt | 42 - .../templates/v2_api_serializers.pyt | 15 - awx/network_ui/templates/v2_api_urls.pyt | 18 - awx/network_ui/templates/v2_api_views.pyt | 72 - awx/network_ui/tests.py | 17 - awx/network_ui/tuples.py | 179 -- awx/network_ui/urls.py | 17 +- awx/network_ui/v1_api_serializers.py | 129 - awx/network_ui/v1_api_urls.py | 18 - awx/network_ui/v1_api_views.py | 556 ---- awx/network_ui/v2_api_access.py | 101 - awx/network_ui/v2_api_serializers.py | 129 - awx/network_ui/v2_api_urls.py | 74 - awx/network_ui/v2_api_views.py | 616 ---- .../client/src/network-ui/button.directive.js | 8 - .../client/src/network-ui/button.partial.svg | 14 - awx/ui/client/src/network-ui/buttons.fsm.js | 97 - .../src/network-ui/configuration.partial.svg | 4 - .../client/src/network-ui/debug.partial.svg | 1 - .../src/network-ui/device.detail.directive.js | 8 - .../src/network-ui/device.detail.fsm.js | 81 - .../src/network-ui/device_detail.partial.svg | 108 - .../client/src/network-ui/group.directive.js | 8 - awx/ui/client/src/network-ui/group.fsm.js | 599 ---- .../client/src/network-ui/group.partial.svg | 133 - awx/ui/client/src/network-ui/host.partial.svg | 2 - awx/ui/client/src/network-ui/hotkeys.fsm.js | 48 +- awx/ui/client/src/network-ui/link.fsm.js | 144 - awx/ui/client/src/network-ui/map.directive.js | 8 - awx/ui/client/src/network-ui/map.partial.svg | 2662 ----------------- awx/ui/client/src/network-ui/messages.js | 207 +- awx/ui/client/src/network-ui/mode.fsm.js | 164 - awx/ui/client/src/network-ui/models.js | 281 -- awx/ui/client/src/network-ui/move.fsm.js | 11 - .../client/src/network-ui/network.ui.app.js | 20 - .../src/network-ui/network.ui.controller.js | 510 +--- .../src/network-ui/network_ui.partial.svg | 34 +- .../src/network-ui/process.directive.js | 8 - .../client/src/network-ui/process.partial.svg | 12 - .../client/src/network-ui/rack.directive.js | 8 - awx/ui/client/src/network-ui/rack.fsm.js | 595 ---- .../src/network-ui/rack.icon.directive.js | 8 - awx/ui/client/src/network-ui/rack.partial.svg | 242 -- .../src/network-ui/rack_icon.partial.svg | 117 - .../client/src/network-ui/router.partial.svg | 2 - .../client/src/network-ui/site.directive.js | 8 - awx/ui/client/src/network-ui/site.fsm.js | 730 ----- .../src/network-ui/site.icon.directive.js | 8 - awx/ui/client/src/network-ui/site.partial.svg | 209 -- .../src/network-ui/site_icon.partial.svg | 102 - .../src/network-ui/status.light.directive.js | 8 - .../src/network-ui/status_light.partial.svg | 11 - .../client/src/network-ui/stream.directive.js | 8 - awx/ui/client/src/network-ui/stream.fsm.js | 116 - .../client/src/network-ui/stream.partial.svg | 134 - .../client/src/network-ui/switch.partial.svg | 2 - .../src/network-ui/tables.ui.controller.js | 153 - .../src/network-ui/tables_ui.partial.svg | 30 - awx/ui/client/src/network-ui/time.fsm.js | 267 -- awx/ui/client/src/network-ui/tower.app.js | 19 - awx/ui/client/src/network-ui/view.fsm.js | 4 +- awx/urls.py | 1 + requirements/requirements.in | 1 - requirements/requirements.txt | 2 - 217 files changed, 69 insertions(+), 16430 deletions(-) delete mode 100644 awx/network_ui/Makefile delete mode 100644 awx/network_ui/action_plugins/create_device.py delete mode 100644 awx/network_ui/action_plugins/create_group.py delete mode 100644 awx/network_ui/action_plugins/create_groupdevice.py delete mode 100644 awx/network_ui/action_plugins/create_interface.py delete mode 100644 awx/network_ui/action_plugins/create_link.py delete mode 100644 awx/network_ui/action_plugins/create_process.py delete mode 100644 awx/network_ui/action_plugins/create_stream.py delete mode 100644 awx/network_ui/action_plugins/create_toolbox.py delete mode 100644 awx/network_ui/action_plugins/create_toolboxitem.py delete mode 100644 awx/network_ui/action_plugins/create_topology.py delete mode 100644 awx/network_ui/action_plugins/create_topologyinventory.py delete mode 100644 awx/network_ui/action_plugins/delete_device.py delete mode 100644 awx/network_ui/action_plugins/delete_group.py delete mode 100644 awx/network_ui/action_plugins/delete_groupdevice.py delete mode 100644 awx/network_ui/action_plugins/delete_interface.py delete mode 100644 awx/network_ui/action_plugins/delete_link.py delete mode 100644 awx/network_ui/action_plugins/delete_process.py delete mode 100644 awx/network_ui/action_plugins/delete_stream.py delete mode 100644 awx/network_ui/action_plugins/delete_toolbox.py delete mode 100644 awx/network_ui/action_plugins/delete_toolboxitem.py delete mode 100644 awx/network_ui/action_plugins/delete_topology.py delete mode 100644 awx/network_ui/action_plugins/delete_topologyinventory.py delete mode 100644 awx/network_ui/action_plugins/get_device.py delete mode 100644 awx/network_ui/action_plugins/get_group.py delete mode 100644 awx/network_ui/action_plugins/get_groupdevice.py delete mode 100644 awx/network_ui/action_plugins/get_interface.py delete mode 100644 awx/network_ui/action_plugins/get_link.py delete mode 100644 awx/network_ui/action_plugins/get_process.py delete mode 100644 awx/network_ui/action_plugins/get_stream.py delete mode 100644 awx/network_ui/action_plugins/get_toolbox.py delete mode 100644 awx/network_ui/action_plugins/get_toolboxitem.py delete mode 100644 awx/network_ui/action_plugins/get_topology.py delete mode 100644 awx/network_ui/action_plugins/get_topologyinventory.py delete mode 100644 awx/network_ui/action_plugins/list_device.py delete mode 100644 awx/network_ui/action_plugins/list_group.py delete mode 100644 awx/network_ui/action_plugins/list_groupdevice.py delete mode 100644 awx/network_ui/action_plugins/list_interface.py delete mode 100644 awx/network_ui/action_plugins/list_link.py delete mode 100644 awx/network_ui/action_plugins/list_process.py delete mode 100644 awx/network_ui/action_plugins/list_stream.py delete mode 100644 awx/network_ui/action_plugins/list_toolbox.py delete mode 100644 awx/network_ui/action_plugins/list_toolboxitem.py delete mode 100644 awx/network_ui/action_plugins/list_topology.py delete mode 100644 awx/network_ui/action_plugins/list_topologyinventory.py delete mode 100644 awx/network_ui/action_plugins/update_device.py delete mode 100644 awx/network_ui/action_plugins/update_group.py delete mode 100644 awx/network_ui/action_plugins/update_groupdevice.py delete mode 100644 awx/network_ui/action_plugins/update_interface.py delete mode 100644 awx/network_ui/action_plugins/update_link.py delete mode 100644 awx/network_ui/action_plugins/update_process.py delete mode 100644 awx/network_ui/action_plugins/update_stream.py delete mode 100644 awx/network_ui/action_plugins/update_toolbox.py delete mode 100644 awx/network_ui/action_plugins/update_toolboxitem.py delete mode 100644 awx/network_ui/action_plugins/update_topology.py delete mode 100644 awx/network_ui/action_plugins/update_topologyinventory.py delete mode 100644 awx/network_ui/admin.py delete mode 100644 awx/network_ui/client/README.md delete mode 100644 awx/network_ui/client/conf.py delete mode 100755 awx/network_ui/client/networking_visualization_client.py delete mode 100644 awx/network_ui/client/requirements.txt delete mode 100644 awx/network_ui/client/util.py delete mode 100644 awx/network_ui/client/v1_api_client.py delete mode 100644 awx/network_ui/client/v2_api_client.py delete mode 100644 awx/network_ui/constraints.sql delete mode 100644 awx/network_ui/designs/new.yml delete mode 100644 awx/network_ui/library/create_device.py delete mode 100644 awx/network_ui/library/create_group.py delete mode 100644 awx/network_ui/library/create_groupdevice.py delete mode 100644 awx/network_ui/library/create_interface.py delete mode 100644 awx/network_ui/library/create_link.py delete mode 100644 awx/network_ui/library/create_process.py delete mode 100644 awx/network_ui/library/create_stream.py delete mode 100644 awx/network_ui/library/create_toolbox.py delete mode 100644 awx/network_ui/library/create_toolboxitem.py delete mode 100644 awx/network_ui/library/create_topology.py delete mode 100644 awx/network_ui/library/create_topologyinventory.py delete mode 100644 awx/network_ui/library/delete_device.py delete mode 100644 awx/network_ui/library/delete_group.py delete mode 100644 awx/network_ui/library/delete_groupdevice.py delete mode 100644 awx/network_ui/library/delete_interface.py delete mode 100644 awx/network_ui/library/delete_link.py delete mode 100644 awx/network_ui/library/delete_process.py delete mode 100644 awx/network_ui/library/delete_stream.py delete mode 100644 awx/network_ui/library/delete_toolbox.py delete mode 100644 awx/network_ui/library/delete_toolboxitem.py delete mode 100644 awx/network_ui/library/delete_topology.py delete mode 100644 awx/network_ui/library/delete_topologyinventory.py delete mode 100644 awx/network_ui/library/get_device.py delete mode 100644 awx/network_ui/library/get_group.py delete mode 100644 awx/network_ui/library/get_groupdevice.py delete mode 100644 awx/network_ui/library/get_interface.py delete mode 100644 awx/network_ui/library/get_link.py delete mode 100644 awx/network_ui/library/get_process.py delete mode 100644 awx/network_ui/library/get_stream.py delete mode 100644 awx/network_ui/library/get_toolbox.py delete mode 100644 awx/network_ui/library/get_toolboxitem.py delete mode 100644 awx/network_ui/library/get_topology.py delete mode 100644 awx/network_ui/library/get_topologyinventory.py delete mode 100644 awx/network_ui/library/list_device.py delete mode 100644 awx/network_ui/library/list_group.py delete mode 100644 awx/network_ui/library/list_groupdevice.py delete mode 100644 awx/network_ui/library/list_interface.py delete mode 100644 awx/network_ui/library/list_link.py delete mode 100644 awx/network_ui/library/list_process.py delete mode 100644 awx/network_ui/library/list_stream.py delete mode 100644 awx/network_ui/library/list_toolbox.py delete mode 100644 awx/network_ui/library/list_toolboxitem.py delete mode 100644 awx/network_ui/library/list_topology.py delete mode 100644 awx/network_ui/library/list_topologyinventory.py delete mode 100644 awx/network_ui/library/update_device.py delete mode 100644 awx/network_ui/library/update_group.py delete mode 100644 awx/network_ui/library/update_groupdevice.py delete mode 100644 awx/network_ui/library/update_interface.py delete mode 100644 awx/network_ui/library/update_link.py delete mode 100644 awx/network_ui/library/update_process.py delete mode 100644 awx/network_ui/library/update_stream.py delete mode 100644 awx/network_ui/library/update_toolbox.py delete mode 100644 awx/network_ui/library/update_toolboxitem.py delete mode 100644 awx/network_ui/library/update_topology.py delete mode 100644 awx/network_ui/library/update_topologyinventory.py delete mode 100644 awx/network_ui/management/__init__.py delete mode 100644 awx/network_ui/management/commands/__init__.py delete mode 100644 awx/network_ui/management/commands/create_2_tier_clos_test_topology.py delete mode 100644 awx/network_ui/management/commands/create_worst_case_test_topology.py delete mode 100644 awx/network_ui/management/commands/dump_topology.py delete mode 100644 awx/network_ui/management/commands/find_duplicates.py delete mode 100644 awx/network_ui/management/commands/replay_recording.py delete mode 100644 awx/network_ui/management/commands/ui_test.py delete mode 100644 awx/network_ui/management/commands/util.py delete mode 100644 awx/network_ui/messages.py create mode 100644 awx/network_ui/migrations/0004_auto_20180304_2122.py delete mode 100644 awx/network_ui/templates/action_plugins/create_model.pyt delete mode 100644 awx/network_ui/templates/action_plugins/delete_model.pyt delete mode 100644 awx/network_ui/templates/action_plugins/get_model.pyt delete mode 100644 awx/network_ui/templates/action_plugins/list_model.pyt delete mode 100644 awx/network_ui/templates/action_plugins/update_model.pyt delete mode 100644 awx/network_ui/templates/admin.pyt delete mode 100644 awx/network_ui/templates/library/create_model.pyt delete mode 100644 awx/network_ui/templates/library/delete_model.pyt delete mode 100644 awx/network_ui/templates/library/get_model.pyt delete mode 100644 awx/network_ui/templates/library/list_model.pyt delete mode 100644 awx/network_ui/templates/library/update_model.pyt delete mode 100644 awx/network_ui/templates/models.pyt delete mode 100644 awx/network_ui/templates/tuples.pyt delete mode 100644 awx/network_ui/templates/v1_api_client.pyt delete mode 100644 awx/network_ui/templates/v1_api_serializers.pyt delete mode 100644 awx/network_ui/templates/v1_api_urls.pyt delete mode 100644 awx/network_ui/templates/v1_api_views.pyt delete mode 100644 awx/network_ui/templates/v2_api_access.pyt delete mode 100644 awx/network_ui/templates/v2_api_client.pyt delete mode 100644 awx/network_ui/templates/v2_api_serializers.pyt delete mode 100644 awx/network_ui/templates/v2_api_urls.pyt delete mode 100644 awx/network_ui/templates/v2_api_views.pyt delete mode 100644 awx/network_ui/tests.py delete mode 100644 awx/network_ui/tuples.py delete mode 100644 awx/network_ui/v1_api_serializers.py delete mode 100644 awx/network_ui/v1_api_urls.py delete mode 100644 awx/network_ui/v1_api_views.py delete mode 100644 awx/network_ui/v2_api_access.py delete mode 100644 awx/network_ui/v2_api_serializers.py delete mode 100644 awx/network_ui/v2_api_urls.py delete mode 100644 awx/network_ui/v2_api_views.py delete mode 100644 awx/ui/client/src/network-ui/button.directive.js delete mode 100644 awx/ui/client/src/network-ui/button.partial.svg delete mode 100644 awx/ui/client/src/network-ui/buttons.fsm.js delete mode 100644 awx/ui/client/src/network-ui/configuration.partial.svg delete mode 100644 awx/ui/client/src/network-ui/device.detail.directive.js delete mode 100644 awx/ui/client/src/network-ui/device.detail.fsm.js delete mode 100644 awx/ui/client/src/network-ui/device_detail.partial.svg delete mode 100644 awx/ui/client/src/network-ui/group.directive.js delete mode 100644 awx/ui/client/src/network-ui/group.fsm.js delete mode 100644 awx/ui/client/src/network-ui/group.partial.svg delete mode 100644 awx/ui/client/src/network-ui/link.fsm.js delete mode 100644 awx/ui/client/src/network-ui/map.directive.js delete mode 100644 awx/ui/client/src/network-ui/map.partial.svg delete mode 100644 awx/ui/client/src/network-ui/process.directive.js delete mode 100644 awx/ui/client/src/network-ui/process.partial.svg delete mode 100644 awx/ui/client/src/network-ui/rack.directive.js delete mode 100644 awx/ui/client/src/network-ui/rack.fsm.js delete mode 100644 awx/ui/client/src/network-ui/rack.icon.directive.js delete mode 100644 awx/ui/client/src/network-ui/rack.partial.svg delete mode 100644 awx/ui/client/src/network-ui/rack_icon.partial.svg delete mode 100644 awx/ui/client/src/network-ui/site.directive.js delete mode 100644 awx/ui/client/src/network-ui/site.fsm.js delete mode 100644 awx/ui/client/src/network-ui/site.icon.directive.js delete mode 100644 awx/ui/client/src/network-ui/site.partial.svg delete mode 100644 awx/ui/client/src/network-ui/site_icon.partial.svg delete mode 100644 awx/ui/client/src/network-ui/status.light.directive.js delete mode 100644 awx/ui/client/src/network-ui/status_light.partial.svg delete mode 100644 awx/ui/client/src/network-ui/stream.directive.js delete mode 100644 awx/ui/client/src/network-ui/stream.fsm.js delete mode 100644 awx/ui/client/src/network-ui/stream.partial.svg delete mode 100644 awx/ui/client/src/network-ui/tables.ui.controller.js delete mode 100644 awx/ui/client/src/network-ui/tables_ui.partial.svg diff --git a/awx/network_ui/Makefile b/awx/network_ui/Makefile deleted file mode 100644 index b2466debc0..0000000000 --- a/awx/network_ui/Makefile +++ /dev/null @@ -1,120 +0,0 @@ - - -.PHONY: all models admin v1_api_serializers v1_api_views v1_api_urls v2_api_serializers v2_api_views v1_api_client v2_api_urls v2_api_access v2_api_client - -all: tuples models admin v1_api_serializers v1_api_views v1_api_urls v2_api_serializers v2_api_views v1_api_client action_plugins v2_api_urls v2_api_access v2_api_client - -tuples: - jinja2 templates/tuples.pyt designs/models.yml > tuples.py - autopep8 -i tuples.py --ignore-local-config --max-line-length 160 - -models: - jinja2 templates/models.pyt designs/models.yml > models.py - autopep8 -i models.py --ignore-local-config --max-line-length 160 - -admin: - jinja2 templates/admin.pyt designs/models.yml > admin.py - autopep8 -i admin.py --ignore-local-config --max-line-length 160 - -v1_api_serializers: - jinja2 templates/v1_api_serializers.pyt designs/models.yml > v1_api_serializers.py - autopep8 -i v1_api_serializers.py --ignore-local-config --max-line-length 160 - -v1_api_views: - jinja2 templates/v1_api_views.pyt designs/models.yml > v1_api_views.py - autopep8 -i v1_api_views.py --ignore-local-config --max-line-length 80 - -v1_api_urls: - jinja2 templates/v1_api_urls.pyt designs/models.yml > v1_api_urls.py - autopep8 -i v1_api_urls.py --ignore-local-config --max-line-length 160 - -v2_api_urls: - jinja2 templates/v2_api_urls.pyt designs/models.yml > v2_api_urls.py - autopep8 -i v2_api_urls.py --ignore-local-config --max-line-length 160 - -v2_api_access: - jinja2 templates/v2_api_access.pyt designs/models.yml > v2_api_access.py - autopep8 -i v2_api_access.py --ignore-local-config --max-line-length 160 - -v2_api_serializers: - jinja2 templates/v2_api_serializers.pyt designs/models.yml > v2_api_serializers.py - autopep8 -i v2_api_serializers.py --ignore-local-config --max-line-length 160 - -v2_api_views: - jinja2 templates/v2_api_views.pyt designs/models.yml > v2_api_views.py - autopep8 -i v2_api_views.py --ignore-local-config --max-line-length 160 - -v1_api_client: - jinja2 templates/v1_api_client.pyt designs/models.yml > client/v1_api_client.py - autopep8 -i client/v1_api_client.py --ignore-local-config --max-line-length 160 - -v2_api_client: - jinja2 templates/v2_api_client.pyt designs/models.yml > client/v2_api_client.py - autopep8 -i client/v2_api_client.py --ignore-local-config --max-line-length 160 - -action_plugins: ap_create_model ap_get_model ap_delete_model ap_update_model ap_list_model - -ap_create_model: - jinja2 templates/action_plugins/create_model.pyt designs/models.yml > action_plugins/create_model.py - cd action_plugins; csplit -k -f create_ create_model.py '/#----/' '{*}' - rm action_plugins/create_model.py - ./tools/fix_action_plugin_names.py action_plugins/create_* - autopep8 -i action_plugins/create_*.py --ignore-local-config --max-line-length 160 - jinja2 templates/library/create_model.pyt designs/models.yml > library/create_model.py - cd library; csplit -k -f create_ create_model.py '/#----/' '{*}' - rm library/create_model.py - ./tools/fix_action_plugin_names.py library/create_* - autopep8 -i library/create_*.py --ignore-local-config --max-line-length 160 - - -ap_update_model: - jinja2 templates/action_plugins/update_model.pyt designs/models.yml > action_plugins/update_model.py - cd action_plugins; csplit -k -f update_ update_model.py '/#----/' '{*}' - rm action_plugins/update_model.py - ./tools/fix_action_plugin_names.py action_plugins/update_* - autopep8 -i action_plugins/update_*.py --ignore-local-config --max-line-length 160 - jinja2 templates/library/update_model.pyt designs/models.yml > library/update_model.py - cd library; csplit -k -f update_ update_model.py '/#----/' '{*}' - rm library/update_model.py - ./tools/fix_action_plugin_names.py library/update_* - autopep8 -i library/update_*.py --ignore-local-config --max-line-length 160 - - -ap_get_model: - jinja2 templates/action_plugins/get_model.pyt designs/models.yml > action_plugins/get_model.py - cd action_plugins; csplit -k -f get_ get_model.py '/#----/' '{*}' - rm action_plugins/get_model.py - ./tools/fix_action_plugin_names.py action_plugins/get_* - autopep8 -i action_plugins/get_*.py --ignore-local-config --max-line-length 160 - jinja2 templates/library/get_model.pyt designs/models.yml > library/get_model.py - cd library; csplit -k -f get_ get_model.py '/#----/' '{*}' - rm library/get_model.py - ./tools/fix_action_plugin_names.py library/get_* - autopep8 -i library/get_*.py --ignore-local-config --max-line-length 160 - - -ap_delete_model: - jinja2 templates/action_plugins/delete_model.pyt designs/models.yml > action_plugins/delete_model.py - cd action_plugins; csplit -k -f delete_ delete_model.py '/#----/' '{*}' - rm action_plugins/delete_model.py - ./tools/fix_action_plugin_names.py action_plugins/delete_* - autopep8 -i action_plugins/delete_*.py --ignore-local-config --max-line-length 160 - jinja2 templates/library/delete_model.pyt designs/models.yml > library/delete_model.py - cd library; csplit -k -f delete_ delete_model.py '/#----/' '{*}' - rm library/delete_model.py - ./tools/fix_action_plugin_names.py library/delete_* - autopep8 -i library/delete_*.py --ignore-local-config --max-line-length 160 - - -ap_list_model: - jinja2 templates/action_plugins/list_model.pyt designs/models.yml > action_plugins/list_model.py - cd action_plugins; csplit -k -f list_ list_model.py '/#----/' '{*}' - rm action_plugins/list_model.py - ./tools/fix_action_plugin_names.py action_plugins/list_* - autopep8 -i action_plugins/list_*.py --ignore-local-config --max-line-length 160 - jinja2 templates/library/list_model.pyt designs/models.yml > library/list_model.py - cd library; csplit -k -f list_ list_model.py '/#----/' '{*}' - rm library/list_model.py - ./tools/fix_action_plugin_names.py library/list_* - autopep8 -i library/list_*.py --ignore-local-config --max-line-length 160 - diff --git a/awx/network_ui/action_plugins/create_device.py b/awx/network_ui/action_plugins/create_device.py deleted file mode 100644 index c909064053..0000000000 --- a/awx/network_ui/action_plugins/create_device.py +++ /dev/null @@ -1,61 +0,0 @@ -#---- create_device - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - topology = self._task.args.get('topology', None) - name = self._task.args.get('name', None) - x = self._task.args.get('x', None) - y = self._task.args.get('y', None) - id = self._task.args.get('id', None) - device_type = self._task.args.get('device_type', None) - - interface_id_seq = self._task.args.get('interface_id_seq', 0) - process_id_seq = self._task.args.get('process_id_seq', 0) - host_id = self._task.args.get('host_id', 0) - - url = server + '/api/v2/canvas/device/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_group.py b/awx/network_ui/action_plugins/create_group.py deleted file mode 100644 index eaef896a02..0000000000 --- a/awx/network_ui/action_plugins/create_group.py +++ /dev/null @@ -1,61 +0,0 @@ -#---- create_group - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - id = self._task.args.get('id', None) - name = self._task.args.get('name', None) - x1 = self._task.args.get('x1', None) - y1 = self._task.args.get('y1', None) - x2 = self._task.args.get('x2', None) - y2 = self._task.args.get('y2', None) - topology = self._task.args.get('topology', None) - group_type = self._task.args.get('group_type', None) - - inventory_group_id = self._task.args.get('inventory_group_id', 0) - - url = server + '/api/v2/canvas/group/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_groupdevice.py b/awx/network_ui/action_plugins/create_groupdevice.py deleted file mode 100644 index dce3703c50..0000000000 --- a/awx/network_ui/action_plugins/create_groupdevice.py +++ /dev/null @@ -1,46 +0,0 @@ -#---- create_groupdevice - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - group = self._task.args.get('group', None) - device = self._task.args.get('device', None) - - url = server + '/api/v2/canvas/groupdevice/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(group=group, - device=device, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_interface.py b/awx/network_ui/action_plugins/create_interface.py deleted file mode 100644 index cf63e9c082..0000000000 --- a/awx/network_ui/action_plugins/create_interface.py +++ /dev/null @@ -1,48 +0,0 @@ -#---- create_interface - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - device = self._task.args.get('device', None) - name = self._task.args.get('name', None) - id = self._task.args.get('id', None) - - url = server + '/api/v2/canvas/interface/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(device=device, - name=name, - id=id, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_link.py b/awx/network_ui/action_plugins/create_link.py deleted file mode 100644 index 7c17820d8c..0000000000 --- a/awx/network_ui/action_plugins/create_link.py +++ /dev/null @@ -1,54 +0,0 @@ -#---- create_link - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - from_device = self._task.args.get('from_device', None) - to_device = self._task.args.get('to_device', None) - from_interface = self._task.args.get('from_interface', None) - to_interface = self._task.args.get('to_interface', None) - id = self._task.args.get('id', None) - name = self._task.args.get('name', None) - - url = server + '/api/v2/canvas/link/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_process.py b/awx/network_ui/action_plugins/create_process.py deleted file mode 100644 index 8f517f56f3..0000000000 --- a/awx/network_ui/action_plugins/create_process.py +++ /dev/null @@ -1,51 +0,0 @@ -#---- create_process - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - device = self._task.args.get('device', None) - name = self._task.args.get('name', None) - process_type = self._task.args.get('process_type', None) - - id = self._task.args.get('id', 0) - - url = server + '/api/v2/canvas/process/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(device=device, - name=name, - process_type=process_type, - id=id, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_stream.py b/awx/network_ui/action_plugins/create_stream.py deleted file mode 100644 index ccc14a32b2..0000000000 --- a/awx/network_ui/action_plugins/create_stream.py +++ /dev/null @@ -1,51 +0,0 @@ -#---- create_stream - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - from_device = self._task.args.get('from_device', None) - to_device = self._task.args.get('to_device', None) - label = self._task.args.get('label', None) - - id = self._task.args.get('id', 0) - - url = server + '/api/v2/canvas/stream/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(from_device=from_device, - to_device=to_device, - label=label, - id=id, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_toolbox.py b/awx/network_ui/action_plugins/create_toolbox.py deleted file mode 100644 index 5d7a0e0179..0000000000 --- a/awx/network_ui/action_plugins/create_toolbox.py +++ /dev/null @@ -1,44 +0,0 @@ -#---- create_toolbox - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - name = self._task.args.get('name', None) - - url = server + '/api/v2/canvas/toolbox/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(name=name, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_toolboxitem.py b/awx/network_ui/action_plugins/create_toolboxitem.py deleted file mode 100644 index 025a35b6b8..0000000000 --- a/awx/network_ui/action_plugins/create_toolboxitem.py +++ /dev/null @@ -1,46 +0,0 @@ -#---- create_toolboxitem - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - toolbox = self._task.args.get('toolbox', None) - data = self._task.args.get('data', None) - - url = server + '/api/v2/canvas/toolboxitem/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(toolbox=toolbox, - data=data, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_topology.py b/awx/network_ui/action_plugins/create_topology.py deleted file mode 100644 index cd93e299dc..0000000000 --- a/awx/network_ui/action_plugins/create_topology.py +++ /dev/null @@ -1,59 +0,0 @@ -#---- create_topology - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - name = self._task.args.get('name', None) - scale = self._task.args.get('scale', None) - panX = self._task.args.get('panX', None) - panY = self._task.args.get('panY', None) - - device_id_seq = self._task.args.get('device_id_seq', 0) - link_id_seq = self._task.args.get('link_id_seq', 0) - group_id_seq = self._task.args.get('group_id_seq', 0) - stream_id_seq = self._task.args.get('stream_id_seq', 0) - - url = server + '/api/v2/canvas/topology/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/create_topologyinventory.py b/awx/network_ui/action_plugins/create_topologyinventory.py deleted file mode 100644 index bd6e5648fd..0000000000 --- a/awx/network_ui/action_plugins/create_topologyinventory.py +++ /dev/null @@ -1,46 +0,0 @@ -#---- create_topologyinventory - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) - - topology = self._task.args.get('topology', None) - inventory_id = self._task.args.get('inventory_id', None) - - url = server + '/api/v2/canvas/topologyinventory/' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict(topology=topology, - inventory_id=inventory_id, - )), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result diff --git a/awx/network_ui/action_plugins/delete_device.py b/awx/network_ui/action_plugins/delete_device.py deleted file mode 100644 index 76f5fdac55..0000000000 --- a/awx/network_ui/action_plugins/delete_device.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_device - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - device_id = self._task.args.get('device_id', None) - - url = server + '/api/v2/canvas/device/' + str(device_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_group.py b/awx/network_ui/action_plugins/delete_group.py deleted file mode 100644 index 4c95d49a14..0000000000 --- a/awx/network_ui/action_plugins/delete_group.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_group - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - group_id = self._task.args.get('group_id', None) - - url = server + '/api/v2/canvas/group/' + str(group_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_groupdevice.py b/awx/network_ui/action_plugins/delete_groupdevice.py deleted file mode 100644 index dac265cc31..0000000000 --- a/awx/network_ui/action_plugins/delete_groupdevice.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_groupdevice - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - group_device_id = self._task.args.get('group_device_id', None) - - url = server + '/api/v2/canvas/groupdevice/' + str(group_device_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_interface.py b/awx/network_ui/action_plugins/delete_interface.py deleted file mode 100644 index 9797fc0f17..0000000000 --- a/awx/network_ui/action_plugins/delete_interface.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_interface - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - interface_id = self._task.args.get('interface_id', None) - - url = server + '/api/v2/canvas/interface/' + str(interface_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_link.py b/awx/network_ui/action_plugins/delete_link.py deleted file mode 100644 index f78e472a2b..0000000000 --- a/awx/network_ui/action_plugins/delete_link.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_link - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - link_id = self._task.args.get('link_id', None) - - url = server + '/api/v2/canvas/link/' + str(link_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_process.py b/awx/network_ui/action_plugins/delete_process.py deleted file mode 100644 index 2febcbb9f2..0000000000 --- a/awx/network_ui/action_plugins/delete_process.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_process - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - process_id = self._task.args.get('process_id', None) - - url = server + '/api/v2/canvas/process/' + str(process_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_stream.py b/awx/network_ui/action_plugins/delete_stream.py deleted file mode 100644 index f604ad7bdb..0000000000 --- a/awx/network_ui/action_plugins/delete_stream.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_stream - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - stream_id = self._task.args.get('stream_id', None) - - url = server + '/api/v2/canvas/stream/' + str(stream_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_toolbox.py b/awx/network_ui/action_plugins/delete_toolbox.py deleted file mode 100644 index 544f937771..0000000000 --- a/awx/network_ui/action_plugins/delete_toolbox.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_toolbox - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - toolbox_id = self._task.args.get('toolbox_id', None) - - url = server + '/api/v2/canvas/toolbox/' + str(toolbox_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_toolboxitem.py b/awx/network_ui/action_plugins/delete_toolboxitem.py deleted file mode 100644 index 79a20ed9a3..0000000000 --- a/awx/network_ui/action_plugins/delete_toolboxitem.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_toolboxitem - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - toolbox_item_id = self._task.args.get('toolbox_item_id', None) - - url = server + '/api/v2/canvas/toolboxitem/' + str(toolbox_item_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_topology.py b/awx/network_ui/action_plugins/delete_topology.py deleted file mode 100644 index bacbda8da8..0000000000 --- a/awx/network_ui/action_plugins/delete_topology.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_topology - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - topology_id = self._task.args.get('topology_id', None) - - url = server + '/api/v2/canvas/topology/' + str(topology_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/delete_topologyinventory.py b/awx/network_ui/action_plugins/delete_topologyinventory.py deleted file mode 100644 index dd3cedb646..0000000000 --- a/awx/network_ui/action_plugins/delete_topologyinventory.py +++ /dev/null @@ -1,29 +0,0 @@ -#---- delete_topologyinventory - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - topology_inventory_id = self._task.args.get('topology_inventory_id', None) - - url = server + '/api/v2/canvas/topologyinventory/' + str(topology_inventory_id) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result diff --git a/awx/network_ui/action_plugins/get_device.py b/awx/network_ui/action_plugins/get_device.py deleted file mode 100644 index 9953a26cb8..0000000000 --- a/awx/network_ui/action_plugins/get_device.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_device - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - device_id = self._task.args.get('device_id', None) - - url = server + '/api/v2/canvas/device/' + str(device_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_group.py b/awx/network_ui/action_plugins/get_group.py deleted file mode 100644 index 4894ed63ce..0000000000 --- a/awx/network_ui/action_plugins/get_group.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_group - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - group_id = self._task.args.get('group_id', None) - - url = server + '/api/v2/canvas/group/' + str(group_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_groupdevice.py b/awx/network_ui/action_plugins/get_groupdevice.py deleted file mode 100644 index 2207ac0d34..0000000000 --- a/awx/network_ui/action_plugins/get_groupdevice.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_groupdevice - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - group_device_id = self._task.args.get('group_device_id', None) - - url = server + '/api/v2/canvas/groupdevice/' + str(group_device_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_interface.py b/awx/network_ui/action_plugins/get_interface.py deleted file mode 100644 index 97c7e3cad7..0000000000 --- a/awx/network_ui/action_plugins/get_interface.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_interface - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - interface_id = self._task.args.get('interface_id', None) - - url = server + '/api/v2/canvas/interface/' + str(interface_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_link.py b/awx/network_ui/action_plugins/get_link.py deleted file mode 100644 index 12c626fde1..0000000000 --- a/awx/network_ui/action_plugins/get_link.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_link - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - link_id = self._task.args.get('link_id', None) - - url = server + '/api/v2/canvas/link/' + str(link_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_process.py b/awx/network_ui/action_plugins/get_process.py deleted file mode 100644 index a83dd17672..0000000000 --- a/awx/network_ui/action_plugins/get_process.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_process - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - process_id = self._task.args.get('process_id', None) - - url = server + '/api/v2/canvas/process/' + str(process_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_stream.py b/awx/network_ui/action_plugins/get_stream.py deleted file mode 100644 index d4ad6c4f97..0000000000 --- a/awx/network_ui/action_plugins/get_stream.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_stream - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - stream_id = self._task.args.get('stream_id', None) - - url = server + '/api/v2/canvas/stream/' + str(stream_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_toolbox.py b/awx/network_ui/action_plugins/get_toolbox.py deleted file mode 100644 index 83fa6d87d1..0000000000 --- a/awx/network_ui/action_plugins/get_toolbox.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_toolbox - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - toolbox_id = self._task.args.get('toolbox_id', None) - - url = server + '/api/v2/canvas/toolbox/' + str(toolbox_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_toolboxitem.py b/awx/network_ui/action_plugins/get_toolboxitem.py deleted file mode 100644 index f80990dbba..0000000000 --- a/awx/network_ui/action_plugins/get_toolboxitem.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_toolboxitem - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - toolbox_item_id = self._task.args.get('toolbox_item_id', None) - - url = server + '/api/v2/canvas/toolboxitem/' + str(toolbox_item_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_topology.py b/awx/network_ui/action_plugins/get_topology.py deleted file mode 100644 index 4a5b0229a6..0000000000 --- a/awx/network_ui/action_plugins/get_topology.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_topology - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - topology_id = self._task.args.get('topology_id', None) - - url = server + '/api/v2/canvas/topology/' + str(topology_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/get_topologyinventory.py b/awx/network_ui/action_plugins/get_topologyinventory.py deleted file mode 100644 index 39a4bbf0a5..0000000000 --- a/awx/network_ui/action_plugins/get_topologyinventory.py +++ /dev/null @@ -1,32 +0,0 @@ -#---- get_topologyinventory - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - topology_inventory_id = self._task.args.get('topology_inventory_id', None) - - url = server + '/api/v2/canvas/topologyinventory/' + str(topology_inventory_id) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/list_device.py b/awx/network_ui/action_plugins/list_device.py deleted file mode 100644 index e5270ce88b..0000000000 --- a/awx/network_ui/action_plugins/list_device.py +++ /dev/null @@ -1,57 +0,0 @@ -#---- list_device - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - device_id = self._task.args.get('device_id', None) - topology = self._task.args.get('topology', None) - name = self._task.args.get('name', None) - x = self._task.args.get('x', None) - y = self._task.args.get('y', None) - id = self._task.args.get('id', None) - device_type = self._task.args.get('device_type', None) - interface_id_seq = self._task.args.get('interface_id_seq', None) - process_id_seq = self._task.args.get('process_id_seq', None) - host_id = self._task.args.get('host_id', None) - - filter_data = dict(device_id=device_id, - topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/device/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_group.py b/awx/network_ui/action_plugins/list_group.py deleted file mode 100644 index ce00957cac..0000000000 --- a/awx/network_ui/action_plugins/list_group.py +++ /dev/null @@ -1,57 +0,0 @@ -#---- list_group - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - group_id = self._task.args.get('group_id', None) - id = self._task.args.get('id', None) - name = self._task.args.get('name', None) - x1 = self._task.args.get('x1', None) - y1 = self._task.args.get('y1', None) - x2 = self._task.args.get('x2', None) - y2 = self._task.args.get('y2', None) - topology = self._task.args.get('topology', None) - group_type = self._task.args.get('group_type', None) - inventory_group_id = self._task.args.get('inventory_group_id', None) - - filter_data = dict(group_id=group_id, - id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/group/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_groupdevice.py b/awx/network_ui/action_plugins/list_groupdevice.py deleted file mode 100644 index 08fea8b75f..0000000000 --- a/awx/network_ui/action_plugins/list_groupdevice.py +++ /dev/null @@ -1,43 +0,0 @@ -#---- list_groupdevice - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - group_device_id = self._task.args.get('group_device_id', None) - group = self._task.args.get('group', None) - device = self._task.args.get('device', None) - - filter_data = dict(group_device_id=group_device_id, - group=group, - device=device, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/groupdevice/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_interface.py b/awx/network_ui/action_plugins/list_interface.py deleted file mode 100644 index abb8f7d99b..0000000000 --- a/awx/network_ui/action_plugins/list_interface.py +++ /dev/null @@ -1,45 +0,0 @@ -#---- list_interface - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - interface_id = self._task.args.get('interface_id', None) - device = self._task.args.get('device', None) - name = self._task.args.get('name', None) - id = self._task.args.get('id', None) - - filter_data = dict(interface_id=interface_id, - device=device, - name=name, - id=id, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/interface/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_link.py b/awx/network_ui/action_plugins/list_link.py deleted file mode 100644 index b3439764a9..0000000000 --- a/awx/network_ui/action_plugins/list_link.py +++ /dev/null @@ -1,51 +0,0 @@ -#---- list_link - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - link_id = self._task.args.get('link_id', None) - from_device = self._task.args.get('from_device', None) - to_device = self._task.args.get('to_device', None) - from_interface = self._task.args.get('from_interface', None) - to_interface = self._task.args.get('to_interface', None) - id = self._task.args.get('id', None) - name = self._task.args.get('name', None) - - filter_data = dict(link_id=link_id, - from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/link/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_process.py b/awx/network_ui/action_plugins/list_process.py deleted file mode 100644 index 2187cb8a19..0000000000 --- a/awx/network_ui/action_plugins/list_process.py +++ /dev/null @@ -1,47 +0,0 @@ -#---- list_process - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - process_id = self._task.args.get('process_id', None) - device = self._task.args.get('device', None) - name = self._task.args.get('name', None) - process_type = self._task.args.get('process_type', None) - id = self._task.args.get('id', None) - - filter_data = dict(process_id=process_id, - device=device, - name=name, - process_type=process_type, - id=id, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/process/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_stream.py b/awx/network_ui/action_plugins/list_stream.py deleted file mode 100644 index 980aac125b..0000000000 --- a/awx/network_ui/action_plugins/list_stream.py +++ /dev/null @@ -1,47 +0,0 @@ -#---- list_stream - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - stream_id = self._task.args.get('stream_id', None) - from_device = self._task.args.get('from_device', None) - to_device = self._task.args.get('to_device', None) - label = self._task.args.get('label', None) - id = self._task.args.get('id', None) - - filter_data = dict(stream_id=stream_id, - from_device=from_device, - to_device=to_device, - label=label, - id=id, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/stream/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_toolbox.py b/awx/network_ui/action_plugins/list_toolbox.py deleted file mode 100644 index 3f4b3e6854..0000000000 --- a/awx/network_ui/action_plugins/list_toolbox.py +++ /dev/null @@ -1,41 +0,0 @@ -#---- list_toolbox - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - toolbox_id = self._task.args.get('toolbox_id', None) - name = self._task.args.get('name', None) - - filter_data = dict(toolbox_id=toolbox_id, - name=name, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/toolbox/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_toolboxitem.py b/awx/network_ui/action_plugins/list_toolboxitem.py deleted file mode 100644 index 5fc70a6e17..0000000000 --- a/awx/network_ui/action_plugins/list_toolboxitem.py +++ /dev/null @@ -1,43 +0,0 @@ -#---- list_toolboxitem - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - toolbox_item_id = self._task.args.get('toolbox_item_id', None) - toolbox = self._task.args.get('toolbox', None) - data = self._task.args.get('data', None) - - filter_data = dict(toolbox_item_id=toolbox_item_id, - toolbox=toolbox, - data=data, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/toolboxitem/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_topology.py b/awx/network_ui/action_plugins/list_topology.py deleted file mode 100644 index 50a7448849..0000000000 --- a/awx/network_ui/action_plugins/list_topology.py +++ /dev/null @@ -1,55 +0,0 @@ -#---- list_topology - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - topology_id = self._task.args.get('topology_id', None) - name = self._task.args.get('name', None) - scale = self._task.args.get('scale', None) - panX = self._task.args.get('panX', None) - panY = self._task.args.get('panY', None) - device_id_seq = self._task.args.get('device_id_seq', None) - link_id_seq = self._task.args.get('link_id_seq', None) - group_id_seq = self._task.args.get('group_id_seq', None) - stream_id_seq = self._task.args.get('stream_id_seq', None) - - filter_data = dict(topology_id=topology_id, - name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/topology/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/list_topologyinventory.py b/awx/network_ui/action_plugins/list_topologyinventory.py deleted file mode 100644 index 566f0a8442..0000000000 --- a/awx/network_ui/action_plugins/list_topologyinventory.py +++ /dev/null @@ -1,43 +0,0 @@ -#---- list_topologyinventory - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - topology_inventory_id = self._task.args.get('topology_inventory_id', None) - topology = self._task.args.get('topology', None) - inventory_id = self._task.args.get('inventory_id', None) - - filter_data = dict(topology_inventory_id=topology_inventory_id, - topology=topology, - inventory_id=inventory_id, - ) - filter_data = {x: y for x, y in filter_data.iteritems() if y is not None} - - url = '/api/v2/canvas/topologyinventory/' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result diff --git a/awx/network_ui/action_plugins/update_device.py b/awx/network_ui/action_plugins/update_device.py deleted file mode 100644 index 120f43493d..0000000000 --- a/awx/network_ui/action_plugins/update_device.py +++ /dev/null @@ -1,56 +0,0 @@ -#---- update_device - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - device_id = self._task.args.get('device_id', None) - topology = self._task.args.get('topology', None) - name = self._task.args.get('name', None) - x = self._task.args.get('x', None) - y = self._task.args.get('y', None) - id = self._task.args.get('id', None) - device_type = self._task.args.get('device_type', None) - interface_id_seq = self._task.args.get('interface_id_seq', None) - process_id_seq = self._task.args.get('process_id_seq', None) - host_id = self._task.args.get('host_id', None) - - url = server + '/api/v2/canvas/device/' + str(device_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_group.py b/awx/network_ui/action_plugins/update_group.py deleted file mode 100644 index dc6487d53b..0000000000 --- a/awx/network_ui/action_plugins/update_group.py +++ /dev/null @@ -1,56 +0,0 @@ -#---- update_group - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - group_id = self._task.args.get('group_id', None) - id = self._task.args.get('id', None) - name = self._task.args.get('name', None) - x1 = self._task.args.get('x1', None) - y1 = self._task.args.get('y1', None) - x2 = self._task.args.get('x2', None) - y2 = self._task.args.get('y2', None) - topology = self._task.args.get('topology', None) - group_type = self._task.args.get('group_type', None) - inventory_group_id = self._task.args.get('inventory_group_id', None) - - url = server + '/api/v2/canvas/group/' + str(group_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_groupdevice.py b/awx/network_ui/action_plugins/update_groupdevice.py deleted file mode 100644 index 5c6a493154..0000000000 --- a/awx/network_ui/action_plugins/update_groupdevice.py +++ /dev/null @@ -1,42 +0,0 @@ -#---- update_groupdevice - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - group_device_id = self._task.args.get('group_device_id', None) - group = self._task.args.get('group', None) - device = self._task.args.get('device', None) - - url = server + '/api/v2/canvas/groupdevice/' + str(group_device_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(group=group, - device=device, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_interface.py b/awx/network_ui/action_plugins/update_interface.py deleted file mode 100644 index d9a1e0d7ab..0000000000 --- a/awx/network_ui/action_plugins/update_interface.py +++ /dev/null @@ -1,44 +0,0 @@ -#---- update_interface - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - interface_id = self._task.args.get('interface_id', None) - device = self._task.args.get('device', None) - name = self._task.args.get('name', None) - id = self._task.args.get('id', None) - - url = server + '/api/v2/canvas/interface/' + str(interface_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(device=device, - name=name, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_link.py b/awx/network_ui/action_plugins/update_link.py deleted file mode 100644 index 26345cea75..0000000000 --- a/awx/network_ui/action_plugins/update_link.py +++ /dev/null @@ -1,50 +0,0 @@ -#---- update_link - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - link_id = self._task.args.get('link_id', None) - from_device = self._task.args.get('from_device', None) - to_device = self._task.args.get('to_device', None) - from_interface = self._task.args.get('from_interface', None) - to_interface = self._task.args.get('to_interface', None) - id = self._task.args.get('id', None) - name = self._task.args.get('name', None) - - url = server + '/api/v2/canvas/link/' + str(link_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_process.py b/awx/network_ui/action_plugins/update_process.py deleted file mode 100644 index 6242e11b9f..0000000000 --- a/awx/network_ui/action_plugins/update_process.py +++ /dev/null @@ -1,46 +0,0 @@ -#---- update_process - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - process_id = self._task.args.get('process_id', None) - device = self._task.args.get('device', None) - name = self._task.args.get('name', None) - process_type = self._task.args.get('process_type', None) - id = self._task.args.get('id', None) - - url = server + '/api/v2/canvas/process/' + str(process_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(device=device, - name=name, - process_type=process_type, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_stream.py b/awx/network_ui/action_plugins/update_stream.py deleted file mode 100644 index d91e2b365e..0000000000 --- a/awx/network_ui/action_plugins/update_stream.py +++ /dev/null @@ -1,46 +0,0 @@ -#---- update_stream - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - stream_id = self._task.args.get('stream_id', None) - from_device = self._task.args.get('from_device', None) - to_device = self._task.args.get('to_device', None) - label = self._task.args.get('label', None) - id = self._task.args.get('id', None) - - url = server + '/api/v2/canvas/stream/' + str(stream_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(from_device=from_device, - to_device=to_device, - label=label, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_toolbox.py b/awx/network_ui/action_plugins/update_toolbox.py deleted file mode 100644 index 0f16adefa3..0000000000 --- a/awx/network_ui/action_plugins/update_toolbox.py +++ /dev/null @@ -1,40 +0,0 @@ -#---- update_toolbox - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - toolbox_id = self._task.args.get('toolbox_id', None) - name = self._task.args.get('name', None) - - url = server + '/api/v2/canvas/toolbox/' + str(toolbox_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(name=name, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_toolboxitem.py b/awx/network_ui/action_plugins/update_toolboxitem.py deleted file mode 100644 index 5b163986c4..0000000000 --- a/awx/network_ui/action_plugins/update_toolboxitem.py +++ /dev/null @@ -1,42 +0,0 @@ -#---- update_toolboxitem - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - toolbox_item_id = self._task.args.get('toolbox_item_id', None) - toolbox = self._task.args.get('toolbox', None) - data = self._task.args.get('data', None) - - url = server + '/api/v2/canvas/toolboxitem/' + str(toolbox_item_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(toolbox=toolbox, - data=data, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_topology.py b/awx/network_ui/action_plugins/update_topology.py deleted file mode 100644 index 696135f6f6..0000000000 --- a/awx/network_ui/action_plugins/update_topology.py +++ /dev/null @@ -1,54 +0,0 @@ -#---- update_topology - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - topology_id = self._task.args.get('topology_id', None) - name = self._task.args.get('name', None) - scale = self._task.args.get('scale', None) - panX = self._task.args.get('panX', None) - panY = self._task.args.get('panY', None) - device_id_seq = self._task.args.get('device_id_seq', None) - link_id_seq = self._task.args.get('link_id_seq', None) - group_id_seq = self._task.args.get('group_id_seq', None) - stream_id_seq = self._task.args.get('stream_id_seq', None) - - url = server + '/api/v2/canvas/topology/' + str(topology_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/action_plugins/update_topologyinventory.py b/awx/network_ui/action_plugins/update_topologyinventory.py deleted file mode 100644 index 38b8281a2a..0000000000 --- a/awx/network_ui/action_plugins/update_topologyinventory.py +++ /dev/null @@ -1,42 +0,0 @@ -#---- update_topologyinventory - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - - topology_inventory_id = self._task.args.get('topology_inventory_id', None) - topology = self._task.args.get('topology', None) - inventory_id = self._task.args.get('inventory_id', None) - - url = server + '/api/v2/canvas/topologyinventory/' + str(topology_inventory_id) + '/' - headers = {'content-type': 'application/json'} - data = dict(topology=topology, - inventory_id=inventory_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result diff --git a/awx/network_ui/admin.py b/awx/network_ui/admin.py deleted file mode 100644 index 90459da53f..0000000000 --- a/awx/network_ui/admin.py +++ /dev/null @@ -1,251 +0,0 @@ -from django.contrib import admin - -from awx.network_ui.models import Device - -from awx.network_ui.models import Link - -from awx.network_ui.models import Topology - -from awx.network_ui.models import Client - -from awx.network_ui.models import TopologyHistory - -from awx.network_ui.models import MessageType - -from awx.network_ui.models import Interface - -from awx.network_ui.models import Group - -from awx.network_ui.models import GroupDevice - -from awx.network_ui.models import DataBinding - -from awx.network_ui.models import DataType - -from awx.network_ui.models import DataSheet - -from awx.network_ui.models import Stream - -from awx.network_ui.models import Process - -from awx.network_ui.models import Toolbox - -from awx.network_ui.models import ToolboxItem - -from awx.network_ui.models import FSMTrace - -from awx.network_ui.models import TopologyInventory - -from awx.network_ui.models import EventTrace - -from awx.network_ui.models import Coverage - -from awx.network_ui.models import TopologySnapshot - -from awx.network_ui.models import TestCase - -from awx.network_ui.models import Result - -from awx.network_ui.models import CodeUnderTest - -from awx.network_ui.models import TestResult - - -class DeviceAdmin(admin.ModelAdmin): - fields = ('topology', 'name', 'x', 'y', 'id', 'device_type', 'interface_id_seq', 'process_id_seq', 'host_id',) - raw_id_fields = ('topology',) - - -admin.site.register(Device, DeviceAdmin) - - -class LinkAdmin(admin.ModelAdmin): - fields = ('from_device', 'to_device', 'from_interface', 'to_interface', 'id', 'name',) - raw_id_fields = ('from_device', 'to_device', 'from_interface', 'to_interface',) - - -admin.site.register(Link, LinkAdmin) - - -class TopologyAdmin(admin.ModelAdmin): - fields = ('name', 'scale', 'panX', 'panY', 'device_id_seq', 'link_id_seq', 'group_id_seq', 'stream_id_seq',) - raw_id_fields = () - - -admin.site.register(Topology, TopologyAdmin) - - -class ClientAdmin(admin.ModelAdmin): - fields = () - raw_id_fields = () - - -admin.site.register(Client, ClientAdmin) - - -class TopologyHistoryAdmin(admin.ModelAdmin): - fields = ('topology', 'client', 'message_type', 'message_id', 'message_data', 'undone',) - raw_id_fields = ('topology', 'client', 'message_type',) - - -admin.site.register(TopologyHistory, TopologyHistoryAdmin) - - -class MessageTypeAdmin(admin.ModelAdmin): - fields = ('name',) - raw_id_fields = () - - -admin.site.register(MessageType, MessageTypeAdmin) - - -class InterfaceAdmin(admin.ModelAdmin): - fields = ('device', 'name', 'id',) - raw_id_fields = ('device',) - - -admin.site.register(Interface, InterfaceAdmin) - - -class GroupAdmin(admin.ModelAdmin): - fields = ('id', 'name', 'x1', 'y1', 'x2', 'y2', 'topology', 'group_type', 'inventory_group_id',) - raw_id_fields = ('topology',) - - -admin.site.register(Group, GroupAdmin) - - -class GroupDeviceAdmin(admin.ModelAdmin): - fields = ('group', 'device',) - raw_id_fields = ('group', 'device',) - - -admin.site.register(GroupDevice, GroupDeviceAdmin) - - -class DataBindingAdmin(admin.ModelAdmin): - fields = ('column', 'row', 'table', 'primary_key_id', 'field', 'data_type', 'sheet',) - raw_id_fields = ('data_type', 'sheet',) - - -admin.site.register(DataBinding, DataBindingAdmin) - - -class DataTypeAdmin(admin.ModelAdmin): - fields = ('type_name',) - raw_id_fields = () - - -admin.site.register(DataType, DataTypeAdmin) - - -class DataSheetAdmin(admin.ModelAdmin): - fields = ('name', 'topology', 'client',) - raw_id_fields = ('topology', 'client',) - - -admin.site.register(DataSheet, DataSheetAdmin) - - -class StreamAdmin(admin.ModelAdmin): - fields = ('from_device', 'to_device', 'label', 'id',) - raw_id_fields = ('stream_id', 'from_device', 'to_device',) - - -admin.site.register(Stream, StreamAdmin) - - -class ProcessAdmin(admin.ModelAdmin): - fields = ('device', 'name', 'process_type', 'id',) - raw_id_fields = ('device',) - - -admin.site.register(Process, ProcessAdmin) - - -class ToolboxAdmin(admin.ModelAdmin): - fields = ('name',) - raw_id_fields = () - - -admin.site.register(Toolbox, ToolboxAdmin) - - -class ToolboxItemAdmin(admin.ModelAdmin): - fields = ('toolbox', 'data',) - raw_id_fields = ('toolbox',) - - -admin.site.register(ToolboxItem, ToolboxItemAdmin) - - -class FSMTraceAdmin(admin.ModelAdmin): - fields = ('fsm_name', 'from_state', 'to_state', 'message_type', 'client', 'trace_session_id', 'order',) - raw_id_fields = ('client',) - - -admin.site.register(FSMTrace, FSMTraceAdmin) - - -class TopologyInventoryAdmin(admin.ModelAdmin): - fields = ('topology', 'inventory_id',) - raw_id_fields = ('topology',) - - -admin.site.register(TopologyInventory, TopologyInventoryAdmin) - - -class EventTraceAdmin(admin.ModelAdmin): - fields = ('client', 'trace_session_id', 'event_data', 'message_id',) - raw_id_fields = ('client',) - - -admin.site.register(EventTrace, EventTraceAdmin) - - -class CoverageAdmin(admin.ModelAdmin): - fields = ('coverage_data', 'test_result',) - raw_id_fields = ('test_result',) - - -admin.site.register(Coverage, CoverageAdmin) - - -class TopologySnapshotAdmin(admin.ModelAdmin): - fields = ('client', 'topology_id', 'trace_session_id', 'snapshot_data', 'order',) - raw_id_fields = ('client', 'snapshot_data',) - - -admin.site.register(TopologySnapshot, TopologySnapshotAdmin) - - -class TestCaseAdmin(admin.ModelAdmin): - fields = ('name', 'test_case_data',) - raw_id_fields = ('name',) - - -admin.site.register(TestCase, TestCaseAdmin) - - -class ResultAdmin(admin.ModelAdmin): - fields = ('name',) - raw_id_fields = () - - -admin.site.register(Result, ResultAdmin) - - -class CodeUnderTestAdmin(admin.ModelAdmin): - fields = ('version_x', 'version_y', 'version_z', 'commits_since', 'commit_hash',) - raw_id_fields = ('code_under_test_id',) - - -admin.site.register(CodeUnderTest, CodeUnderTestAdmin) - - -class TestResultAdmin(admin.ModelAdmin): - fields = ('test_case', 'result', 'code_under_test', 'time', 'id', 'client',) - raw_id_fields = ('test_case', 'result', 'code_under_test', 'client',) - - -admin.site.register(TestResult, TestResultAdmin) diff --git a/awx/network_ui/client/README.md b/awx/network_ui/client/README.md deleted file mode 100644 index 74324e7f67..0000000000 --- a/awx/network_ui/client/README.md +++ /dev/null @@ -1,3 +0,0 @@ -API client for the networking visualization. - - diff --git a/awx/network_ui/client/conf.py b/awx/network_ui/client/conf.py deleted file mode 100644 index bc8eeb7344..0000000000 --- a/awx/network_ui/client/conf.py +++ /dev/null @@ -1,11 +0,0 @@ - -class _Settings(object): - - def __init__(self): - self.SERVER = 'https://meganuke:8043' - self.SSL_VERIFY = False - self.user = None - self.password = None - - -settings = _Settings() diff --git a/awx/network_ui/client/networking_visualization_client.py b/awx/network_ui/client/networking_visualization_client.py deleted file mode 100755 index a5a2d81e19..0000000000 --- a/awx/network_ui/client/networking_visualization_client.py +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -""" -Usage: - networking_visualization_client.py [options] (create|list|get|update|delete) [device|topology|interface|link] [...] - -Options: - -h, --help Show this page - --user= User - --password-file=|-p= Password file - --debug Show debug logging - --verbose Show verbose logging -""" -from docopt import docopt -import logging -import sys -from getpass import getpass - -from conf import settings -import json -import os - -import v2_api_client - - -logger = logging.getLogger('networking_visualization_client') - - -def main(args=None): - try: - if args is None: - args = sys.argv[1:] - parsed_args = docopt(__doc__, args) - if parsed_args['--debug']: - logging.basicConfig(level=logging.DEBUG) - elif parsed_args['--verbose']: - logging.basicConfig(level=logging.INFO) - else: - logging.basicConfig(level=logging.WARNING) - - settings.user = parsed_args['--user'] - if parsed_args['--password-file'] and os.path.exists(os.path.abspath(parsed_args['--password-file'])): - with open(os.path.abspath(parsed_args['--password-file'])) as f: - settings.password = f.read().strip() - else: - settings.password = getpass() - query_filter = {} - if parsed_args['']: - for key_value in parsed_args['']: - if "=" in key_value: - key, _, value = key_value.partition("=") - if value.lower() in ["true", "yes"]: - query_filter[key] = True - elif value.lower() in ["false", "no"]: - query_filter[key] = False - else: - try: - query_filter[key] = int(value) - except ValueError: - try: - query_filter[key] = float(value) - except ValueError: - query_filter[key] = value - else: - raise Exception("Filters should be in the form of 'key=value'") - - operation = ('get' if parsed_args['get'] else - 'list' if parsed_args['list'] else - 'create' if parsed_args['create'] else - 'delete' if parsed_args['delete'] else - 'update' if parsed_args['update'] else None) - - if (parsed_args['topology']): - result = v2_api_client.__dict__[operation + "_topology"](**query_filter) - elif (parsed_args['device']): - result = v2_api_client.__dict__[operation + "_device"](**query_filter) - elif (parsed_args['interface']): - result = v2_api_client.__dict__[operation + "_interface"](**query_filter) - elif (parsed_args['link']): - result = v2_api_client.__dict__[operation + "_link"](**query_filter) - if isinstance(result, dict) or isinstance(result, list): - print json.dumps(result, sort_keys=True, indent=4) - - except BaseException, e: - print ("Error: {0}".format(e)) - raise - return 1 - return 0 - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) - diff --git a/awx/network_ui/client/requirements.txt b/awx/network_ui/client/requirements.txt deleted file mode 100644 index f7d3503ddb..0000000000 --- a/awx/network_ui/client/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -docopt -requests -pyyaml diff --git a/awx/network_ui/client/util.py b/awx/network_ui/client/util.py deleted file mode 100644 index 3a54e9221d..0000000000 --- a/awx/network_ui/client/util.py +++ /dev/null @@ -1,27 +0,0 @@ - - -import requests - -from conf import settings - - -def get_url(): - return settings.SERVER - - -def get_auth(): - return (settings.user, settings.password) - - -def get_verify(): - return settings.SSL_VERIFY - - -def unpaginate(server, url, verify, auth, filter_data): - results = [] - while url is not None: - url = "{0}{1}".format(server, url) - data = requests.get(url, verify=verify, auth=auth, params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - return results diff --git a/awx/network_ui/client/v1_api_client.py b/awx/network_ui/client/v1_api_client.py deleted file mode 100644 index a01ad5168f..0000000000 --- a/awx/network_ui/client/v1_api_client.py +++ /dev/null @@ -1,588 +0,0 @@ - -import requests - -import util -import json -from collections import namedtuple - - -Device = namedtuple('Device', ['device_id', - 'topology', - 'name', - 'x', - 'y', - 'id', - 'device_type', - 'interface_id_seq', - 'process_id_seq', - 'host_id', - ]) - -Link = namedtuple('Link', ['link_id', - 'from_device', - 'to_device', - 'from_interface', - 'to_interface', - 'id', - 'name', - ]) - -Topology = namedtuple('Topology', ['topology_id', - 'name', - 'scale', - 'panX', - 'panY', - 'device_id_seq', - 'link_id_seq', - 'group_id_seq', - 'stream_id_seq', - ]) - -Interface = namedtuple('Interface', ['interface_id', - 'device', - 'name', - 'id', - ]) - -Group = namedtuple('Group', ['group_id', - 'id', - 'name', - 'x1', - 'y1', - 'x2', - 'y2', - 'topology', - 'group_type', - 'inventory_group_id', - ]) - -GroupDevice = namedtuple('GroupDevice', ['group_device_id', - 'group', - 'device', - ]) - -Stream = namedtuple('Stream', ['stream_id', - 'from_device', - 'to_device', - 'label', - 'id', - ]) - -Process = namedtuple('Process', ['process_id', - 'device', - 'name', - 'process_type', - 'id', - ]) - -Toolbox = namedtuple('Toolbox', ['toolbox_id', - 'name', - ]) - -ToolboxItem = namedtuple('ToolboxItem', ['toolbox_item_id', - 'toolbox', - 'data', - ]) - -TopologyInventory = namedtuple('TopologyInventory', ['topology_inventory_id', - 'topology', - 'inventory_id', - ]) - - -def list_device(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/device/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_device(device_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_device(topology, name, x, y, id, device_type, interface_id_seq=0, process_id_seq=0, host_id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/device/", data=json.dumps(dict(topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_device(device_id, topology=None, name=None, x=None, y=None, id=None, device_type=None, interface_id_seq=None, process_id_seq=None, host_id=None,): - headers = {'content-type': 'application/json'} - data = dict(topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/device/" + str(device_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_device(device_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_link(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/link/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_link(link_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_link(from_device, to_device, from_interface, to_interface, id, name,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/link/", data=json.dumps(dict(from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_link(link_id, from_device=None, to_device=None, from_interface=None, to_interface=None, id=None, name=None,): - headers = {'content-type': 'application/json'} - data = dict(from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/link/" + str(link_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_link(link_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_topology(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/topology/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_topology(topology_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_topology(name, scale, panX, panY, device_id_seq=0, link_id_seq=0, group_id_seq=0, stream_id_seq=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/topology/", data=json.dumps(dict(name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_topology(topology_id, name=None, scale=None, panX=None, panY=None, device_id_seq=None, link_id_seq=None, group_id_seq=None, stream_id_seq=None,): - headers = {'content-type': 'application/json'} - data = dict(name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/topology/" + str(topology_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_topology(topology_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_interface(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/interface/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_interface(interface_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_interface(device, name, id,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/interface/", data=json.dumps(dict(device=device, - name=name, - id=id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_interface(interface_id, device=None, name=None, id=None,): - headers = {'content-type': 'application/json'} - data = dict(device=device, - name=name, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/interface/" + str(interface_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_interface(interface_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_group(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/group/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_group(group_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_group(id, name, x1, y1, x2, y2, topology, group_type, inventory_group_id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/group/", data=json.dumps(dict(id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, group_type=None, inventory_group_id=None,): - headers = {'content-type': 'application/json'} - data = dict(id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/group/" + str(group_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_group(group_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_groupdevice(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/groupdevice/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_groupdevice(group_device_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_groupdevice(group, device,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/groupdevice/", data=json.dumps(dict(group=group, - device=device, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_groupdevice(group_device_id, group=None, device=None,): - headers = {'content-type': 'application/json'} - data = dict(group=group, - device=device, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/groupdevice/" + str(group_device_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_groupdevice(group_device_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_stream(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/stream/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_stream(stream_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_stream(from_device, to_device, label, id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/stream/", data=json.dumps(dict(from_device=from_device, - to_device=to_device, - label=label, - id=id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_stream(stream_id, from_device=None, to_device=None, label=None, id=None,): - headers = {'content-type': 'application/json'} - data = dict(from_device=from_device, - to_device=to_device, - label=label, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/stream/" + str(stream_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_stream(stream_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_process(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/process/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_process(process_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_process(device, name, process_type, id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/process/", data=json.dumps(dict(device=device, - name=name, - process_type=process_type, - id=id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_process(process_id, device=None, name=None, process_type=None, id=None,): - headers = {'content-type': 'application/json'} - data = dict(device=device, - name=name, - process_type=process_type, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/process/" + str(process_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_process(process_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_toolbox(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/toolbox/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_toolbox(toolbox_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_toolbox(name,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/toolbox/", data=json.dumps(dict(name=name, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_toolbox(toolbox_id, name=None,): - headers = {'content-type': 'application/json'} - data = dict(name=name, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/toolbox/" + str(toolbox_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_toolbox(toolbox_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_toolboxitem(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/toolboxitem/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_toolboxitem(toolbox_item_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_toolboxitem(toolbox, data,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/toolboxitem/", data=json.dumps(dict(toolbox=toolbox, - data=data, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_toolboxitem(toolbox_item_id, toolbox=None, data=None,): - headers = {'content-type': 'application/json'} - data = dict(toolbox=toolbox, - data=data, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/toolboxitem/" + str(toolbox_item_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_toolboxitem(toolbox_item_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_topologyinventory(**kwargs): - response = util.unpaginate(util.get_url(), '/network_ui/api/v1/topologyinventory/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_topologyinventory(topology_inventory_id): - response = requests.get(util.get_url() + "/network_ui/api/v1/topologyinventory/" + - str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_topologyinventory(topology, inventory_id,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/network_ui/api/v1/topologyinventory/", data=json.dumps(dict(topology=topology, - inventory_id=inventory_id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_topologyinventory(topology_inventory_id, topology=None, inventory_id=None,): - headers = {'content-type': 'application/json'} - data = dict(topology=topology, - inventory_id=inventory_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/network_ui/api/v1/topologyinventory/" + str(topology_inventory_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_topologyinventory(topology_inventory_id): - response = requests.delete(util.get_url() + "/network_ui/api/v1/topologyinventory/" + - str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth()) - return response diff --git a/awx/network_ui/client/v2_api_client.py b/awx/network_ui/client/v2_api_client.py deleted file mode 100644 index a1e3753a6f..0000000000 --- a/awx/network_ui/client/v2_api_client.py +++ /dev/null @@ -1,502 +0,0 @@ - -import requests - -import util -import json - - -def list_device(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/device/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_device(device_id): - response = requests.get(util.get_url() + "/api/v2/canvas/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_device(topology, name, x, y, id, device_type, interface_id_seq=0, process_id_seq=0, host_id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/device/", data=json.dumps(dict(topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_device(device_id, topology=None, name=None, x=None, y=None, id=None, device_type=None, interface_id_seq=None, process_id_seq=None, host_id=None,): - headers = {'content-type': 'application/json'} - data = dict(topology=topology, - name=name, - x=x, - y=y, - id=id, - device_type=device_type, - interface_id_seq=interface_id_seq, - process_id_seq=process_id_seq, - host_id=host_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/device/" + str(device_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_device(device_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/device/" + str(device_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_link(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/link/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_link(link_id): - response = requests.get(util.get_url() + "/api/v2/canvas/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_link(from_device, to_device, from_interface, to_interface, id, name,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/link/", data=json.dumps(dict(from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_link(link_id, from_device=None, to_device=None, from_interface=None, to_interface=None, id=None, name=None,): - headers = {'content-type': 'application/json'} - data = dict(from_device=from_device, - to_device=to_device, - from_interface=from_interface, - to_interface=to_interface, - id=id, - name=name, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/link/" + str(link_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_link(link_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/link/" + str(link_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_topology(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/topology/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_topology(topology_id): - response = requests.get(util.get_url() + "/api/v2/canvas/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_topology(name, scale, panX, panY, device_id_seq=0, link_id_seq=0, group_id_seq=0, stream_id_seq=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/topology/", data=json.dumps(dict(name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_topology(topology_id, name=None, scale=None, panX=None, panY=None, device_id_seq=None, link_id_seq=None, group_id_seq=None, stream_id_seq=None,): - headers = {'content-type': 'application/json'} - data = dict(name=name, - scale=scale, - panX=panX, - panY=panY, - device_id_seq=device_id_seq, - link_id_seq=link_id_seq, - group_id_seq=group_id_seq, - stream_id_seq=stream_id_seq, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/topology/" + str(topology_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_topology(topology_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/topology/" + str(topology_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_interface(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/interface/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_interface(interface_id): - response = requests.get(util.get_url() + "/api/v2/canvas/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_interface(device, name, id,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/interface/", data=json.dumps(dict(device=device, - name=name, - id=id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_interface(interface_id, device=None, name=None, id=None,): - headers = {'content-type': 'application/json'} - data = dict(device=device, - name=name, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/interface/" + str(interface_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_interface(interface_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/interface/" + str(interface_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_group(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/group/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_group(group_id): - response = requests.get(util.get_url() + "/api/v2/canvas/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_group(id, name, x1, y1, x2, y2, topology, group_type, inventory_group_id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/group/", data=json.dumps(dict(id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_group(group_id, id=None, name=None, x1=None, y1=None, x2=None, y2=None, topology=None, group_type=None, inventory_group_id=None,): - headers = {'content-type': 'application/json'} - data = dict(id=id, - name=name, - x1=x1, - y1=y1, - x2=x2, - y2=y2, - topology=topology, - group_type=group_type, - inventory_group_id=inventory_group_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/group/" + str(group_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_group(group_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/group/" + str(group_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_groupdevice(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/groupdevice/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_groupdevice(group_device_id): - response = requests.get(util.get_url() + "/api/v2/canvas/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_groupdevice(group, device,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/groupdevice/", data=json.dumps(dict(group=group, - device=device, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_groupdevice(group_device_id, group=None, device=None,): - headers = {'content-type': 'application/json'} - data = dict(group=group, - device=device, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/groupdevice/" + str(group_device_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_groupdevice(group_device_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/groupdevice/" + str(group_device_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_stream(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/stream/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_stream(stream_id): - response = requests.get(util.get_url() + "/api/v2/canvas/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_stream(from_device, to_device, label, id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/stream/", data=json.dumps(dict(from_device=from_device, - to_device=to_device, - label=label, - id=id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_stream(stream_id, from_device=None, to_device=None, label=None, id=None,): - headers = {'content-type': 'application/json'} - data = dict(from_device=from_device, - to_device=to_device, - label=label, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/stream/" + str(stream_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_stream(stream_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/stream/" + str(stream_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_process(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/process/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_process(process_id): - response = requests.get(util.get_url() + "/api/v2/canvas/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_process(device, name, process_type, id=0,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/process/", data=json.dumps(dict(device=device, - name=name, - process_type=process_type, - id=id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_process(process_id, device=None, name=None, process_type=None, id=None,): - headers = {'content-type': 'application/json'} - data = dict(device=device, - name=name, - process_type=process_type, - id=id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/process/" + str(process_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_process(process_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/process/" + str(process_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_toolbox(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/toolbox/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_toolbox(toolbox_id): - response = requests.get(util.get_url() + "/api/v2/canvas/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_toolbox(name,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/toolbox/", data=json.dumps(dict(name=name, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_toolbox(toolbox_id, name=None,): - headers = {'content-type': 'application/json'} - data = dict(name=name, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/toolbox/" + str(toolbox_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_toolbox(toolbox_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/toolbox/" + str(toolbox_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_toolboxitem(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/toolboxitem/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_toolboxitem(toolbox_item_id): - response = requests.get(util.get_url() + "/api/v2/canvas/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_toolboxitem(toolbox, data,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/toolboxitem/", data=json.dumps(dict(toolbox=toolbox, - data=data, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_toolboxitem(toolbox_item_id, toolbox=None, data=None,): - headers = {'content-type': 'application/json'} - data = dict(toolbox=toolbox, - data=data, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/toolboxitem/" + str(toolbox_item_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_toolboxitem(toolbox_item_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/toolboxitem/" + str(toolbox_item_id), verify=util.get_verify(), auth=util.get_auth()) - return response - - -def list_topologyinventory(**kwargs): - response = util.unpaginate(util.get_url(), '/api/v2/canvas/topologyinventory/', util.get_verify(), util.get_auth(), kwargs) - return response - - -def get_topologyinventory(topology_inventory_id): - response = requests.get(util.get_url() + "/api/v2/canvas/topologyinventory/" + str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - - -def create_topologyinventory(topology, inventory_id,): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "/api/v2/canvas/topologyinventory/", data=json.dumps(dict(topology=topology, - inventory_id=inventory_id, - )), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - - -def update_topologyinventory(topology_inventory_id, topology=None, inventory_id=None,): - headers = {'content-type': 'application/json'} - data = dict(topology=topology, - inventory_id=inventory_id, - ) - data = {x: y for x, y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "/api/v2/canvas/topologyinventory/" + str(topology_inventory_id) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_topologyinventory(topology_inventory_id): - response = requests.delete(util.get_url() + "/api/v2/canvas/topologyinventory/" + - str(topology_inventory_id), verify=util.get_verify(), auth=util.get_auth()) - return response diff --git a/awx/network_ui/constraints.sql b/awx/network_ui/constraints.sql deleted file mode 100644 index 9d723dda76..0000000000 --- a/awx/network_ui/constraints.sql +++ /dev/null @@ -1 +0,0 @@ -alter table prototype_device add constraint prototype_device_topology_id_unique unique (topology_id, id); diff --git a/awx/network_ui/consumers.py b/awx/network_ui/consumers.py index 9f29d2b7ce..189f349fe2 100644 --- a/awx/network_ui/consumers.py +++ b/awx/network_ui/consumers.py @@ -5,25 +5,20 @@ from channels.sessions import channel_session from awx.network_ui.models import Topology, Device, Link, Client, TopologyHistory, MessageType, Interface from awx.network_ui.models import Group as DeviceGroup from awx.network_ui.models import GroupDevice as GroupDeviceMap -from awx.network_ui.models import DataSheet, DataBinding, DataType from awx.network_ui.models import Process, Stream from awx.network_ui.models import Toolbox, ToolboxItem from awx.network_ui.models import FSMTrace, EventTrace, Coverage, TopologySnapshot from awx.network_ui.models import TopologyInventory from awx.network_ui.models import TestCase, TestResult, CodeUnderTest, Result -from awx.network_ui.messages import MultipleMessage, InterfaceCreate, LinkCreate, to_dict import urlparse from django.core.exceptions import ObjectDoesNotExist from django.db.models import Q from collections import defaultdict -import math -import random import logging from django.utils.dateparse import parse_datetime from awx.network_ui.utils import transform_dict -import dpath.util from pprint import pformat import json @@ -33,16 +28,11 @@ HISTORY_MESSAGE_IGNORE_TYPES = ['DeviceSelected', 'DeviceUnSelected', 'LinkSelected', 'LinkUnSelected', - 'Undo', - 'Redo', 'MouseEvent', 'MouseWheelEvent', 'KeyEvent'] -SPACING = 200 -RACK_SPACING = 50 - logger = logging.getLogger("awx.network_ui.consumers") @@ -51,209 +41,6 @@ class NetworkUIException(Exception): pass -def circular_layout(topology_id): - n = Device.objects.filter(topology_id=topology_id).count() - - r = 200 - if n > 0: - arc_radians = 2 * math.pi / n - else: - arc_radians = 2 * math.pi - - for i, device in enumerate(Device.objects.filter(topology_id=topology_id)): - device.x = math.cos(arc_radians * i + math.pi / 4) * r - device.y = math.sin(arc_radians * i + math.pi / 4) * r - device.save() - - send_snapshot(Group("topology-%s" % topology_id), topology_id) - - -def v_distance(graph, grid, device): - - d = 0 - for edge in graph['edges'][device]: - d += math.sqrt(math.pow(device.x - edge.x, 2) + math.pow(device.y - edge.y, 2)) - - return d - - -def reduce_distance(graph, grid): - - devices = graph['vertices'] - - def sum_distances(): - distances = {x: v_distance(graph, grid, x) for x in grid.keys()} - return sum(distances.values()) - - total_distance = sum_distances() - - for i in xrange(10000): - a = random.choice(devices) - b = random.choice(devices) - if a == b: - continue - else: - swap(grid, a, b) - place(grid, a) - place(grid, b) - new_total = sum_distances() - if new_total < total_distance: - print "New total", new_total - total_distance = new_total - a.save() - b.save() - else: - swap(grid, a, b) - place(grid, a) - place(grid, b) - - -def place(grid, device): - device.x = grid[device][1] * SPACING - device.y = grid[device][0] * SPACING - - -def swap(grid, a, b): - tmp = grid[a] - grid[a] = grid[b] - grid[b] = tmp - - -def grid_layout(topology_id): - n = Device.objects.filter(topology_id=topology_id).count() - - cols = rows = int(math.ceil(math.sqrt(n))) - - def device_seq_generator(): - for d in Device.objects.filter(topology_id=topology_id): - yield d - - device_seq = device_seq_generator() - - grid = {} - graph = dict(vertices=[], edges=defaultdict(list)) - - links = Link.objects.filter(Q(from_device__topology_id=topology_id) | - Q(to_device__topology_id=topology_id)) - - for l in links: - graph['edges'][l.from_device].append(l.to_device) - graph['edges'][l.to_device].append(l.from_device) - - for i in xrange(rows): - for j in xrange(cols): - try: - device = next(device_seq) - graph['vertices'].append(device) - grid[device] = (i, j) - place(grid, device) - device.save() - except StopIteration: - pass - - reduce_distance(graph, grid) - - send_snapshot(Group("topology-%s" % topology_id), topology_id) - - -def tier_layout(topology_id): - - devices = list(Device.objects.filter(topology_id=topology_id)) - device_map = {x.pk: x for x in devices} - links = Link.objects.filter(Q(from_device__topology_id=topology_id) | - Q(to_device__topology_id=topology_id)) - - def guess_role(devices): - - for device in devices: - if getattr(device, "role", None): - continue - if device.type == "host": - device.role = "host" - continue - if device.type == "switch": - if 'leaf' in device.name.lower(): - device.role = "leaf" - continue - if 'spine' in device.name.lower(): - device.role = "spine" - continue - device.role = "unknown" - - guess_role(devices) - - edges = defaultdict(set) - racks = [] - - for l in links: - edges[device_map[l.from_device.pk]].add(device_map[l.to_device.pk]) - edges[device_map[l.to_device.pk]].add(device_map[l.from_device.pk]) - - - similar_connections = defaultdict(list) - - for device, connections in edges.iteritems(): - similar_connections[tuple(connections)].append(device) - - - for connections, from_devices in similar_connections.iteritems(): - if len(from_devices) > 0 and from_devices[0].role == "host": - racks.append(from_devices) - - tiers = defaultdict(list) - - for device in devices: - if getattr(device, 'tier', None): - pass - elif device.role == "leaf": - device.tier = 1 - elif device.role == "spine": - device.tier = 2 - elif device.role == "host": - device.tier = 0 - else: - device.tier = 3 - tiers[device.tier].append(device) - - for rack in racks: - rack.sort(key=lambda x: x.name) - - racks.sort(key=lambda x: x[0].name) - - for tier in tiers.values(): - tier.sort(key=lambda x: x.name) - - for device in devices: - print device, getattr(device, 'tier', None) - if getattr(device, 'tier', None) is None: - device.y = 0 - device.x = 0 - else: - device.y = SPACING * 3 - device.tier * SPACING - device.x = 0 - (len(tiers[device.tier]) * SPACING) / 2 + tiers[device.tier].index(device) * SPACING - device.save() - - for j, rack in enumerate(racks): - x = 0 - (len(racks) * SPACING) / 2 + j * SPACING - for i, device in enumerate(rack): - device.x = x - device.y = SPACING * 3 + i * RACK_SPACING - device.save() - - send_snapshot(Group("topology-%s" % topology_id), topology_id) - - -def parse_topology_id(data): - topology_id = data.get('topology_id', ['null']) - try: - topology_id = int(topology_id[0]) - except ValueError: - topology_id = None - if not topology_id: - topology_id = None - return topology_id - - def parse_inventory_id(data): inventory_id = data.get('inventory_id', ['null']) try: @@ -276,7 +63,7 @@ class _Persistence(object): assert client_id is not None, "No client_id" data = json.loads(message['text']) if isinstance(data[1], list): - print "no sender" + logger.error("Message has no sender") return if isinstance(data[1], dict) and client_id != data[1].get('sender'): logger.error("client_id mismatch expected: %s actual %s", client_id, data[1].get('sender')) @@ -321,7 +108,6 @@ class _Persistence(object): id='id', host_id='host_id'), device) logger.info("Device %s", device) - print ("Device %s" % device) d, _ = Device.objects.get_or_create(topology_id=topology_id, id=device['id'], defaults=device) d.x = device['x'] d.y = device['y'] @@ -346,23 +132,6 @@ class _Persistence(object): def onDeviceLabelEdit(self, device, topology_id, client_id): Device.objects.filter(topology_id=topology_id, id=device['id']).update(name=device['name']) - for pk in Device.objects.filter(topology_id=topology_id, id=device['id']).values_list('pk', flat=True): - for db in DataBinding.objects.filter(primary_key_id=pk, - table="Device", - field="name").values('sheet__client_id', - 'sheet__name', - 'column', - 'row'): - message = ['TableCellEdit', dict(sender=0, - msg_type="TableCellEdit", - sheet=db['sheet__name'], - col=db['column'] + 1, - row=db['row'] + 2, - new_value=device['name'], - old_value=device['previous_name'])] - logger.info("Sending message %r", message) - Group("topology-%s-client-%s" % (topology_id, db['sheet__client_id'])).send({"text": json.dumps(message)}) - def onInterfaceLabelEdit(self, interface, topology_id, client_id): (Interface.objects @@ -457,12 +226,6 @@ class _Persistence(object): 'Ignore LinkSelected messages' pass - def onUndo(self, message_value, topology_id, client_id): - undo_persistence.handle(message_value['original_message'], topology_id, client_id) - - def onRedo(self, message_value, topology_id, client_id): - redo_persistence.handle(message_value['original_message'], topology_id, client_id) - def onMultipleMessage(self, message_value, topology_id, client_id): for message in message_value['messages']: handler = self.get_handler(message['msg_type']) @@ -471,12 +234,6 @@ class _Persistence(object): else: logger.warning("Unsupported message %s", message['msg_type']) - def onLayout(self, message_value, topology_id, client_id): - # circular_layout(topology_id) - # grid_layout(topology_id) - tier_layout(topology_id) - - def onCoverageRequest(self, coverage, topology_id, client_id): pass @@ -484,23 +241,15 @@ class _Persistence(object): xyz, _, rest = test_result['code_under_test'].partition('-') commits_since, _, commit_hash = rest.partition('-') commit_hash = commit_hash.strip('g') - - print (xyz) - print (commits_since) - print (commit_hash) x, y, z = [int(i) for i in xyz.split('.')] - print (x, y, z) - code_under_test, _ = CodeUnderTest.objects.get_or_create(version_x=x, version_y=y, version_z=z, commits_since=int(commits_since), commit_hash=commit_hash) - print (code_under_test) - tr = TestResult(id=test_result['id'], result_id=Result.objects.get(name=test_result['result']).pk, test_case_id=TestCase.objects.get(name=test_result['name']).pk, @@ -508,7 +257,6 @@ class _Persistence(object): client_id=client_id, time=parse_datetime(test_result['date'])) tr.save() - print (tr.pk) def onCoverage(self, coverage, topology_id, client_id): @@ -605,249 +353,6 @@ class _Persistence(object): persistence = _Persistence() -class _UndoPersistence(object): - - def handle(self, message, topology_id, client_id): - message_type = message[0] - message_value = message[1] - TopologyHistory.objects.filter(topology_id=topology_id, - client_id=message_value['sender'], - message_id=message_value['message_id']).update(undone=True) - handler = getattr(self, "on{0}".format(message_type), None) - if handler is not None: - handler(message_value, topology_id, client_id) - else: - logger.warning("Unsupported undo message %s", message_type) - - def onSnapshot(self, snapshot, topology_id, client_id): - pass - - def onDeviceCreate(self, device, topology_id, client_id): - persistence.onDeviceDestroy(device, topology_id, client_id) - - def onDeviceDestroy(self, device, topology_id, client_id): - inverted = device.copy() - inverted['type'] = device['previous_type'] - inverted['name'] = device['previous_name'] - inverted['x'] = device['previous_x'] - inverted['y'] = device['previous_y'] - persistence.onDeviceCreate(inverted, topology_id, client_id) - - def onDeviceMove(self, device, topology_id, client_id): - inverted = device.copy() - inverted['x'] = device['previous_x'] - inverted['y'] = device['previous_y'] - persistence.onDeviceMove(inverted, topology_id, client_id) - - def onDeviceLabelEdit(self, device, topology_id, client_id): - inverted = device.copy() - inverted['name'] = device['previous_name'] - persistence.onDeviceLabelEdit(inverted, topology_id, client_id) - - def onLinkCreate(self, link, topology_id, client_id): - persistence.onLinkDestroy(link, topology_id, client_id) - - def onLinkDestroy(self, link, topology_id, client_id): - persistence.onLinkCreate(link, topology_id, client_id) - - def onDeviceSelected(self, message_value, topology_id, client_id): - 'Ignore DeviceSelected messages' - pass - - def onDeviceUnSelected(self, message_value, topology_id, client_id): - 'Ignore DeviceSelected messages' - pass - - def onUndo(self, message_value, topology_id, client_id): - pass - - -undo_persistence = _UndoPersistence() - - -class _RedoPersistence(object): - - def handle(self, message, topology_id, client_id): - message_type = message[0] - message_value = message[1] - TopologyHistory.objects.filter(topology_id=topology_id, - client_id=message_value['sender'], - message_id=message_value['message_id']).update(undone=False) - handler_name = "on{0}".format(message_type) - handler = getattr(self, handler_name, getattr(persistence, handler_name, None)) - if handler is not None: - handler(message_value, topology_id, client_id) - else: - logger.warning("Unsupported redo message %s", message_type) - - def onDeviceSelected(self, message_value, topology_id, client_id): - 'Ignore DeviceSelected messages' - pass - - def onDeviceUnSelected(self, message_value, topology_id, client_id): - 'Ignore DeviceSelected messages' - pass - - def onUndo(self, message_value, topology_id, client_id): - 'Ignore Undo messages' - pass - - def onRedo(self, message_value, topology_id, client_id): - 'Ignore Redo messages' - pass - - -redo_persistence = _RedoPersistence() - - -class _Discovery(object): - - def handle(self, message): - topology_id = message.get('topology') - data = json.loads(message['text']) - message_type = data[0] - message_value = data[1] - handler = self.get_handler(message_type) - if handler is not None: - handler(message_value, topology_id) - else: - logger.warning("Unsupported discovery message %s", message_type) - - def get_handler(self, message_type): - return getattr(self, "on{0}".format(message_type), None) - - def onFacts(self, message, topology_id): - send_updates = False - logger.info("onFacts message key %s", message['key']) - #logger.info("onFacts message %s", pformat(message)) - device_name = message['key'] - updates = MultipleMessage('MultipleMessage', []) - try: - device = Device.objects.get(topology_id=topology_id, name=device_name) - except ObjectDoesNotExist: - logger.info("onFacts Could not find %s in topology %s", device_name, topology_id) - return - - try: - interfaces = dpath.util.get(message, '/value/ansible_net_neighbors') - logger.info(pformat(interfaces)) - except KeyError: - interfaces = {} - logger.info("onFacts %s: ", pformat(interfaces)) - """ - ansible_net_neighbors example: - {u'eth1': [{u'host': u'Spine1', u'port': u'eth3'}], - u'eth2': [{u'host': u'Spine2', u'port': u'eth3'}], - u'eth3': [{u'host': u'Host2', u'port': u'eth1'}]} - """ - for interface_name, neighbors in interfaces.iteritems(): - logger.info("interface_name %s neighbors %s", interface_name, neighbors) - interface, created = Interface.objects.get_or_create(device_id=device.pk, - name=interface_name, - defaults=dict(id=0)) - if created: - interface.id = interface.pk - interface.save() - updates.messages.append(InterfaceCreate('InterfaceCreate', - 0, - interface.device.id, - interface.id, - interface.name)) - send_updates = True - logger.info("Created interface %s", interface) - - - for neighbor in neighbors: - logger.info("neighbor %s", neighbor) - connected_interface = None - connected_device = None - neighbor_name = neighbor.get('host') - if not neighbor_name: - continue - try: - connected_device = Device.objects.get(topology_id=topology_id, name=neighbor_name) - except ObjectDoesNotExist: - continue - - logger.info("neighbor %s %s", neighbor_name, connected_device.pk) - - remote_interface_name = neighbor.get('port') - - connected_interface, created = Interface.objects.get_or_create(device_id=connected_device.pk, - name=remote_interface_name, - defaults=dict(id=0)) - if created: - connected_interface.id = connected_interface.pk - connected_interface.save() - updates.messages.append(InterfaceCreate('InterfaceCreate', - 0, - connected_interface.device.id, - connected_interface.id, - connected_interface.name)) - logger.info("Created interface %s", connected_interface) - send_updates = True - - if connected_device and connected_interface: - exists = Link.objects.filter(Q(from_device_id=device.pk, - to_device_id=connected_device.pk, - from_interface_id=interface.pk, - to_interface_id=connected_interface.pk) | - Q(from_device_id=connected_device.pk, - to_device_id=device.pk, - from_interface_id=connected_interface.pk, - to_interface_id=interface.pk)).count() > 0 - if not exists: - link = Link(from_device_id=device.pk, - to_device_id=connected_device.pk, - from_interface_id=interface.pk, - to_interface_id=connected_interface.pk, - id=0) - - link.save() - link.id = link.pk - link.save() - updates.messages.append(LinkCreate('LinkCreate', - 0, - link.id, - link.name, - link.from_device.id, - link.to_device.id, - link.from_interface.id, - link.to_interface.id)) - logger.info("Created link %s", link) - send_updates = True - - if send_updates: - logger.info("onFacts send_updates") - channel = Group("topology-%s" % topology_id) - channel.send({"text": json.dumps([updates.msg_type, to_dict(updates)])}) - - -discovery = _Discovery() - -# Ansible Connection Events - - -@channel_session -def ansible_connect(message): - data = urlparse.parse_qs(message.content['query_string']) - topology_id = parse_topology_id(data) - message.channel_session['topology_id'] = topology_id - - -@channel_session -def ansible_message(message): - # Channel('console_printer').send({"text": message['text']}) - Group("topology-%s" % message.channel_session['topology_id']).send({"text": message['text']}) - Channel('discovery').send({"text": message['text'], - "topology": message.channel_session['topology_id']}) - - -@channel_session -def ansible_disconnect(message): - pass - - # UI Channel Events @channel_session @@ -856,11 +361,9 @@ def ws_connect(message): data = urlparse.parse_qs(message.content['query_string']) inventory_id = parse_inventory_id(data) topology_ids = list(TopologyInventory.objects.filter(inventory_id=inventory_id).values_list('topology_id', flat=True)) - print ("topology_ids", topology_ids) topology_id = 0 if len(topology_ids) > 0: topology_id = topology_ids[0] - print ("topology_id", topology_id) if topology_id: topology = Topology.objects.get(topology_id=topology_id) else: @@ -977,8 +480,6 @@ def send_history(channel, topology_id): @channel_session def ws_message(message): - # Send to debug printer - # Channel('console_printer').send({"text": message['text']}) # Send to all clients editing the topology Group("topology-%s" % message.channel_session['topology_id']).send({"text": message['text']}) # Send to persistence handler @@ -992,208 +493,3 @@ def ws_disconnect(message): if 'topology_id' in message.channel_session: Group("topology-%s" % message.channel_session['topology_id']).discard(message.reply_channel) - -def console_printer(message): - print message['text'] # pragma: no cover - -# Tester channel events - - -@channel_session -def tester_connect(message): - data = urlparse.parse_qs(message.content['query_string']) - topology_id = parse_topology_id(data) - message.channel_session['topology_id'] = topology_id - client = Client() - client.save() - message.channel_session['client_id'] = client.pk - message.reply_channel.send({"text": json.dumps(["id", client.pk])}) - message.reply_channel.send({"text": json.dumps(["topology_id", topology_id])}) - - -@channel_session -def tester_message(message): - # Channel('console_printer').send({"text": message['text']}) - Group("topology-%s" % message.channel_session['topology_id']).send({"text": message['text']}) - Channel('persistence').send({"text": message['text'], - "topology": message.channel_session['topology_id'], - "client": message.channel_session['client_id']}) - - -@channel_session -def tester_disconnect(message): - pass - -# Tables UI channel events - - -def make_sheet(data, column_headers=[]): - - sheet = [] - - if len(data): - n_columns = max([len(x) for x in data]) - 1 - else: - n_columns = 0 - - row_i = 0 - sheet.append([dict(value=x, editable=False) for x in list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")[0:n_columns]]) - row_i += 1 - if column_headers: - sheet.append([dict(value=row_i, editable=False)] + [dict(value=x, editable=False) for x in column_headers]) - row_i += 1 - for row in data: - sheet_row = [dict(value=row_i, editable=False)] - row_i += 1 - sheet_row.extend([dict(value=x, editable=True, col=i, row=row_i) for i, x in enumerate(row[1:])]) - sheet.append(sheet_row) - return sheet - - - -def make_bindings(sheet_id, klass, filter_q, values_list, order_by): - - values_list = ['pk'] + values_list - data = list(klass.objects.filter(**filter_q).values_list(*values_list).order_by(*order_by)) - - data_types = set() - - for row in data: - for cell in row: - data_types.add(type(cell).__name__) - - data_type_map = dict() - - logger.info(repr(data_types)) - - for dt in list(data_types): - data_type_map[dt] = DataType.objects.get_or_create(type_name=dt)[0].pk - - logger.info(repr(data_type_map)) - - bindings = [] - - for row_i, row in enumerate(data): - pk = row[0] - for col_i, cell in enumerate(row[1:]): - field = values_list[col_i + 1] - if '__' in field: - continue - logger.info("make_bindings %s %s %s %s %s %s %s", sheet_id, klass.__name__, pk, col_i, row_i, field, data_type_map[type(cell).__name__]) - bindings.append(DataBinding.objects.get_or_create(sheet_id=sheet_id, - column=col_i, - row=row_i, - table=klass.__name__, - primary_key_id=pk, - field=field, - data_type_id=data_type_map[type(cell).__name__])[0]) - return data - - - -@channel_session -def tables_connect(message): - data = urlparse.parse_qs(message.content['query_string']) - topology_id = parse_topology_id(data) - message.channel_session['topology_id'] = topology_id - client = Client() - client.save() - Group("topology-%s-client-%s" % (topology_id, client.pk)).add(message.reply_channel) - message.channel_session['client_id'] = client.pk - message.reply_channel.send({"text": json.dumps(["id", client.pk])}) - message.reply_channel.send({"text": json.dumps(["topology_id", topology_id])}) - - device_sheet, _ = DataSheet.objects.get_or_create(topology_id=topology_id, client_id=client.pk, name="Devices") - data = make_bindings(device_sheet.pk, Device, dict(topology_id=topology_id), ['name'], ['name']) - message.reply_channel.send({"text": json.dumps(["sheet", dict(name="Devices", data=make_sheet(data, ['Device Name']))])}) - - interface_sheet, _ = DataSheet.objects.get_or_create(topology_id=topology_id, client_id=client.pk, name="Interfaces") - data = make_bindings(interface_sheet.pk, Interface, dict(device__topology_id=topology_id), ['device__name', 'name'], ['device__name', 'name']) - message.reply_channel.send({"text": json.dumps(["sheet", dict(name="Interfaces", data=make_sheet(data, ['Device Name', 'Interface Name']))])}) - - group_sheet, _ = DataSheet.objects.get_or_create(topology_id=topology_id, client_id=client.pk, name="Groups") - data = make_bindings(group_sheet.pk, DeviceGroup, dict(topology_id=topology_id), ['name'], ['name']) - message.reply_channel.send({"text": json.dumps(["sheet", dict(name="Groups", data=make_sheet(data, ['Group Name']))])}) - - -def device_label_edit(o): - d = transform_dict(dict(name='name', - id='id', - old_value='previous_name'), o.__dict__) - d['msg_type'] = 'DeviceLabelEdit' - return ['DeviceLabelEdit', d] - - -def group_label_edit(o): - d = transform_dict(dict(name='name', - id='id', - old_value='previous_name'), o.__dict__) - d['msg_type'] = 'GroupLabelEdit' - return ['GroupLabelEdit', d] - - -def interface_label_edit(o): - d = o.__dict__ - d['device_id'] = o.device.id - d = transform_dict(dict(name='name', - id='id', - device_id='device_id', - old_value='previous_name'), o.__dict__) - d['msg_type'] = 'InterfaceLabelEdit' - return ['InterfaceLabelEdit', d] - - -@channel_session -def tables_message(message): - data = json.loads(message['text']) - logger.info(data[0]) - logger.info(data[1]) - - data_type_mapping = {'unicode': unicode, - 'int': int} - - - table_mapping = {'Device': Device, - 'Interface': Interface, - 'Group': DeviceGroup} - - - transformation_mapping = {('Device', 'name'): device_label_edit, - ('Interface', 'name'): interface_label_edit, - ('Group', 'name'): group_label_edit} - - - if data[0] == "TableCellEdit": - - topology_id = message.channel_session['topology_id'] - group_channel = Group("topology-%s" % topology_id) - client_id = message.channel_session['client_id'] - data_sheet = DataSheet.objects.get(topology_id=topology_id, client_id=client_id, name=data[1]['sheet']).pk - logger.info("DataSheet %s", data_sheet) - - data_bindings = DataBinding.objects.filter(sheet_id=data_sheet, - column=data[1]['col'] - 1, - row=data[1]['row'] - 2) - - logger.info("Found %s bindings", data_bindings.count()) - logger.info(repr(data_bindings.values('table', 'data_type__type_name', 'field', 'primary_key_id'))) - - for table, data_type, field, pk in data_bindings.values_list('table', 'data_type__type_name', 'field', 'primary_key_id'): - new_value = data_type_mapping[data_type](data[1]['new_value']) - old_value = data_type_mapping[data_type](data[1]['old_value']) - logger.info("Updating %s", table_mapping[table].objects.filter(pk=pk).values()) - table_mapping[table].objects.filter(pk=pk).update(**{field: new_value}) - logger.info("Updated %s", table_mapping[table].objects.filter(pk=pk).count()) - - for o in table_mapping[table].objects.filter(pk=pk): - o.old_value = old_value - message = transformation_mapping[(table, field)](o) - message[1]['sender'] = 0 - logger.info("Sending %r", message) - group_channel.send({"text": json.dumps(message)}) - - - -@channel_session -def tables_disconnect(message): - pass diff --git a/awx/network_ui/designs/new.yml b/awx/network_ui/designs/new.yml deleted file mode 100644 index 5a9d7b6a5d..0000000000 --- a/awx/network_ui/designs/new.yml +++ /dev/null @@ -1,526 +0,0 @@ -app: awx.network_ui -external_models: [] -models: -- api: true - display: name - fields: - - name: device_id - pk: true - type: AutoField - - name: topology - ref: Topology - ref_field: topology_id - type: ForeignKey - - len: 200 - name: name - type: CharField - - name: x - type: IntegerField - - name: y - type: IntegerField - - name: id - type: IntegerField - - len: 200 - name: type - type: CharField - - default: 0 - name: interface_id_seq - type: IntegerField - - default: 0 - name: process_id_seq - type: IntegerField - - default: 0 - name: host_id - type: IntegerField - name: Device - topology_id_query: topology_id - x: 348 - y: 124 -- api: true - create_transform: - from_device__id: from_device_id - from_interface__id: from_interface_id - id: id - name: name - to_device__id: to_device_id - to_interface__id: to_interface_id - fields: - - name: link_id - pk: true - type: AutoField - - name: from_device - ref: Device - ref_field: device_id - related_name: from_link - type: ForeignKey - - name: to_device - ref: Device - ref_field: device_id - related_name: to_link - type: ForeignKey - - name: from_interface - ref: Interface - ref_field: interface_id - related_name: from_link - type: ForeignKey - - name: to_interface - ref: Interface - ref_field: interface_id - related_name: to_link - type: ForeignKey - - name: id - type: IntegerField - - len: 200 - name: name - type: CharField - name: Link - topology_id_query: from_device__topology_id - x: 837 - y: 10 -- api: true - display: name - fields: - - name: topology_id - pk: true - type: AutoField - - len: 200 - name: name - type: CharField - - name: scale - type: FloatField - - name: panX - type: FloatField - - name: panY - type: FloatField - - default: 0 - name: device_id_seq - type: IntegerField - - default: 0 - name: link_id_seq - type: IntegerField - - default: 0 - name: group_id_seq - type: IntegerField - - default: 0 - name: stream_id_seq - type: IntegerField - name: Topology - topology_id_query: topology_id - x: 111 - y: 127 -- fields: - - name: client_id - pk: true - type: AutoField - name: Client - x: -518 - y: 138 -- fields: - - name: topology_history_id - pk: true - type: AutoField - - name: topology - ref: Topology - ref_field: topology_id - type: ForeignKey - - name: client - ref: Client - ref_field: client_id - type: ForeignKey - - name: message_type - ref: MessageType - ref_field: message_type_id - type: ForeignKey - - name: message_id - type: IntegerField - - name: message_data - type: TextField - - default: false - name: undone - type: BooleanField - name: TopologyHistory - x: -205 - y: 282 -- display: name - fields: - - name: message_type_id - pk: true - type: AutoField - - len: 200 - name: name - type: CharField - name: MessageType - x: -501 - y: 428 -- api: true - create_transform: - device__id: device_id - id: id - name: name - display: name - fields: - - name: interface_id - pk: true - type: AutoField - - name: device - ref: Device - ref_field: device_id - type: ForeignKey - - len: 200 - name: name - type: CharField - - name: id - type: IntegerField - name: Interface - topology_id_query: device__topology_id - x: 1157 - y: 337 -- api: true - fields: - - name: group_id - pk: true - type: AutoField - - name: id - type: IntegerField - - len: 200 - name: name - type: CharField - - name: x1 - type: IntegerField - - name: y1 - type: IntegerField - - name: x2 - type: IntegerField - - name: y2 - type: IntegerField - - name: topology - ref: Topology - ref_field: topology_id - type: ForeignKey - - len: 200 - name: type - type: CharField - name: Group - topology_id_query: topology_id - x: 407 - y: -379 -- api: true - fields: - - name: group_device_id - pk: true - type: AutoField - - name: group - ref: Group - ref_field: group_id - type: ForeignKey - - name: device - ref: Device - ref_field: device_id - type: ForeignKey - name: GroupDevice - topology_id_query: group__topology_id - x: 739 - y: -234 -- fields: - - name: data_binding_id - pk: true - type: AutoField - - name: column - type: IntegerField - - name: row - type: IntegerField - - len: 200 - name: table - type: CharField - - name: primary_key_id - type: IntegerField - - len: 200 - name: field - type: CharField - - name: data_type - ref: DataType - ref_field: data_type_id - type: ForeignKey - - name: sheet - ref: DataSheet - ref_field: data_sheet_id - type: ForeignKey - name: DataBinding - x: -515 - y: -370 -- fields: - - name: data_type_id - pk: true - type: AutoField - - len: 200 - name: type_name - type: CharField - name: DataType - x: -782 - y: -172 -- fields: - - name: data_sheet_id - pk: true - type: AutoField - - len: 200 - name: name - type: CharField - - name: topology - ref: Topology - ref_field: topology_id - type: ForeignKey - - name: client - ref: Client - ref_field: client_id - type: ForeignKey - name: DataSheet - x: -207 - y: -282 -- api: true - fields: - - name: stream_id - pk: true - ref: Stream - ref_field: stream_id - type: AutoField - - name: from_device - ref: Device - ref_field: device_id - related_name: from_stream - type: ForeignKey - - name: to_device - ref: Device - ref_field: device_id - related_name: to_stream - type: ForeignKey - - len: 200 - name: label - type: CharField - - default: 0 - name: id - type: IntegerField - name: Stream - topology_id_query: from_device__topology_id - x: 709 - y: 527 -- api: true - fields: - - name: process_id - pk: true - type: AutoField - - name: device - ref: Device - ref_field: device_id - type: ForeignKey - - len: 200 - name: name - type: CharField - - len: 200 - name: type - type: CharField - - default: 0 - name: id - type: IntegerField - name: Process - topology_id_query: device__topology_id - x: 654 - y: 778 -- api: true - fields: - - name: toolbox_id - pk: true - type: AutoField - - len: 200 - name: name - type: CharField - name: Toolbox - x: 179 - y: 644 -- api: true - fields: - - name: toolbox_item_id - pk: true - type: AutoField - - name: toolbox - ref: Toolbox - ref_field: toolbox_id - type: ForeignKey - - name: data - type: TextField - name: ToolboxItem - x: 391 - y: 645 -- fields: - - name: fsm_trace_id - pk: true - type: AutoField - - len: 200 - name: fsm_name - type: CharField - - len: 200 - name: from_state - type: CharField - - len: 200 - name: to_state - type: CharField - - len: 200 - name: message_type - type: CharField - - name: client - ref: Client - ref_field: client_id - type: ForeignKey - - default: 0 - name: trace_session_id - type: IntegerField - - default: 0 - name: order - type: IntegerField - name: FSMTrace - x: -872 - y: 507 -- api: true - fields: - - name: topology_inventory_id - pk: true - type: AutoField - - name: topology - ref: Topology - ref_field: topology_id - type: ForeignKey - - name: inventory_id - type: IntegerField - name: TopologyInventory - topology_id_query: topology_id - x: -226 - y: -19 -- fields: - - name: event_trace_id - pk: true - type: AutoField - - name: client - ref: Client - ref_field: client_id - type: ForeignKey - - default: 0 - name: trace_session_id - type: IntegerField - - name: event_data - type: TextField - - name: message_id - type: IntegerField - name: EventTrace - x: -1087 - y: 202 -- fields: - - name: coverage_id - pk: true - type: AutoField - - name: coverage_data - type: TextField - - name: test_result - ref: TestResult - ref_field: test_result_id - type: ForeignKey - name: Coverage - x: -1068 - y: -4 -- fields: - - name: topology_snapshot_id - pk: true - type: AutoField - - name: client - ref: Client - ref_field: client_id - type: ForeignKey - - name: topology_id - type: IntegerField - - name: trace_session_id - type: IntegerField - - name: snapshot_data - ref: TopologySnapshot - ref_field: snapshot_data - type: TextField - - name: order - type: IntegerField - name: TopologySnapshot - x: -1123 - y: -277 -- fields: - - name: test_case_id - pk: true - type: AutoField - - len: 200 - name: name - ref: TestCase - ref_field: name - type: CharField - - name: test_case_data - type: TextField - name: TestCase - x: -1642 - y: -38 -- fields: - - name: result_id - pk: true - type: AutoField - - len: 20 - name: name - type: CharField - name: Result - x: -1610 - y: 120 -- fields: - - name: code_under_test_id - pk: true - ref: CodeUnderTest - ref_field: code_under_test_id - type: AutoField - - name: version_x - type: IntegerField - - name: version_y - type: IntegerField - - name: version_z - type: IntegerField - - name: commits_since - type: IntegerField - - len: 40 - name: commit_hash - type: CharField - name: CodeUnderTest - x: -1612 - y: 259 -- fields: - - name: test_result_id - pk: true - type: AutoField - - name: test_case - ref: TestCase - ref_field: test_case_id - type: ForeignKey - - name: result - ref: Result - ref_field: result_id - type: ForeignKey - - name: code_under_test - ref: CodeUnderTest - ref_field: code_under_test_id - type: ForeignKey - - name: time - type: DateTimeField - - default: 0 - name: id - type: IntegerField - - name: client - ref: Client - ref_field: client_id - type: ForeignKey - name: TestResult - x: -1336 - y: -49 -modules: [] -view: - panX: 213.729555519212 - panY: 189.446959094643 - scaleXY: 0.69 - diff --git a/awx/network_ui/library/create_device.py b/awx/network_ui/library/create_device.py deleted file mode 100644 index 34f7792833..0000000000 --- a/awx/network_ui/library/create_device.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_device diff --git a/awx/network_ui/library/create_group.py b/awx/network_ui/library/create_group.py deleted file mode 100644 index 09c27c2ee9..0000000000 --- a/awx/network_ui/library/create_group.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_group diff --git a/awx/network_ui/library/create_groupdevice.py b/awx/network_ui/library/create_groupdevice.py deleted file mode 100644 index dd266b3637..0000000000 --- a/awx/network_ui/library/create_groupdevice.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_groupdevice diff --git a/awx/network_ui/library/create_interface.py b/awx/network_ui/library/create_interface.py deleted file mode 100644 index 5a70ff6b9c..0000000000 --- a/awx/network_ui/library/create_interface.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_interface diff --git a/awx/network_ui/library/create_link.py b/awx/network_ui/library/create_link.py deleted file mode 100644 index ed86ae23fb..0000000000 --- a/awx/network_ui/library/create_link.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_link diff --git a/awx/network_ui/library/create_process.py b/awx/network_ui/library/create_process.py deleted file mode 100644 index 7067949e65..0000000000 --- a/awx/network_ui/library/create_process.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_process diff --git a/awx/network_ui/library/create_stream.py b/awx/network_ui/library/create_stream.py deleted file mode 100644 index a0ada8530e..0000000000 --- a/awx/network_ui/library/create_stream.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_stream diff --git a/awx/network_ui/library/create_toolbox.py b/awx/network_ui/library/create_toolbox.py deleted file mode 100644 index badd71fd8f..0000000000 --- a/awx/network_ui/library/create_toolbox.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_toolbox diff --git a/awx/network_ui/library/create_toolboxitem.py b/awx/network_ui/library/create_toolboxitem.py deleted file mode 100644 index 64461a9658..0000000000 --- a/awx/network_ui/library/create_toolboxitem.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_toolboxitem diff --git a/awx/network_ui/library/create_topology.py b/awx/network_ui/library/create_topology.py deleted file mode 100644 index a97827f3ef..0000000000 --- a/awx/network_ui/library/create_topology.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_topology diff --git a/awx/network_ui/library/create_topologyinventory.py b/awx/network_ui/library/create_topologyinventory.py deleted file mode 100644 index 645fa571de..0000000000 --- a/awx/network_ui/library/create_topologyinventory.py +++ /dev/null @@ -1 +0,0 @@ -#---- create_topologyinventory diff --git a/awx/network_ui/library/delete_device.py b/awx/network_ui/library/delete_device.py deleted file mode 100644 index 103053cc00..0000000000 --- a/awx/network_ui/library/delete_device.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_device diff --git a/awx/network_ui/library/delete_group.py b/awx/network_ui/library/delete_group.py deleted file mode 100644 index eba6b41a34..0000000000 --- a/awx/network_ui/library/delete_group.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_group diff --git a/awx/network_ui/library/delete_groupdevice.py b/awx/network_ui/library/delete_groupdevice.py deleted file mode 100644 index 6feed31553..0000000000 --- a/awx/network_ui/library/delete_groupdevice.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_groupdevice diff --git a/awx/network_ui/library/delete_interface.py b/awx/network_ui/library/delete_interface.py deleted file mode 100644 index 900738e244..0000000000 --- a/awx/network_ui/library/delete_interface.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_interface diff --git a/awx/network_ui/library/delete_link.py b/awx/network_ui/library/delete_link.py deleted file mode 100644 index 7f4652a096..0000000000 --- a/awx/network_ui/library/delete_link.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_link diff --git a/awx/network_ui/library/delete_process.py b/awx/network_ui/library/delete_process.py deleted file mode 100644 index 660d99ccd6..0000000000 --- a/awx/network_ui/library/delete_process.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_process diff --git a/awx/network_ui/library/delete_stream.py b/awx/network_ui/library/delete_stream.py deleted file mode 100644 index f0ed0d38b6..0000000000 --- a/awx/network_ui/library/delete_stream.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_stream diff --git a/awx/network_ui/library/delete_toolbox.py b/awx/network_ui/library/delete_toolbox.py deleted file mode 100644 index 692cfdfd92..0000000000 --- a/awx/network_ui/library/delete_toolbox.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_toolbox diff --git a/awx/network_ui/library/delete_toolboxitem.py b/awx/network_ui/library/delete_toolboxitem.py deleted file mode 100644 index 3c563f6fde..0000000000 --- a/awx/network_ui/library/delete_toolboxitem.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_toolboxitem diff --git a/awx/network_ui/library/delete_topology.py b/awx/network_ui/library/delete_topology.py deleted file mode 100644 index c03c00ab8e..0000000000 --- a/awx/network_ui/library/delete_topology.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_topology diff --git a/awx/network_ui/library/delete_topologyinventory.py b/awx/network_ui/library/delete_topologyinventory.py deleted file mode 100644 index 122e2d9308..0000000000 --- a/awx/network_ui/library/delete_topologyinventory.py +++ /dev/null @@ -1 +0,0 @@ -#---- delete_topologyinventory diff --git a/awx/network_ui/library/get_device.py b/awx/network_ui/library/get_device.py deleted file mode 100644 index f20d5e382a..0000000000 --- a/awx/network_ui/library/get_device.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_device diff --git a/awx/network_ui/library/get_group.py b/awx/network_ui/library/get_group.py deleted file mode 100644 index 13a90acc49..0000000000 --- a/awx/network_ui/library/get_group.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_group diff --git a/awx/network_ui/library/get_groupdevice.py b/awx/network_ui/library/get_groupdevice.py deleted file mode 100644 index a363cae561..0000000000 --- a/awx/network_ui/library/get_groupdevice.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_groupdevice diff --git a/awx/network_ui/library/get_interface.py b/awx/network_ui/library/get_interface.py deleted file mode 100644 index 4a87baec12..0000000000 --- a/awx/network_ui/library/get_interface.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_interface diff --git a/awx/network_ui/library/get_link.py b/awx/network_ui/library/get_link.py deleted file mode 100644 index ba23e6ee22..0000000000 --- a/awx/network_ui/library/get_link.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_link diff --git a/awx/network_ui/library/get_process.py b/awx/network_ui/library/get_process.py deleted file mode 100644 index 9d1114800a..0000000000 --- a/awx/network_ui/library/get_process.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_process diff --git a/awx/network_ui/library/get_stream.py b/awx/network_ui/library/get_stream.py deleted file mode 100644 index 9fac49ea69..0000000000 --- a/awx/network_ui/library/get_stream.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_stream diff --git a/awx/network_ui/library/get_toolbox.py b/awx/network_ui/library/get_toolbox.py deleted file mode 100644 index 49de524e87..0000000000 --- a/awx/network_ui/library/get_toolbox.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_toolbox diff --git a/awx/network_ui/library/get_toolboxitem.py b/awx/network_ui/library/get_toolboxitem.py deleted file mode 100644 index 902ab5f3b3..0000000000 --- a/awx/network_ui/library/get_toolboxitem.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_toolboxitem diff --git a/awx/network_ui/library/get_topology.py b/awx/network_ui/library/get_topology.py deleted file mode 100644 index 39e2001122..0000000000 --- a/awx/network_ui/library/get_topology.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_topology diff --git a/awx/network_ui/library/get_topologyinventory.py b/awx/network_ui/library/get_topologyinventory.py deleted file mode 100644 index 29bc467319..0000000000 --- a/awx/network_ui/library/get_topologyinventory.py +++ /dev/null @@ -1 +0,0 @@ -#---- get_topologyinventory diff --git a/awx/network_ui/library/list_device.py b/awx/network_ui/library/list_device.py deleted file mode 100644 index 4aab317163..0000000000 --- a/awx/network_ui/library/list_device.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_device diff --git a/awx/network_ui/library/list_group.py b/awx/network_ui/library/list_group.py deleted file mode 100644 index 64bc2eaa16..0000000000 --- a/awx/network_ui/library/list_group.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_group diff --git a/awx/network_ui/library/list_groupdevice.py b/awx/network_ui/library/list_groupdevice.py deleted file mode 100644 index ba64ddd645..0000000000 --- a/awx/network_ui/library/list_groupdevice.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_groupdevice diff --git a/awx/network_ui/library/list_interface.py b/awx/network_ui/library/list_interface.py deleted file mode 100644 index cb99605c21..0000000000 --- a/awx/network_ui/library/list_interface.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_interface diff --git a/awx/network_ui/library/list_link.py b/awx/network_ui/library/list_link.py deleted file mode 100644 index d2eae1db34..0000000000 --- a/awx/network_ui/library/list_link.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_link diff --git a/awx/network_ui/library/list_process.py b/awx/network_ui/library/list_process.py deleted file mode 100644 index 9937b17745..0000000000 --- a/awx/network_ui/library/list_process.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_process diff --git a/awx/network_ui/library/list_stream.py b/awx/network_ui/library/list_stream.py deleted file mode 100644 index 877916333d..0000000000 --- a/awx/network_ui/library/list_stream.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_stream diff --git a/awx/network_ui/library/list_toolbox.py b/awx/network_ui/library/list_toolbox.py deleted file mode 100644 index 7300e93a6a..0000000000 --- a/awx/network_ui/library/list_toolbox.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_toolbox diff --git a/awx/network_ui/library/list_toolboxitem.py b/awx/network_ui/library/list_toolboxitem.py deleted file mode 100644 index c3fcaf76f7..0000000000 --- a/awx/network_ui/library/list_toolboxitem.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_toolboxitem diff --git a/awx/network_ui/library/list_topology.py b/awx/network_ui/library/list_topology.py deleted file mode 100644 index 67cba0597b..0000000000 --- a/awx/network_ui/library/list_topology.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_topology diff --git a/awx/network_ui/library/list_topologyinventory.py b/awx/network_ui/library/list_topologyinventory.py deleted file mode 100644 index 28d71c5238..0000000000 --- a/awx/network_ui/library/list_topologyinventory.py +++ /dev/null @@ -1 +0,0 @@ -#---- list_topologyinventory diff --git a/awx/network_ui/library/update_device.py b/awx/network_ui/library/update_device.py deleted file mode 100644 index 5de28bc420..0000000000 --- a/awx/network_ui/library/update_device.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_device diff --git a/awx/network_ui/library/update_group.py b/awx/network_ui/library/update_group.py deleted file mode 100644 index 7e0ee1a677..0000000000 --- a/awx/network_ui/library/update_group.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_group diff --git a/awx/network_ui/library/update_groupdevice.py b/awx/network_ui/library/update_groupdevice.py deleted file mode 100644 index 8344403589..0000000000 --- a/awx/network_ui/library/update_groupdevice.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_groupdevice diff --git a/awx/network_ui/library/update_interface.py b/awx/network_ui/library/update_interface.py deleted file mode 100644 index d5460ceccc..0000000000 --- a/awx/network_ui/library/update_interface.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_interface diff --git a/awx/network_ui/library/update_link.py b/awx/network_ui/library/update_link.py deleted file mode 100644 index a37cebd2a3..0000000000 --- a/awx/network_ui/library/update_link.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_link diff --git a/awx/network_ui/library/update_process.py b/awx/network_ui/library/update_process.py deleted file mode 100644 index 6d26267aa2..0000000000 --- a/awx/network_ui/library/update_process.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_process diff --git a/awx/network_ui/library/update_stream.py b/awx/network_ui/library/update_stream.py deleted file mode 100644 index 1563ab1d4b..0000000000 --- a/awx/network_ui/library/update_stream.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_stream diff --git a/awx/network_ui/library/update_toolbox.py b/awx/network_ui/library/update_toolbox.py deleted file mode 100644 index 8d493f9f71..0000000000 --- a/awx/network_ui/library/update_toolbox.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_toolbox diff --git a/awx/network_ui/library/update_toolboxitem.py b/awx/network_ui/library/update_toolboxitem.py deleted file mode 100644 index b9d900160c..0000000000 --- a/awx/network_ui/library/update_toolboxitem.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_toolboxitem diff --git a/awx/network_ui/library/update_topology.py b/awx/network_ui/library/update_topology.py deleted file mode 100644 index 53cfef06e9..0000000000 --- a/awx/network_ui/library/update_topology.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_topology diff --git a/awx/network_ui/library/update_topologyinventory.py b/awx/network_ui/library/update_topologyinventory.py deleted file mode 100644 index 09f7956ebc..0000000000 --- a/awx/network_ui/library/update_topologyinventory.py +++ /dev/null @@ -1 +0,0 @@ -#---- update_topologyinventory diff --git a/awx/network_ui/management/__init__.py b/awx/network_ui/management/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/awx/network_ui/management/commands/__init__.py b/awx/network_ui/management/commands/__init__.py deleted file mode 100644 index ebed9407c5..0000000000 --- a/awx/network_ui/management/commands/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc - diff --git a/awx/network_ui/management/commands/create_2_tier_clos_test_topology.py b/awx/network_ui/management/commands/create_2_tier_clos_test_topology.py deleted file mode 100644 index e558b1a2f2..0000000000 --- a/awx/network_ui/management/commands/create_2_tier_clos_test_topology.py +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc -from django.core.management.base import BaseCommand -from awx.network_ui.models import Topology, Device, Link, Interface - -from collections import defaultdict -from .util import natural_numbers - - -class Command(BaseCommand): - help = '''Adds a 2 tier clos topology with n nodes in the 1st tier and m nodes - in the 2nd tier and h hosts per pair of switches to the topology with id `id`''' - - def add_arguments(self, parser): - parser.add_argument('id', type=int) - parser.add_argument('n', type=int) - parser.add_argument('m', type=int) - parser.add_argument('h', type=int) - - def handle(self, *args, **options): - - topology_id = options['id'] - n = options['n'] - m = options['m'] - h = options['h'] - - print "n", n - print "m", m - - topology = Topology.objects.get(pk=topology_id) - - devices = [] - hosts_per_leaf = [] - leaves = [] - spines = [] - - id_seq = natural_numbers(topology.device_id_seq) - link_id_seq = natural_numbers(topology.link_id_seq) - - tier2 = 100 - tier1 = 500 - tier0 = 900 - spacing = 200 - - tier2_centering = ((n - m) * 200) / 2 - - for i in xrange(n): - device = Device(name="Leaf{0}".format(i), - x=i * spacing, - y=tier1, - id=next(id_seq), - type="switch", - topology_id=topology.pk) - devices.append(device) - leaves.append(device) - - for i in xrange(m): - device = Device(name="Spine{0}".format(i), - x=(i * spacing) + tier2_centering, - y=tier2, - id=next(id_seq), - type="switch", - topology_id=topology.pk) - devices.append(device) - spines.append(device) - - for i in xrange(n / 2): - hosts = [] - for j in xrange(h): - device = Device(name="Host{0}-{1}".format(i, j), - x=(i * 2 * spacing) + spacing / 2, - y=tier0 + (j * 40), - id=next(id_seq), - type="host", - topology_id=topology.pk) - devices.append(device) - hosts.append(device) - hosts_per_leaf.append(hosts) - - print "leaves", leaves - print "spines", spines - print "hosts_per_leaf", hosts_per_leaf - - Device.objects.bulk_create(devices) - - devices = {x.id: x for x in Device.objects.filter(topology_id=topology.pk)} - - links = [] - interfaces = defaultdict(list) - - for leaf in leaves: - for spine in spines: - from_interface = Interface(device=devices[leaf.id], - name="swp" + str(len(interfaces[leaf.id]) + 1), - id=(len(interfaces[leaf.id]) + 1)) - from_interface.save() - interfaces[leaf.id].append(from_interface) - to_interface = Interface(device=devices[spine.id], - name="swp" + str(len(interfaces[spine.id]) + 1), - id=(len(interfaces[spine.id]) + 1)) - to_interface.save() - interfaces[spine.id].append(to_interface) - link = Link(from_device=devices[leaf.id], - to_device=devices[spine.id], - from_interface=from_interface, - to_interface=to_interface, - id=next(link_id_seq)) - links.append(link) - for i, hosts in enumerate(hosts_per_leaf): - leaf1 = leaves[2 * i] - leaf2 = leaves[2 * i + 1] - for j, host in enumerate(hosts): - from_interface = Interface(device=devices[leaf1.id], - name="swp" + str(len(interfaces[leaf1.id]) + 1), - id=(len(interfaces[leaf1.id]) + 1)) - from_interface.save() - interfaces[leaf1.id].append(from_interface) - to_interface = Interface(device=devices[host.id], - name="eth" + str(len(interfaces[host.id]) + 1), - id=(len(interfaces[host.id]) + 1)) - to_interface.save() - interfaces[host.id].append(to_interface) - link = Link(from_device=devices[leaf1.id], - to_device=devices[host.id], - from_interface=from_interface, - to_interface=to_interface, - id=next(link_id_seq)) - links.append(link) - from_interface = Interface(device=devices[leaf2.id], - name="swp" + str(len(interfaces[leaf2.id]) + 1), - id=(len(interfaces[leaf2.id]) + 1)) - from_interface.save() - interfaces[leaf2.id].append(from_interface) - to_interface = Interface(device=devices[host.id], - name="eth" + str(len(interfaces[host.id]) + 1), - id=(len(interfaces[host.id]) + 1)) - to_interface.save() - interfaces[host.id].append(to_interface) - link = Link(from_device=devices[leaf2.id], - to_device=devices[host.id], - from_interface=from_interface, - to_interface=to_interface, - id=next(link_id_seq)) - links.append(link) - - Link.objects.bulk_create(links) - - topology.device_id_seq = next(id_seq) - topology.link_id_seq = next(link_id_seq) - topology.save() - - print "Topology: ", topology.pk diff --git a/awx/network_ui/management/commands/create_worst_case_test_topology.py b/awx/network_ui/management/commands/create_worst_case_test_topology.py deleted file mode 100644 index 34eb5c9837..0000000000 --- a/awx/network_ui/management/commands/create_worst_case_test_topology.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc -from django.core.management.base import BaseCommand -from awx.network_ui.models import Topology, Device, Link, Interface - -import math - -from collections import defaultdict -from .util import natural_numbers - - -class Command(BaseCommand): - help = 'Adds a fully connected topology with n nodes to topology pk id' - - def add_arguments(self, parser): - parser.add_argument('id', type=int) - parser.add_argument('n', type=int) - - def handle(self, *args, **options): - - topology_id = options['id'] - n = options['n'] - - topology = Topology.objects.get(topology_id=topology_id) - - link_id_seq = natural_numbers(topology.link_id_seq) - device_id_seq = natural_numbers(topology.device_id_seq) - devices = [] - - r = 1000 - if n > 0: - arc_radians = 2 * math.pi / n - else: - arc_radians = 2 * math.pi - - - for i in xrange(n): - device = Device(name="R{0}".format(i), - x=math.cos(arc_radians * i) * r, - y=math.sin(arc_radians * i) * r, - id=next(device_id_seq), - type="router", - topology_id=topology.pk) - devices.append(device) - - Device.objects.bulk_create(devices) - - devices = list(Device.objects.filter(topology_id=topology.pk)) - - links = [] - interfaces = defaultdict(list) - - for i in xrange(n): - for j in xrange(i): - if i == j: - continue - from_interface = Interface(device=devices[i], - name="swp" + str(len(interfaces[i]) + 1), - id=(len(interfaces[i]) + 1)) - from_interface.save() - interfaces[i].append(from_interface) - to_interface = Interface(device=devices[j], - name="swp" + str(len(interfaces[j]) + 1), - id=(len(interfaces[j]) + 1)) - to_interface.save() - interfaces[j].append(to_interface) - link = Link(from_device=devices[i], - to_device=devices[j], - from_interface=from_interface, - to_interface=to_interface, - id=next(link_id_seq)) - links.append(link) - Link.objects.bulk_create(links) - - print "Topology: ", topology.pk diff --git a/awx/network_ui/management/commands/dump_topology.py b/awx/network_ui/management/commands/dump_topology.py deleted file mode 100644 index e05d760442..0000000000 --- a/awx/network_ui/management/commands/dump_topology.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc -from django.core.management.base import BaseCommand - -from awx.network_ui.serializers import yaml_serialize_topology - - - -class Command(BaseCommand): - help = 'Dumps data of a topology to a yaml file' - - def add_arguments(self, parser): - parser.add_argument('topology_id', type=int) - - def handle(self, *args, **options): - topology_id = options['topology_id'] - - print yaml_serialize_topology(topology_id) diff --git a/awx/network_ui/management/commands/find_duplicates.py b/awx/network_ui/management/commands/find_duplicates.py deleted file mode 100644 index 379d61afe8..0000000000 --- a/awx/network_ui/management/commands/find_duplicates.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc - - -from django.core.management.base import BaseCommand -from django.db.models import Count - -from awx.network_ui.models import Device -from pprint import pprint - - -class Command(BaseCommand): - - def handle(self, *args, **options): - dups = list(Device.objects - .values('topology_id', 'id') - .annotate(Count('pk')) - .order_by() - .filter(pk__count__gt=1)) - pprint(dups) - for dup in dups: - del dup['pk__count'] - pprint(list(Device.objects - .filter(**dup) - .values())) diff --git a/awx/network_ui/management/commands/replay_recording.py b/awx/network_ui/management/commands/replay_recording.py deleted file mode 100644 index 459faa2711..0000000000 --- a/awx/network_ui/management/commands/replay_recording.py +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc -from django.core.management.base import BaseCommand - -from websocket import create_connection -from ui_test import MessageHandler, _Time -from awx.network_ui.models import Device, TopologyHistory - -import json - -time = _Time() - - -class Command(BaseCommand): - - def add_arguments(self, parser): - parser.add_argument('topology_id', type=int) - parser.add_argument('recording') - parser.add_argument('--time-scale', dest="time_scale", default=1.0, type=float) - parser.add_argument('--delete-topology-at-start', dest="delete_topology", action="store_true", default=False) - - def handle(self, *args, **options): - print options['topology_id'] - print options['recording'] - topology_id = options['topology_id'] - if options['delete_topology'] is True: - TopologyHistory.objects.filter(topology_id=topology_id).delete() - Device.objects.filter(topology_id=topology_id).delete() - time.scale = options.get('time_scale', 1.0) - ui = MessageHandler(create_connection("ws://localhost:8013/network_ui/topology?topology_id={0}".format(options['topology_id']))) - ui.recv() - ui.recv() - ui.send('StopRecording') - ui.send('StartReplay') - if options['delete_topology'] is True: - ui.send_message(['History', []]) - ui.send('Snapshot', sender=ui.client_id, devices=[], links=[]) - messages = [] - with open(options['recording']) as f: - for line in f.readlines(): - messages.append(json.loads(line)) - messages = sorted(messages, key=lambda x: x['message_id']) - - for message in messages: - message['sender'] = ui.client_id - message['save'] = False - ui.send_message([message['msg_type'], message]) - if message['msg_type'] == "ViewPort": - time.sleep(10) - else: - time.sleep(1) - ui.send('StopReplay') - ui.send('CoverageRequest') - ui.close() diff --git a/awx/network_ui/management/commands/ui_test.py b/awx/network_ui/management/commands/ui_test.py deleted file mode 100644 index 42a902e283..0000000000 --- a/awx/network_ui/management/commands/ui_test.py +++ /dev/null @@ -1,520 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc -from django.core.management.base import BaseCommand -import unittest -from websocket import create_connection -import json -import yaml -import time as real_time -import requests - - -class _Time(object): - - def __init__(self, scale=1.0): - self.scale = scale - - def sleep(self, n): - real_time.sleep(n * self.scale) - - -time = _Time() - - -class Command(BaseCommand): - - def add_arguments(self, parser): - parser.add_argument('--time-scale', dest="time_scale", default=1.0, type=float) - parser.add_argument('--verbose', dest="verbose", action="store_true", default=False) - parser.add_argument('-q', '--quiet', dest="quiet", action="store_true", default=False) - parser.add_argument('-f', '--failfast', dest="failfast", action="store_true", default=False) - parser.add_argument('-b', '--buffer', dest="buffer", action="store_true", default=False) - parser.add_argument('suites', nargs="*") - - def handle(self, *args, **options): - time.scale = options.get('time_scale', 1.0) - loader = unittest.TestLoader() - test_suites = [TestUI, - TestUIWebSocket, - TestUndoPersistence, - TestRedoPersistence, - TestPersistence, - TestViews, - #TestWorkerWebSocket, - TestAnsibleWebSocket, - TestInvalidValues] - if options.get('suites'): - test_suites = [x for x in test_suites if x.__name__ in options['suites']] - tests = [loader.loadTestsFromTestCase(x) for x in test_suites] - unittest.TextTestRunner(failfast=options.get('failfast'), - verbosity=0 if options.get('quiet') else 2 if options.get('verbose') else 1, - buffer=options.get('buffer')).run(unittest.TestSuite(tests)) - - ui = MessageHandler(create_connection("ws://localhost:8013/network_ui/topology?topology_id=143")) - ui.recv() - ui.recv() - ui.send('CoverageRequest') - ui.close() - - -class TestViews(unittest.TestCase): - - def test_index(self): - requests.get("http://localhost:8013/network_ui") - - -class MessageHandler(object): - - def __init__(self, ws): - self.ws = ws - self.client_id = None - self.topology_id = None - self.receieved_messages = [] - self.message_id = 0 - - def handle_message(self, message): - message = json.loads(message) - self.receieved_messages.append(message) - if message[0] == "id": - self.client_id = message[1] - if message[0] == "topology_id": - self.topology_id = message[1] - - def make_message(self, msg_type, **kwargs): - kwargs['sender'] = self.client_id - kwargs['msg_type'] = msg_type - kwargs['message_id'] = self.message_id - self.message_id += 1 - return [msg_type, kwargs] - - def send(self, msg_type, **kwargs): - self.ws.send(json.dumps(self.make_message(msg_type, **kwargs))) - - def send_message(self, message): - self.ws.send(json.dumps(message)) - - def send_multiple(self, messages): - self.ws.send(json.dumps(['MultipleMessage', dict(sender=self.client_id, messages=messages)])) - - def recv(self): - msg = self.ws.recv() - self.handle_message(msg) - return msg - - def close(self): - self.ws.close() - - -class TestAnsibleWebSocket(unittest.TestCase): - - def test(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/ansible?topology_id=143")) - self.ws.send('Facts', foo=5) - - def tearDown(self): - self.ws.close() - - -class TestPersistence(unittest.TestCase): - - def setUp(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=143")) - self.ws.recv() - self.ws.recv() - - def tearDown(self): - self.ws.close() - - def test_DeviceCreate(self): - self.ws.send('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - - def test_DeviceLabelEdit(self): - self.ws.send('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - time.sleep(1) - self.ws.send('DeviceLabelEdit', name="Foo", previous_name="TestSwitch", id=100) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - - def test_DeviceMove(self): - #self.ws.send('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send_multiple([ - dict(msg_type='DeviceCreate', name="TestSwitchA", x=100, y=100, type="switch", id=100), - dict(msg_type='DeviceCreate', name="TestSwitchB", x=900, y=100, type="switch", id=101), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=100), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=101), - dict(msg_type='LinkCreate', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1)]) - time.sleep(1) - for i in xrange(1, 1000): - time.sleep(0.01) - self.ws.send('DeviceMove', x=i, y=500, previous_x=i - 1, previous_y=500, id=100) - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - - def test_LinkEdit_InterfaceEdit_LinkDestroy(self): - self.ws.send_multiple([ - dict(msg_type='DeviceCreate', name="TestSwitchA", x=100, y=100, type="switch", id=100), - dict(msg_type='DeviceCreate', name="TestSwitchB", x=900, y=100, type="switch", id=101), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=100), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=101), - dict(msg_type='LinkCreate', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1)]) - time.sleep(1) - self.ws.send('InterfaceLabelEdit', id=1, device_id=100, name="swp2", previous_name="swp1") - time.sleep(1) - self.ws.send('LinkLabelEdit', id=100, name="B to A", previous_name="A to B") - time.sleep(1) - self.ws.send('LinkDestroy', id=100, from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=101) - - -class TestUndoPersistence(unittest.TestCase): - - def setUp(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=143")) - self.ws.recv() - self.ws.recv() - - def test_unsupported(self): - self.ws.send("Undo", original_message=['NotSupported', dict(sender=0, message_id=-1)]) - - def test_undo(self): - self.ws.send("Undo", original_message=['Undo', dict(sender=0, message_id=-1)]) - - def test_redo(self): - self.ws.send("Undo", original_message=['Redo', dict(sender=0, message_id=-1)]) - - def test_DeviceCreate(self): - msg = self.ws.make_message('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send_message(msg) - self.ws.send("Undo", original_message=msg) - - def test_DeviceDestroy(self): - msg = self.ws.make_message('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send_message(msg) - msg = self.ws.make_message('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - self.ws.send_message(msg) - self.ws.send("Undo", original_message=msg) - - def test_DeviceMove(self): - msg = self.ws.make_message('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send_message(msg) - msg = self.ws.make_message('DeviceMove', x=100, y=100, previous_x=0, previous_y=500, id=100) - self.ws.send_message(msg) - self.ws.send("Undo", original_message=msg) - - def test_DeviceLabelEdit(self): - msg = self.ws.make_message('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send_message(msg) - msg = self.ws.make_message('DeviceLabelEdit', name="Foo", previous_name="TestSwitch", id=100) - self.ws.send_message(msg) - self.ws.send("Undo", original_message=msg) - - def test_DeviceSelected_DeviceUnSelected(self): - self.ws.send("Undo", original_message=['DeviceSelected', dict(sender=0, message_id=-1)]) - self.ws.send("Undo", original_message=['DeviceUnSelected', dict(sender=0, message_id=-1)]) - - def test_Snapshot(self): - self.ws.send("Undo", original_message=['Snapshot', dict(sender=0, message_id=-1)]) - - def tearDown(self): - self.ws.close() - - def test_LinkEdit_InterfaceEdit_LinkDestroy(self): - self.ws.send_multiple([ - dict(msg_type='DeviceCreate', name="TestSwitchA", x=100, y=100, type="switch", id=100), - dict(msg_type='DeviceCreate', name="TestSwitchB", x=900, y=100, type="switch", id=101), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=100), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=101)]) - - time.sleep(1) - - msg = self.ws.make_message('LinkCreate', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1) - self.ws.send_message(msg) - self.ws.send('Undo', original_message=msg) - time.sleep(1) - self.ws.send('Redo', original_message=msg) - time.sleep(1) - msg = self.ws.make_message('LinkDestroy', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1) - time.sleep(1) - self.ws.send_message(msg) - self.ws.send('Undo', original_message=msg) - time.sleep(1) - - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=101) - - -class TestRedoPersistence(unittest.TestCase): - - def setUp(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=143")) - self.ws.recv() - self.ws.recv() - - def test_unsupported(self): - self.ws.send("Redo", original_message=['NotSupported', dict(sender=0, message_id=-1)]) - - def test_undo(self): - self.ws.send("Redo", original_message=['Undo', dict(sender=0, message_id=-1)]) - - def test_redo(self): - self.ws.send("Redo", original_message=['Redo', dict(sender=0, message_id=-1)]) - - def test_DeviceSelected_DeviceUnSelected(self): - self.ws.send("Redo", original_message=['DeviceSelected', dict(sender=0, message_id=-1)]) - self.ws.send("Redo", original_message=['DeviceUnSelected', dict(sender=0, message_id=-1)]) - - def test_Snapshot(self): - self.ws.send("Redo", original_message=['Snapshot', dict(sender=0, message_id=-1)]) - - def tearDown(self): - self.ws.close() - - -class TestUIWebSocket(unittest.TestCase): - - def test(self): - self.ui = MessageHandler(create_connection("ws://localhost:8013/network_ui/topology?topology_id=143")) - self.ui.recv() - self.ui.recv() - self.ui.send("Hello") - - def tearDown(self): - self.ui.close() - - -class TestUI(unittest.TestCase): - - def setUp(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=143")) - self.ui = MessageHandler(create_connection("ws://localhost:8013/network_ui/topology?topology_id=143")) - self.ws.recv() - self.ws.recv() - self.ui.recv() - self.ui.recv() - - def tearDown(self): - self.ui.close() - self.ws.close() - - def test_DeviceStatus(self): - self.ws.send('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send('DeviceMove', x=100, y=100, previous_x=0, previous_y=500, id=100) - self.ws.send('DeviceStatus', name="TestSwitch", working=True, status=None) - time.sleep(1) - self.ws.send('DeviceStatus', name="TestSwitch", working=False, status="pass") - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - - def test_TaskStatus(self): - self.ws.send('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send('DeviceMove', x=100, y=100, previous_x=0, previous_y=500, id=100) - self.ws.send('TaskStatus', device_name="TestSwitch", task_id="1", working=True, status=None) - time.sleep(1) - self.ws.send('TaskStatus', device_name="TestSwitch", task_id="1", working=False, status="pass") - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - - def test_DeviceSelect(self): - self.ws.send('DeviceCreate', name="TestSwitch", x=0, y=500, type="switch", id=100) - self.ws.send('DeviceMove', x=100, y=100, previous_x=0, previous_y=500, id=100) - self.ws.send('DeviceSelected', id=100) - time.sleep(1) - self.ws.send('DeviceUnSelected', id=100) - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - - def test_LinkSelect(self): - self.ws.send('DeviceCreate', name="TestSwitchA", x=100, y=100, type="switch", id=100) - self.ws.send('DeviceCreate', name="TestSwitchB", x=900, y=100, type="switch", id=101) - self.ws.send('InterfaceCreate', name="swp1", id=1, device_id=100) - self.ws.send('InterfaceCreate', name="swp1", id=1, device_id=101) - time.sleep(1) - self.ws.send('LinkCreate', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1) - self.ws.send('LinkSelected', id=100) - time.sleep(1) - self.ws.send('LinkUnSelected', id=100) - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=101) - - def test_LinkSelect2(self): - self.ws.send_multiple([ - dict(msg_type='DeviceCreate', name="TestSwitchA", x=100, y=100, type="switch", id=100), - dict(msg_type='DeviceCreate', name="TestSwitchB", x=900, y=100, type="switch", id=101), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=100), - dict(msg_type='InterfaceCreate', name="swp1", id=1, device_id=101), - dict(msg_type='LinkCreate', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1)]) - self.ws.send('LinkSelected', id=100) - time.sleep(1) - self.ws.send('LinkUnSelected', id=100) - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=101) - - def test_Facts(self): - self.ws.send('DeviceCreate', name="TestSwitchA", x=100, y=100, type="switch", id=100) - self.ws.send('DeviceCreate', name="TestSwitchB", x=900, y=100, type="switch", id=101) - self.ws.send('InterfaceCreate', name="swp1", id=1, device_id=100) - self.ws.send('InterfaceCreate', name="swp1", id=1, device_id=101) - time.sleep(1) - self.ws.send('LinkCreate', id=100, name="A to B", from_device_id=100, to_device_id=101, from_interface_id=1, to_interface_id=1) - time.sleep(1) - self.ws.send('Facts', key="TestSwitchA", value=dict(ansible_local=dict(ptm={'port': "swp1", 'cbl status': 'fail'}))) - time.sleep(1) - self.ws.send('Facts', key="TestSwitchA", value=dict(ansible_local=dict(ptm={'port': "swp1", 'cbl status': 'pass'}))) - time.sleep(1) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=100) - self.ws.send('DeviceDestroy', - previous_name="TestSwitch", - previous_x=0, - previous_y=500, - previous_type="switch", - id=101) - - def test_Snapshot(self): - self.ws.send('Snapshot', **yaml.load(''' -devices: -- id: 116 - interfaces: - - id: 1 - name: swp1 - network: 186105 - remote_device_name: Switch2 - remote_interface_name: swp1 - name: Switch1 - type: switch - x: -1969 - y: -320 -- id: 117 - interfaces: - - id: 1 - name: swp1 - network: 186105 - remote_device_name: Switch1 - remote_interface_name: swp1 - name: Switch2 - type: switch - x: -1711 - y: -323 -links: -- from_device: Switch2 - from_device_id: 117 - from_interface: swp1 - from_interface_id: 1 - network: 186105 - to_device: Switch1 - to_device_id: 116 - to_interface: swp1 - to_interface_id: 1 -name: topology -topology_id: 143 -''')) - - time.sleep(1) - - -class TestInvalidValues(unittest.TestCase): - - def test_bad_topology_id1(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=0")) - self.ws.close() - - def test_bad_topology_id2(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=foo")) - self.ws.close() - - def test_bad_sender(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=143")) - self.ws.ws.send(json.dumps(['DeviceCreate', dict(sender=-1, name="TestSwitchA", x=100, y=100, type="switch", id=100)])) - self.ws.ws.send(json.dumps(['DeviceDestroy', dict(sender=-1, previous_name="TestSwitchA", - previous_x=100, previous_y=100, previous_type="switch", id=100)])) - self.ws.close() - - def test_unsupported_command(self): - self.ws = MessageHandler(create_connection("ws://localhost:8013/network_ui/tester?topology_id=143")) - self.ws.recv() - self.ws.recv() - self.ws.send("NotSupported") - self.ws.send_multiple([dict(msg_type="NotSupported")]) - self.ws.close() diff --git a/awx/network_ui/management/commands/util.py b/awx/network_ui/management/commands/util.py deleted file mode 100644 index 8e28a44704..0000000000 --- a/awx/network_ui/management/commands/util.py +++ /dev/null @@ -1,5 +0,0 @@ - -def natural_numbers(i=1): - while True: - yield i - i += 1 diff --git a/awx/network_ui/messages.py b/awx/network_ui/messages.py deleted file mode 100644 index 5c9fe7ac1b..0000000000 --- a/awx/network_ui/messages.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc - - -from collections import namedtuple - - -MultipleMessage = namedtuple('MultipleMessage', ['msg_type', - 'messages']) -InterfaceCreate = namedtuple('InterfaceCreate', ['msg_type', - 'sender', - 'device_id', - 'id', - 'name']) -LinkCreate = namedtuple('LinkCreate', ['msg_type', - 'sender', - 'id', - 'name', - 'from_device_id', - 'to_device_id', - 'from_interface_id', - 'to_interface_id']) - - -def to_dict(message): - if isinstance(message, MultipleMessage): - d = dict(message._asdict()) - inner_messages = [] - for m in d['messages']: - inner_messages.append(to_dict(m)) - d['messages'] = inner_messages - return d - else: - return dict(message._asdict()) diff --git a/awx/network_ui/migrations/0004_auto_20180304_2122.py b/awx/network_ui/migrations/0004_auto_20180304_2122.py new file mode 100644 index 0000000000..85b3ae1b4d --- /dev/null +++ b/awx/network_ui/migrations/0004_auto_20180304_2122.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.7 on 2018-03-04 21:22 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('network_ui', '0003_auto_20180302_1401'), + ] + + operations = [ + migrations.RemoveField( + model_name='databinding', + name='data_type', + ), + migrations.RemoveField( + model_name='databinding', + name='sheet', + ), + migrations.RemoveField( + model_name='datasheet', + name='client', + ), + migrations.RemoveField( + model_name='datasheet', + name='topology', + ), + migrations.DeleteModel( + name='DataBinding', + ), + migrations.DeleteModel( + name='DataSheet', + ), + migrations.DeleteModel( + name='DataType', + ), + ] diff --git a/awx/network_ui/models.py b/awx/network_ui/models.py index c17717d874..6ec53866fd 100644 --- a/awx/network_ui/models.py +++ b/awx/network_ui/models.py @@ -102,32 +102,6 @@ class GroupDevice(models.Model): device = models.ForeignKey('Device',) -class DataBinding(models.Model): - - data_binding_id = models.AutoField(primary_key=True,) - column = models.IntegerField() - row = models.IntegerField() - table = models.CharField(max_length=200, blank=True) - primary_key_id = models.IntegerField() - field = models.CharField(max_length=200, blank=True) - data_type = models.ForeignKey('DataType',) - sheet = models.ForeignKey('DataSheet',) - - -class DataType(models.Model): - - data_type_id = models.AutoField(primary_key=True,) - type_name = models.CharField(max_length=200, blank=True) - - -class DataSheet(models.Model): - - data_sheet_id = models.AutoField(primary_key=True,) - name = models.CharField(max_length=200, blank=True) - topology = models.ForeignKey('Topology',) - client = models.ForeignKey('Client',) - - class Stream(models.Model): stream_id = models.AutoField('Stream', primary_key=True,) diff --git a/awx/network_ui/routing.py b/awx/network_ui/routing.py index 45c561231b..e0b04d7fe1 100644 --- a/awx/network_ui/routing.py +++ b/awx/network_ui/routing.py @@ -1,24 +1,10 @@ # Copyright (c) 2017 Red Hat, Inc from channels.routing import route -from awx.network_ui.consumers import ws_connect, ws_message, ws_disconnect, console_printer, persistence, discovery -from awx.network_ui.consumers import ansible_connect, ansible_message, ansible_disconnect -from awx.network_ui.consumers import tester_connect, tester_message, tester_disconnect -from awx.network_ui.consumers import tables_connect, tables_message, tables_disconnect +from awx.network_ui.consumers import ws_connect, ws_message, ws_disconnect, persistence channel_routing = [ route("websocket.connect", ws_connect, path=r"^/network_ui/topology"), route("websocket.receive", ws_message, path=r"^/network_ui/topology"), route("websocket.disconnect", ws_disconnect, path=r"^/network_ui/topology"), - route("websocket.connect", ansible_connect, path=r"^/network_ui/ansible"), - route("websocket.receive", ansible_message, path=r"^/network_ui/ansible"), - route("websocket.disconnect", ansible_disconnect, path=r"^/network_ui/ansible"), - route("websocket.connect", tester_connect, path=r"^/network_ui/tester"), - route("websocket.receive", tester_message, path=r"^/network_ui/tester"), - route("websocket.disconnect", tester_disconnect, path=r"^/network_ui/tester"), - route("websocket.connect", tables_connect, path=r"^/network_ui/tables"), - route("websocket.receive", tables_message, path=r"^/network_ui/tables"), - route("websocket.disconnect", tables_disconnect, path=r"^/network_ui/tables"), - route("console_printer", console_printer), route("persistence", persistence.handle), - route("discovery", discovery.handle), ] diff --git a/awx/network_ui/templates/action_plugins/create_model.pyt b/awx/network_ui/templates/action_plugins/create_model.pyt deleted file mode 100644 index db0325634b..0000000000 --- a/awx/network_ui/templates/action_plugins/create_model.pyt +++ /dev/null @@ -1,51 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- create_{{model.name.lower()}} - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - the_list = self._task.args.get('list', None) - list_var = self._task.args.get('list_var', None) -{%for field in model.fields%}{%if not field.pk and field.default is not defined%} - {{field.name}} = self._task.args.get('{{field.name}}', None){%endif%}{%endfor%} -{%for field in model.fields%}{%if not field.pk and field.default is defined%} - {{field.name}} = self._task.args.get('{{field.name}}', {{field.default}}){%endif%}{%endfor%} - - url = server + '{{model.v2_end_point}}' - headers = {'content-type': 'application/json'} - response = requests.post(url, data=json.dumps(dict({%for field in model.fields%}{%if not field.pk%}{{field.name}}={{field.name}}, - {%endif%}{%endfor%})), - verify=False, - auth=(user, password), - headers=headers) - if var is not None: - result['ansible_facts'] = {var: response.json()} - elif list_var is not None: - if the_list is None: - the_list = [] - the_list.append(response.json()) - result['ansible_facts'] = {list_var: the_list} - return result - -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/action_plugins/delete_model.pyt b/awx/network_ui/templates/action_plugins/delete_model.pyt deleted file mode 100644 index 1a9b6098c7..0000000000 --- a/awx/network_ui/templates/action_plugins/delete_model.pyt +++ /dev/null @@ -1,35 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- delete_{{model.name.lower()}} - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - -{%for field in model.fields%}{%if field.pk%} - {{field.name}} = self._task.args.get('{{field.name}}', None){%endif%}{%endfor%} - - url = server + '{{model.v2_end_point}}' + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}) + '/' - requests.delete(url, - verify=False, - auth=(user, password)) - return result - -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/action_plugins/get_model.pyt b/awx/network_ui/templates/action_plugins/get_model.pyt deleted file mode 100644 index 72e9baf1db..0000000000 --- a/awx/network_ui/templates/action_plugins/get_model.pyt +++ /dev/null @@ -1,37 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- get_{{model.name.lower()}} - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) -{%for field in model.fields%}{%if field.pk%} - {{field.name}} = self._task.args.get('{{field.name}}', None){%endif%}{%endfor%} - - url = server + '{{model.v2_end_point}}' + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}) + '/' - response = requests.get(url, - verify=False, - auth=(user, password)) - result['ansible_facts'] = {var: response.json()} - return result - -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/action_plugins/list_model.pyt b/awx/network_ui/templates/action_plugins/list_model.pyt deleted file mode 100644 index 5e1374ec0c..0000000000 --- a/awx/network_ui/templates/action_plugins/list_model.pyt +++ /dev/null @@ -1,45 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- list_{{model.name.lower()}} - -from ansible.plugins.action import ActionBase - -import requests - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) - -{%for field in model.fields%} - {{field.name}} = self._task.args.get('{{field.name}}', None){%endfor%} - - filter_data=dict({%for field in model.fields%}{{field.name}}={{field.name}}, - {%endfor%}) - filter_data={x:y for x,y in filter_data.iteritems() if y is not None} - - url = '{{model.v2_end_point}}' - results = [] - while url is not None: - url = server + url - data = requests.get(url, verify=False, auth=(user, password), params=filter_data).json() - results.extend(data.get('results', [])) - url = data.get('next', None) - result['ansible_facts'] = {var: results} - return result - -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/action_plugins/update_model.pyt b/awx/network_ui/templates/action_plugins/update_model.pyt deleted file mode 100644 index f9869173d0..0000000000 --- a/awx/network_ui/templates/action_plugins/update_model.pyt +++ /dev/null @@ -1,44 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- update_{{model.name.lower()}} - -from ansible.plugins.action import ActionBase - -import requests -import json - - -class ActionModule(ActionBase): - - BYPASS_HOST_LOOP = True - - def run(self, tmp=None, task_vars=None): - if task_vars is None: - task_vars = dict() - result = super(ActionModule, self).run(tmp, task_vars) - - server = self._task.args.get('server', - "{0}:{1}".format(self._play_context.remote_addr, - self._play_context.port)) - user = self._task.args.get('user', self._play_context.remote_user) - password = self._task.args.get('password', self._play_context.password) - - var = self._task.args.get('var', None) -{%for field in model.fields%} - {{field.name}} = self._task.args.get('{{field.name}}', None){%endfor%} - - url = server + '{{model.v2_end_point}}' + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}) + '/' - headers = {'content-type': 'application/json'} - data=dict({%for field in model.fields%}{%if not field.pk%}{{field.name}}={{field.name}}, - {%endif%}{%endfor%}) - data={x:y for x,y in data.iteritems() if y is not None} - response = requests.patch(url, - data=json.dumps(data), - verify=False, - auth=(user, password), - headers=headers) - result['ansible_facts'] = {var: response.json()} - return result - -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/admin.pyt b/awx/network_ui/templates/admin.pyt deleted file mode 100644 index a73d8127b7..0000000000 --- a/awx/network_ui/templates/admin.pyt +++ /dev/null @@ -1,12 +0,0 @@ -from django.contrib import admin -{%for model in models%} -from {{app}}.models import {{model.name}} -{%endfor%} - -{%for model in models%} -class {{model.name}}Admin(admin.ModelAdmin): - fields = ({%for field in model.fields%}{%if not field.pk%}'{{field.name}}',{%endif%}{%endfor%}) - raw_id_fields = ({%for field in model.fields%}{%if field.ref%}'{{field.name}}',{%endif%}{%endfor%}) -admin.site.register({{model.name}}, {{model.name}}Admin) -{%endfor%} - diff --git a/awx/network_ui/templates/library/create_model.pyt b/awx/network_ui/templates/library/create_model.pyt deleted file mode 100644 index 2e660b0edb..0000000000 --- a/awx/network_ui/templates/library/create_model.pyt +++ /dev/null @@ -1,5 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- create_{{model.name.lower()}} -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/library/delete_model.pyt b/awx/network_ui/templates/library/delete_model.pyt deleted file mode 100644 index 161abe65eb..0000000000 --- a/awx/network_ui/templates/library/delete_model.pyt +++ /dev/null @@ -1,5 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- delete_{{model.name.lower()}} -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/library/get_model.pyt b/awx/network_ui/templates/library/get_model.pyt deleted file mode 100644 index a7c7412e89..0000000000 --- a/awx/network_ui/templates/library/get_model.pyt +++ /dev/null @@ -1,5 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- get_{{model.name.lower()}} -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/library/list_model.pyt b/awx/network_ui/templates/library/list_model.pyt deleted file mode 100644 index 79e5977b10..0000000000 --- a/awx/network_ui/templates/library/list_model.pyt +++ /dev/null @@ -1,5 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- list_{{model.name.lower()}} -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/library/update_model.pyt b/awx/network_ui/templates/library/update_model.pyt deleted file mode 100644 index b7a084d68c..0000000000 --- a/awx/network_ui/templates/library/update_model.pyt +++ /dev/null @@ -1,5 +0,0 @@ -{%for model in models-%} -{%-if model.api-%} -#---- update_{{model.name.lower()}} -{%endif%} -{%endfor%} diff --git a/awx/network_ui/templates/models.pyt b/awx/network_ui/templates/models.pyt deleted file mode 100644 index 225f1ab805..0000000000 --- a/awx/network_ui/templates/models.pyt +++ /dev/null @@ -1,15 +0,0 @@ -from django.db import models - - -{%for model in models%} -class {{model.name}}(models.Model): - - {%for field in model.fields%}{{field.name}} = models.{{field.type}}({%if field.ref%}'{{field.ref}}',{%endif%}{%if field.pk%}primary_key=True,{%endif%}{%if field.len%}max_length={{field.len}},{%endif%}{%if field.related_name%}related_name='{{field.related_name}}',{%endif%}{%if field.default is defined%}default={{field.default}},{%endif%}{%if field.type == 'CharField'%}blank=True{%endif%}) - {%endfor%} - - {%if model.display%} - def __unicode__(self): - return self.{{model.display}} - {%endif%} - -{%endfor%} diff --git a/awx/network_ui/templates/tuples.pyt b/awx/network_ui/templates/tuples.pyt deleted file mode 100644 index a9917ddc56..0000000000 --- a/awx/network_ui/templates/tuples.pyt +++ /dev/null @@ -1,10 +0,0 @@ - - -from collections import namedtuple - - -{%for model in models%} -{{model.name}} = namedtuple('{{model.name}}',[{%for field in model.fields%}{%if field.pk%}'{{field.name}}'{%endif%}{%endfor%}, - {%for field in model.fields%}{%if not field.pk%}'{{field.name}}', - {%endif%}{%endfor%}]) -{%endfor%} diff --git a/awx/network_ui/templates/v1_api_client.pyt b/awx/network_ui/templates/v1_api_client.pyt deleted file mode 100644 index 31e099cc8e..0000000000 --- a/awx/network_ui/templates/v1_api_client.pyt +++ /dev/null @@ -1,50 +0,0 @@ - -import requests - -import util -import json -from collections import namedtuple - - -{%for model in models%}{%if model.api%} -{{model.name}} = namedtuple('{{model.name}}',[{%for field in model.fields%}{%if field.pk%}'{{field.name}}'{%endif%}{%endfor%}, - {%for field in model.fields%}{%if not field.pk%}'{{field.name}}', - {%endif%}{%endfor%}]) -{%endif%}{%endfor%} - -{%for model in models%}{%if model.api%} -def list_{{model.name.lower()}}(**kwargs): - response = util.unpaginate(util.get_url(), '{{model.v1_end_point}}', util.get_verify(), util.get_auth(), kwargs) - return response - -def get_{{model.name.lower()}}({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}): - response = requests.get(util.get_url() + "{{model.v1_end_point}}" + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - -def create_{{model.name.lower()}}({%for field in model.fields%}{%if not field.pk and field.default is not defined%}{{field.name}},{%endif%}{%endfor%}{%for field in model.fields%}{%if not field.pk and field.default is defined%}{{field.name}}={{field.default}},{%endif%}{%endfor%}): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "{{model.v1_end_point}}", data=json.dumps(dict({%for field in model.fields%}{%if not field.pk%}{{field.name}}={{field.name}}, - {%endif%}{%endfor%})), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - -def update_{{model.name.lower()}}({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}, {%for field in model.fields%}{%if not field.pk%}{{field.name}}=None,{%endif%}{%endfor%}): - headers = {'content-type': 'application/json'} - data=dict({%for field in model.fields%}{%if not field.pk%}{{field.name}}={{field.name}}, - {%endif%}{%endfor%}) - data={x:y for x,y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "{{model.v1_end_point}}" + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_{{model.name.lower()}}({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}): - response = requests.delete(util.get_url() + "{{model.v1_end_point}}" + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}), verify=util.get_verify(), auth=util.get_auth()) - return response - -{%endif%}{%endfor%} diff --git a/awx/network_ui/templates/v1_api_serializers.pyt b/awx/network_ui/templates/v1_api_serializers.pyt deleted file mode 100644 index 71f8308bad..0000000000 --- a/awx/network_ui/templates/v1_api_serializers.pyt +++ /dev/null @@ -1,15 +0,0 @@ -from awx.api.serializers import BaseSerializer -{%for model in models%}{%if model.api%} -from {{app}}.models import {{model.name}}{%endif%}{%endfor%} - - -{%for model in models%}{%if model.api%} - - - -class {{model.name}}Serializer(BaseSerializer): - class Meta: - model = {{model.name}} - fields = ({%for field in model.fields%}'{{field.name}}'{%if not loop.last%}, - {%endif%}{%endfor%}) -{%endif%}{%endfor%} diff --git a/awx/network_ui/templates/v1_api_urls.pyt b/awx/network_ui/templates/v1_api_urls.pyt deleted file mode 100644 index 3a8a445cbb..0000000000 --- a/awx/network_ui/templates/v1_api_urls.pyt +++ /dev/null @@ -1,8 +0,0 @@ -from rest_framework import routers -from awx.network_ui import v1_api_views - - -router = routers.DefaultRouter() - -{%for model in models%}{%if model.api%} -router.register(r'{{model.name.lower()}}', v1_api_views.{{model.name}}ViewSet){%endif%}{%endfor%} diff --git a/awx/network_ui/templates/v1_api_views.pyt b/awx/network_ui/templates/v1_api_views.pyt deleted file mode 100644 index e5cee5a0da..0000000000 --- a/awx/network_ui/templates/v1_api_views.pyt +++ /dev/null @@ -1,65 +0,0 @@ -import channels -import json -from rest_framework import viewsets -from utils import transform_dict -{%for model in models%}{%if model.api%} -from {{app}}.models import {{model.name}}{%endif%}{%endfor%} -{%for model in models%}{%if model.api%} -from {{app}}.v1_api_serializers import {{model.name}}Serializer{%endif%}{%endfor%} - -{%for model in models%}{%if model.api%} - - -class {{model.name}}ViewSet(viewsets.ModelViewSet): - - queryset = {{model.name}}.objects.all() - serializer_class = {{model.name}}Serializer - - def create(self, request, *args, **kwargs): - response = super({{model.name}}ViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['{%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}'] - message = dict() - {%if model.create_transform%} - message.update(transform_dict({ {% for key, value in model.create_transform.iteritems()%} '{{key}}':'{{value}}', - {%endfor%} },{{model.name}}.objects.filter(pk=pk).values(*[{% for key in model.create_transform.keys()%}'{{key}}', - {%endfor%}])[0])) - {%else%} - message.update(response.data) - {%endif%} - message['msg_type'] = "{{model.name}}Create" - message['{%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}'] = pk - message['sender'] = 0 - {%if model.topology_id_query %} - print "sending to topologies", {{model.name}}.objects.filter(pk=pk).values_list('{{model.topology_id_query}}', flat=True) - for topology_id in {{model.name}}.objects.filter(pk=pk).values_list('{{model.topology_id_query}}', flat=True): - {%else%} - print "sending to all topologies" - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - {%endif%} - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "{{model.name}}Update" - message['{%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}'] = pk - message['sender'] = 0 - {%if model.topology_id_query %} - for topology_id in {{model.name}}.objects.filter(pk=pk).values_list('{{model.topology_id_query}}', flat=True): - {%else%} - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - {%endif%} - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super({{model.name}}ViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super({{model.name}}ViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super({{model.name}}ViewSet, self).destroy(request, pk, *args, **kwargs) - -{%endif%}{%endfor%} diff --git a/awx/network_ui/templates/v2_api_access.pyt b/awx/network_ui/templates/v2_api_access.pyt deleted file mode 100644 index bfe47badd7..0000000000 --- a/awx/network_ui/templates/v2_api_access.pyt +++ /dev/null @@ -1,14 +0,0 @@ -from awx.main.access import BaseAccess, access_registry -{%for model in models%}{%if model.api%} -from {{app}}.models import {{model.name}}{%endif%}{%endfor%} - -{%for model in models%}{%if model.api%} - -class {{model.name}}Access(BaseAccess): - - model = {{model.name}} - -access_registry[{{model.name}}] = {{model.name}}Access -{%endif%}{%endfor%} - - diff --git a/awx/network_ui/templates/v2_api_client.pyt b/awx/network_ui/templates/v2_api_client.pyt deleted file mode 100644 index eda8e2dc66..0000000000 --- a/awx/network_ui/templates/v2_api_client.pyt +++ /dev/null @@ -1,42 +0,0 @@ - -import requests - -import util -import json - -{%for model in models%}{%if model.api%} -def list_{{model.name.lower()}}(**kwargs): - response = util.unpaginate(util.get_url(), '{{model.v2_end_point}}', util.get_verify(), util.get_auth(), kwargs) - return response - -def get_{{model.name.lower()}}({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}): - response = requests.get(util.get_url() + "{{model.v2_end_point}}" + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}), verify=util.get_verify(), auth=util.get_auth()) - return response.json() - -def create_{{model.name.lower()}}({%for field in model.fields%}{%if not field.pk and field.default is not defined%}{{field.name}},{%endif%}{%endfor%}{%for field in model.fields%}{%if not field.pk and field.default is defined%}{{field.name}}={{field.default}},{%endif%}{%endfor%}): - headers = {'content-type': 'application/json'} - response = requests.post(util.get_url() + "{{model.v2_end_point}}", data=json.dumps(dict({%for field in model.fields%}{%if not field.pk%}{{field.name}}={{field.name}}, - {%endif%}{%endfor%})), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response.json() - -def update_{{model.name.lower()}}({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}, {%for field in model.fields%}{%if not field.pk%}{{field.name}}=None,{%endif%}{%endfor%}): - headers = {'content-type': 'application/json'} - data=dict({%for field in model.fields%}{%if not field.pk%}{{field.name}}={{field.name}}, - {%endif%}{%endfor%}) - data={x:y for x,y in data.iteritems() if y is not None} - response = requests.patch(util.get_url() + "{{model.v2_end_point}}" + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}) + "/", - data=json.dumps(data), - verify=util.get_verify(), - auth=util.get_auth(), - headers=headers) - return response - - -def delete_{{model.name.lower()}}({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}): - response = requests.delete(util.get_url() + "{{model.v2_end_point}}" + str({%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}), verify=util.get_verify(), auth=util.get_auth()) - return response - -{%endif%}{%endfor%} diff --git a/awx/network_ui/templates/v2_api_serializers.pyt b/awx/network_ui/templates/v2_api_serializers.pyt deleted file mode 100644 index 71f8308bad..0000000000 --- a/awx/network_ui/templates/v2_api_serializers.pyt +++ /dev/null @@ -1,15 +0,0 @@ -from awx.api.serializers import BaseSerializer -{%for model in models%}{%if model.api%} -from {{app}}.models import {{model.name}}{%endif%}{%endfor%} - - -{%for model in models%}{%if model.api%} - - - -class {{model.name}}Serializer(BaseSerializer): - class Meta: - model = {{model.name}} - fields = ({%for field in model.fields%}'{{field.name}}'{%if not loop.last%}, - {%endif%}{%endfor%}) -{%endif%}{%endfor%} diff --git a/awx/network_ui/templates/v2_api_urls.pyt b/awx/network_ui/templates/v2_api_urls.pyt deleted file mode 100644 index 966d85b918..0000000000 --- a/awx/network_ui/templates/v2_api_urls.pyt +++ /dev/null @@ -1,18 +0,0 @@ -from django.conf.urls import url -{%for model in models-%}{%if model.api%} -from awx.network_ui.v2_api_views import ({{model.name}}List, {{model.name}}Detail) -{%-endif%} -{%-endfor%} - - -urls = []; -{%for model in models%}{%if model.api%} - -urls += [ - url(r'^{{model.name.lower()}}/$', {{model.name}}List.as_view(), name='canvas_{{model.name.lower()}}_list'), - url(r'^{{model.name.lower()}}/(?P[0-9]+)/$', {{model.name}}Detail.as_view(), name='canvas_{{model.name.lower()}}_detail'), -]; -{%-endif%} -{%-endfor%} - -__all__ = ['urls'] diff --git a/awx/network_ui/templates/v2_api_views.pyt b/awx/network_ui/templates/v2_api_views.pyt deleted file mode 100644 index e9b93f8636..0000000000 --- a/awx/network_ui/templates/v2_api_views.pyt +++ /dev/null @@ -1,72 +0,0 @@ -import json -import channels -from utils import transform_dict - -from awx.api.generics import ListCreateAPIView -from awx.api.generics import RetrieveUpdateDestroyAPIView -from {{app}}.models import ({%for model in models%}{%if model.api%}{{model.name}}, - {%endif%}{%endfor%}) -from {{app}}.v2_api_serializers import ({%for model in models%}{%if model.api%}{{model.name}}Serializer, - {%endif%}{%endfor%}) - -{%for model in models%}{%if model.api%} - - -class {{model.name}}List(ListCreateAPIView): - - model = {{model.name}} - serializer_class = {{model.name}}Serializer - - def create(self, request, *args, **kwargs): - response = super({{model.name}}List, self).create(request, *args, **kwargs) - print response.data - pk = response.data['{%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}'] - message = dict() - {%if model.create_transform%} - message.update(transform_dict({ {% for key, value in model.create_transform.iteritems()%} '{{key}}':'{{value}}', - {%endfor%} },{{model.name}}.objects.filter(pk=pk).values(*[{% for key in model.create_transform.keys()%}'{{key}}', - {%endfor%}])[0])) - {%else%} - message.update(response.data) - {%endif%} - message['msg_type'] = "{{model.name}}Create" - message['{%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}'] = pk - message['sender'] = 0 - {%if model.topology_id_query %} - print "sending to topologies", {{model.name}}.objects.filter(pk=pk).values_list('{{model.topology_id_query}}', flat=True) - for topology_id in {{model.name}}.objects.filter(pk=pk).values_list('{{model.topology_id_query}}', flat=True): - {%else%} - print "sending to all topologies" - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - {%endif%} - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - -class {{model.name}}Detail(RetrieveUpdateDestroyAPIView): - - model = {{model.name}} - serializer_class = {{model.name}}Serializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "{{model.name}}Update" - message['{%for field in model.fields%}{%if field.pk%}{{field.name}}{%endif%}{%endfor%}'] = pk - message['sender'] = 0 - {%if model.topology_id_query %} - for topology_id in {{model.name}}.objects.filter(pk=pk).values_list('{{model.topology_id_query}}', flat=True): - {%else%} - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - {%endif%} - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super({{model.name}}Detail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super({{model.name}}Detail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super({{model.name}}Detail, self).destroy(request, pk, *args, **kwargs) - -{%endif%}{%endfor%} diff --git a/awx/network_ui/tests.py b/awx/network_ui/tests.py deleted file mode 100644 index 8aca8ac06c..0000000000 --- a/awx/network_ui/tests.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2017 Red Hat, Inc -from django.test import TestCase - -# Create your tests here. - -from awx.network_ui.models import Topology, Device, Interface, MessageType, Link - - -class TestToString(TestCase): - - def test(self): - print str(Topology(name='foo')) - print str(Device(name='foo')) - print str(Device(name='foo')) - print str(Interface(name='foo')) - print str(MessageType(name='foo')) - print str(Link(name='foo')) diff --git a/awx/network_ui/tuples.py b/awx/network_ui/tuples.py deleted file mode 100644 index 2a0d89be2b..0000000000 --- a/awx/network_ui/tuples.py +++ /dev/null @@ -1,179 +0,0 @@ - - -from collections import namedtuple - - -Device = namedtuple('Device', ['device_id', - 'topology', - 'name', - 'x', - 'y', - 'id', - 'device_type', - 'interface_id_seq', - 'process_id_seq', - 'host_id', - ]) - -Link = namedtuple('Link', ['link_id', - 'from_device', - 'to_device', - 'from_interface', - 'to_interface', - 'id', - 'name', - ]) - -Topology = namedtuple('Topology', ['topology_id', - 'name', - 'scale', - 'panX', - 'panY', - 'device_id_seq', - 'link_id_seq', - 'group_id_seq', - 'stream_id_seq', - ]) - -Client = namedtuple('Client', ['client_id', - ]) - -TopologyHistory = namedtuple('TopologyHistory', ['topology_history_id', - 'topology', - 'client', - 'message_type', - 'message_id', - 'message_data', - 'undone', - ]) - -MessageType = namedtuple('MessageType', ['message_type_id', - 'name', - ]) - -Interface = namedtuple('Interface', ['interface_id', - 'device', - 'name', - 'id', - ]) - -Group = namedtuple('Group', ['group_id', - 'id', - 'name', - 'x1', - 'y1', - 'x2', - 'y2', - 'topology', - 'group_type', - 'inventory_group_id', - ]) - -GroupDevice = namedtuple('GroupDevice', ['group_device_id', - 'group', - 'device', - ]) - -DataBinding = namedtuple('DataBinding', ['data_binding_id', - 'column', - 'row', - 'table', - 'primary_key_id', - 'field', - 'data_type', - 'sheet', - ]) - -DataType = namedtuple('DataType', ['data_type_id', - 'type_name', - ]) - -DataSheet = namedtuple('DataSheet', ['data_sheet_id', - 'name', - 'topology', - 'client', - ]) - -Stream = namedtuple('Stream', ['stream_id', - 'from_device', - 'to_device', - 'label', - 'id', - ]) - -Process = namedtuple('Process', ['process_id', - 'device', - 'name', - 'process_type', - 'id', - ]) - -Toolbox = namedtuple('Toolbox', ['toolbox_id', - 'name', - ]) - -ToolboxItem = namedtuple('ToolboxItem', ['toolbox_item_id', - 'toolbox', - 'data', - ]) - -FSMTrace = namedtuple('FSMTrace', ['fsm_trace_id', - 'fsm_name', - 'from_state', - 'to_state', - 'message_type', - 'client', - 'trace_session_id', - 'order', - ]) - -TopologyInventory = namedtuple('TopologyInventory', ['topology_inventory_id', - 'topology', - 'inventory_id', - ]) - -EventTrace = namedtuple('EventTrace', ['event_trace_id', - 'client', - 'trace_session_id', - 'event_data', - 'message_id', - ]) - -Coverage = namedtuple('Coverage', ['coverage_id', - 'coverage_data', - 'test_result', - ]) - -TopologySnapshot = namedtuple('TopologySnapshot', ['topology_snapshot_id', - 'client', - 'topology_id', - 'trace_session_id', - 'snapshot_data', - 'order', - ]) - -TestCase = namedtuple('TestCase', ['test_case_id', - 'name', - 'test_case_data', - ]) - -Result = namedtuple('Result', ['result_id', - 'name', - ]) - -CodeUnderTest = namedtuple('CodeUnderTest', ['code_under_test_id', - 'version_x', - 'version_y', - 'version_z', - 'commits_since', - 'commit_hash', - ]) - -TestResult = namedtuple('TestResult', ['test_result_id', - 'test_case', - 'result', - 'code_under_test', - 'time', - 'id', - 'client', - ]) diff --git a/awx/network_ui/urls.py b/awx/network_ui/urls.py index 7aad106bc0..c679105371 100644 --- a/awx/network_ui/urls.py +++ b/awx/network_ui/urls.py @@ -1,13 +1,7 @@ # Copyright (c) 2017 Red Hat, Inc -from django.conf.urls import url, include - -import awx.api.urls +from django.conf.urls import url from awx.network_ui import views -from awx.network_ui import v1_api_urls -from awx.network_ui import v2_api_urls - -import awx.network_ui.v2_api_access app_name = 'network_ui' urlpatterns = [ @@ -18,13 +12,4 @@ urlpatterns = [ url(r'^download_recording$', views.download_recording, name='download_recording'), url(r'^topology.json$', views.json_topology_data, name='json_topology_data'), url(r'^topology.yaml$', views.yaml_topology_data, name='json_topology_data'), - url(r'^api/v1/', include(v1_api_urls.router.urls)), ] - -urlpatterns += [ - url(r'^api/(?P(v2))/canvas/', include(v2_api_urls.urls)) -] -awx.api.urls.urlpatterns += [ - url(r'^(?P(v2))/canvas/', include(v2_api_urls.urls)) -] - diff --git a/awx/network_ui/v1_api_serializers.py b/awx/network_ui/v1_api_serializers.py deleted file mode 100644 index 988c9b12c1..0000000000 --- a/awx/network_ui/v1_api_serializers.py +++ /dev/null @@ -1,129 +0,0 @@ -from awx.api.serializers import BaseSerializer - -from awx.network_ui.models import Device -from awx.network_ui.models import Link -from awx.network_ui.models import Topology -from awx.network_ui.models import Interface -from awx.network_ui.models import Group -from awx.network_ui.models import GroupDevice -from awx.network_ui.models import Stream -from awx.network_ui.models import Process -from awx.network_ui.models import Toolbox -from awx.network_ui.models import ToolboxItem -from awx.network_ui.models import TopologyInventory - - -class DeviceSerializer(BaseSerializer): - class Meta: - model = Device - fields = ('device_id', - 'topology', - 'name', - 'x', - 'y', - 'id', - 'device_type', - 'interface_id_seq', - 'process_id_seq', - 'host_id') - - -class LinkSerializer(BaseSerializer): - class Meta: - model = Link - fields = ('link_id', - 'from_device', - 'to_device', - 'from_interface', - 'to_interface', - 'id', - 'name') - - -class TopologySerializer(BaseSerializer): - class Meta: - model = Topology - fields = ('topology_id', - 'name', - 'scale', - 'panX', - 'panY', - 'device_id_seq', - 'link_id_seq', - 'group_id_seq', - 'stream_id_seq') - - -class InterfaceSerializer(BaseSerializer): - class Meta: - model = Interface - fields = ('interface_id', - 'device', - 'name', - 'id') - - -class GroupSerializer(BaseSerializer): - class Meta: - model = Group - fields = ('group_id', - 'id', - 'name', - 'x1', - 'y1', - 'x2', - 'y2', - 'topology', - 'group_type', - 'inventory_group_id') - - -class GroupDeviceSerializer(BaseSerializer): - class Meta: - model = GroupDevice - fields = ('group_device_id', - 'group', - 'device') - - -class StreamSerializer(BaseSerializer): - class Meta: - model = Stream - fields = ('stream_id', - 'from_device', - 'to_device', - 'label', - 'id') - - -class ProcessSerializer(BaseSerializer): - class Meta: - model = Process - fields = ('process_id', - 'device', - 'name', - 'process_type', - 'id') - - -class ToolboxSerializer(BaseSerializer): - class Meta: - model = Toolbox - fields = ('toolbox_id', - 'name') - - -class ToolboxItemSerializer(BaseSerializer): - class Meta: - model = ToolboxItem - fields = ('toolbox_item_id', - 'toolbox', - 'data') - - -class TopologyInventorySerializer(BaseSerializer): - class Meta: - model = TopologyInventory - fields = ('topology_inventory_id', - 'topology', - 'inventory_id') diff --git a/awx/network_ui/v1_api_urls.py b/awx/network_ui/v1_api_urls.py deleted file mode 100644 index 32a10a77de..0000000000 --- a/awx/network_ui/v1_api_urls.py +++ /dev/null @@ -1,18 +0,0 @@ -from rest_framework import routers -from awx.network_ui import v1_api_views - - -router = routers.DefaultRouter() - - -router.register(r'device', v1_api_views.DeviceViewSet) -router.register(r'link', v1_api_views.LinkViewSet) -router.register(r'topology', v1_api_views.TopologyViewSet) -router.register(r'interface', v1_api_views.InterfaceViewSet) -router.register(r'group', v1_api_views.GroupViewSet) -router.register(r'groupdevice', v1_api_views.GroupDeviceViewSet) -router.register(r'stream', v1_api_views.StreamViewSet) -router.register(r'process', v1_api_views.ProcessViewSet) -router.register(r'toolbox', v1_api_views.ToolboxViewSet) -router.register(r'toolboxitem', v1_api_views.ToolboxItemViewSet) -router.register(r'topologyinventory', v1_api_views.TopologyInventoryViewSet) diff --git a/awx/network_ui/v1_api_views.py b/awx/network_ui/v1_api_views.py deleted file mode 100644 index e05313a7a5..0000000000 --- a/awx/network_ui/v1_api_views.py +++ /dev/null @@ -1,556 +0,0 @@ -import channels -import json -from rest_framework import viewsets -from utils import transform_dict - -from awx.network_ui.models import Device -from awx.network_ui.models import Link -from awx.network_ui.models import Topology -from awx.network_ui.models import Interface -from awx.network_ui.models import Group -from awx.network_ui.models import GroupDevice -from awx.network_ui.models import Stream -from awx.network_ui.models import Process -from awx.network_ui.models import Toolbox -from awx.network_ui.models import ToolboxItem -from awx.network_ui.models import TopologyInventory - -from awx.network_ui.v1_api_serializers import DeviceSerializer -from awx.network_ui.v1_api_serializers import LinkSerializer -from awx.network_ui.v1_api_serializers import TopologySerializer -from awx.network_ui.v1_api_serializers import InterfaceSerializer -from awx.network_ui.v1_api_serializers import GroupSerializer -from awx.network_ui.v1_api_serializers import GroupDeviceSerializer -from awx.network_ui.v1_api_serializers import StreamSerializer -from awx.network_ui.v1_api_serializers import ProcessSerializer -from awx.network_ui.v1_api_serializers import ToolboxSerializer -from awx.network_ui.v1_api_serializers import ToolboxItemSerializer -from awx.network_ui.v1_api_serializers import TopologyInventorySerializer - - -class DeviceViewSet(viewsets.ModelViewSet): - - queryset = Device.objects.all() - serializer_class = DeviceSerializer - - def create(self, request, *args, **kwargs): - response = super(DeviceViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['device_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "DeviceCreate" - message['device_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Device.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in Device.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "DeviceUpdate" - message['device_id'] = pk - message['sender'] = 0 - - for topology_id in Device.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(DeviceViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(DeviceViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(DeviceViewSet, self).destroy(request, pk, *args, **kwargs) - - -class LinkViewSet(viewsets.ModelViewSet): - - queryset = Link.objects.all() - serializer_class = LinkSerializer - - def create(self, request, *args, **kwargs): - response = super(LinkViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['link_id'] - message = dict() - - message.update(transform_dict({'to_device__id': 'to_device_id', - 'from_interface__id': 'from_interface_id', - 'name': 'name', - 'from_device__id': 'from_device_id', - 'id': 'id', - 'to_interface__id': 'to_interface_id', - }, Link.objects.filter(pk=pk).values(*['to_device__id', - 'from_interface__id', - 'name', - 'from_device__id', - 'id', - 'to_interface__id', - ])[0])) - - message['msg_type'] = "LinkCreate" - message['link_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Link.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True) - for topology_id in Link.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "LinkUpdate" - message['link_id'] = pk - message['sender'] = 0 - - for topology_id in Link.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(LinkViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(LinkViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(LinkViewSet, self).destroy(request, pk, *args, **kwargs) - - -class TopologyViewSet(viewsets.ModelViewSet): - - queryset = Topology.objects.all() - serializer_class = TopologySerializer - - def create(self, request, *args, **kwargs): - response = super(TopologyViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['topology_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "TopologyCreate" - message['topology_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Topology.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in Topology.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "TopologyUpdate" - message['topology_id'] = pk - message['sender'] = 0 - - for topology_id in Topology.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(TopologyViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(TopologyViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(TopologyViewSet, self).destroy(request, pk, *args, **kwargs) - - -class InterfaceViewSet(viewsets.ModelViewSet): - - queryset = Interface.objects.all() - serializer_class = InterfaceSerializer - - def create(self, request, *args, **kwargs): - response = super(InterfaceViewSet, self).create( - request, *args, **kwargs) - print response.data - pk = response.data['interface_id'] - message = dict() - - message.update(transform_dict({'id': 'id', - 'device__id': 'device_id', - 'name': 'name', - }, Interface.objects.filter(pk=pk).values(*['id', - 'device__id', - 'name', - ])[0])) - - message['msg_type'] = "InterfaceCreate" - message['interface_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Interface.objects.filter(pk=pk).values_list('device__topology_id', flat=True) - for topology_id in Interface.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "InterfaceUpdate" - message['interface_id'] = pk - message['sender'] = 0 - - for topology_id in Interface.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(InterfaceViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(InterfaceViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(InterfaceViewSet, self).destroy(request, pk, *args, **kwargs) - - -class GroupViewSet(viewsets.ModelViewSet): - - queryset = Group.objects.all() - serializer_class = GroupSerializer - - def create(self, request, *args, **kwargs): - response = super(GroupViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['group_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "GroupCreate" - message['group_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Group.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in Group.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "GroupUpdate" - message['group_id'] = pk - message['sender'] = 0 - - for topology_id in Group.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(GroupViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(GroupViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(GroupViewSet, self).destroy(request, pk, *args, **kwargs) - - -class GroupDeviceViewSet(viewsets.ModelViewSet): - - queryset = GroupDevice.objects.all() - serializer_class = GroupDeviceSerializer - - def create(self, request, *args, **kwargs): - response = super(GroupDeviceViewSet, self).create( - request, *args, **kwargs) - print response.data - pk = response.data['group_device_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "GroupDeviceCreate" - message['group_device_id'] = pk - message['sender'] = 0 - - print "sending to topologies", GroupDevice.objects.filter(pk=pk).values_list('group__topology_id', flat=True) - for topology_id in GroupDevice.objects.filter(pk=pk).values_list('group__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "GroupDeviceUpdate" - message['group_device_id'] = pk - message['sender'] = 0 - - for topology_id in GroupDevice.objects.filter(pk=pk).values_list('group__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(GroupDeviceViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(GroupDeviceViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(GroupDeviceViewSet, self).destroy(request, pk, *args, **kwargs) - - -class StreamViewSet(viewsets.ModelViewSet): - - queryset = Stream.objects.all() - serializer_class = StreamSerializer - - def create(self, request, *args, **kwargs): - response = super(StreamViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['stream_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "StreamCreate" - message['stream_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Stream.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True) - for topology_id in Stream.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "StreamUpdate" - message['stream_id'] = pk - message['sender'] = 0 - - for topology_id in Stream.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(StreamViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(StreamViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(StreamViewSet, self).destroy(request, pk, *args, **kwargs) - - -class ProcessViewSet(viewsets.ModelViewSet): - - queryset = Process.objects.all() - serializer_class = ProcessSerializer - - def create(self, request, *args, **kwargs): - response = super(ProcessViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['process_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "ProcessCreate" - message['process_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Process.objects.filter(pk=pk).values_list('device__topology_id', flat=True) - for topology_id in Process.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "ProcessUpdate" - message['process_id'] = pk - message['sender'] = 0 - - for topology_id in Process.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(ProcessViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(ProcessViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(ProcessViewSet, self).destroy(request, pk, *args, **kwargs) - - -class ToolboxViewSet(viewsets.ModelViewSet): - - queryset = Toolbox.objects.all() - serializer_class = ToolboxSerializer - - def create(self, request, *args, **kwargs): - response = super(ToolboxViewSet, self).create(request, *args, **kwargs) - print response.data - pk = response.data['toolbox_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "ToolboxCreate" - message['toolbox_id'] = pk - message['sender'] = 0 - - print "sending to all topologies" - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "ToolboxUpdate" - message['toolbox_id'] = pk - message['sender'] = 0 - - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(ToolboxViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(ToolboxViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(ToolboxViewSet, self).destroy(request, pk, *args, **kwargs) - - -class ToolboxItemViewSet(viewsets.ModelViewSet): - - queryset = ToolboxItem.objects.all() - serializer_class = ToolboxItemSerializer - - def create(self, request, *args, **kwargs): - response = super(ToolboxItemViewSet, self).create( - request, *args, **kwargs) - print response.data - pk = response.data['toolbox_item_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "ToolboxItemCreate" - message['toolbox_item_id'] = pk - message['sender'] = 0 - - print "sending to all topologies" - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "ToolboxItemUpdate" - message['toolbox_item_id'] = pk - message['sender'] = 0 - - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(ToolboxItemViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(ToolboxItemViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(ToolboxItemViewSet, self).destroy(request, pk, *args, **kwargs) - - -class TopologyInventoryViewSet(viewsets.ModelViewSet): - - queryset = TopologyInventory.objects.all() - serializer_class = TopologyInventorySerializer - - def create(self, request, *args, **kwargs): - response = super(TopologyInventoryViewSet, self).create( - request, *args, **kwargs) - print response.data - pk = response.data['topology_inventory_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "TopologyInventoryCreate" - message['topology_inventory_id'] = pk - message['sender'] = 0 - - print "sending to topologies", TopologyInventory.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in TopologyInventory.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "TopologyInventoryUpdate" - message['topology_inventory_id'] = pk - message['sender'] = 0 - - for topology_id in TopologyInventory.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group( - "topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(TopologyInventoryViewSet, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(TopologyInventoryViewSet, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(TopologyInventoryViewSet, self).destroy(request, pk, *args, **kwargs) diff --git a/awx/network_ui/v2_api_access.py b/awx/network_ui/v2_api_access.py deleted file mode 100644 index 398e467032..0000000000 --- a/awx/network_ui/v2_api_access.py +++ /dev/null @@ -1,101 +0,0 @@ -from awx.main.access import BaseAccess, access_registry - -from awx.network_ui.models import Device -from awx.network_ui.models import Link -from awx.network_ui.models import Topology -from awx.network_ui.models import Interface -from awx.network_ui.models import Group -from awx.network_ui.models import GroupDevice -from awx.network_ui.models import Stream -from awx.network_ui.models import Process -from awx.network_ui.models import Toolbox -from awx.network_ui.models import ToolboxItem -from awx.network_ui.models import TopologyInventory - - -class DeviceAccess(BaseAccess): - - model = Device - - -access_registry[Device] = DeviceAccess - - -class LinkAccess(BaseAccess): - - model = Link - - -access_registry[Link] = LinkAccess - - -class TopologyAccess(BaseAccess): - - model = Topology - - -access_registry[Topology] = TopologyAccess - - -class InterfaceAccess(BaseAccess): - - model = Interface - - -access_registry[Interface] = InterfaceAccess - - -class GroupAccess(BaseAccess): - - model = Group - - -access_registry[Group] = GroupAccess - - -class GroupDeviceAccess(BaseAccess): - - model = GroupDevice - - -access_registry[GroupDevice] = GroupDeviceAccess - - -class StreamAccess(BaseAccess): - - model = Stream - - -access_registry[Stream] = StreamAccess - - -class ProcessAccess(BaseAccess): - - model = Process - - -access_registry[Process] = ProcessAccess - - -class ToolboxAccess(BaseAccess): - - model = Toolbox - - -access_registry[Toolbox] = ToolboxAccess - - -class ToolboxItemAccess(BaseAccess): - - model = ToolboxItem - - -access_registry[ToolboxItem] = ToolboxItemAccess - - -class TopologyInventoryAccess(BaseAccess): - - model = TopologyInventory - - -access_registry[TopologyInventory] = TopologyInventoryAccess diff --git a/awx/network_ui/v2_api_serializers.py b/awx/network_ui/v2_api_serializers.py deleted file mode 100644 index 988c9b12c1..0000000000 --- a/awx/network_ui/v2_api_serializers.py +++ /dev/null @@ -1,129 +0,0 @@ -from awx.api.serializers import BaseSerializer - -from awx.network_ui.models import Device -from awx.network_ui.models import Link -from awx.network_ui.models import Topology -from awx.network_ui.models import Interface -from awx.network_ui.models import Group -from awx.network_ui.models import GroupDevice -from awx.network_ui.models import Stream -from awx.network_ui.models import Process -from awx.network_ui.models import Toolbox -from awx.network_ui.models import ToolboxItem -from awx.network_ui.models import TopologyInventory - - -class DeviceSerializer(BaseSerializer): - class Meta: - model = Device - fields = ('device_id', - 'topology', - 'name', - 'x', - 'y', - 'id', - 'device_type', - 'interface_id_seq', - 'process_id_seq', - 'host_id') - - -class LinkSerializer(BaseSerializer): - class Meta: - model = Link - fields = ('link_id', - 'from_device', - 'to_device', - 'from_interface', - 'to_interface', - 'id', - 'name') - - -class TopologySerializer(BaseSerializer): - class Meta: - model = Topology - fields = ('topology_id', - 'name', - 'scale', - 'panX', - 'panY', - 'device_id_seq', - 'link_id_seq', - 'group_id_seq', - 'stream_id_seq') - - -class InterfaceSerializer(BaseSerializer): - class Meta: - model = Interface - fields = ('interface_id', - 'device', - 'name', - 'id') - - -class GroupSerializer(BaseSerializer): - class Meta: - model = Group - fields = ('group_id', - 'id', - 'name', - 'x1', - 'y1', - 'x2', - 'y2', - 'topology', - 'group_type', - 'inventory_group_id') - - -class GroupDeviceSerializer(BaseSerializer): - class Meta: - model = GroupDevice - fields = ('group_device_id', - 'group', - 'device') - - -class StreamSerializer(BaseSerializer): - class Meta: - model = Stream - fields = ('stream_id', - 'from_device', - 'to_device', - 'label', - 'id') - - -class ProcessSerializer(BaseSerializer): - class Meta: - model = Process - fields = ('process_id', - 'device', - 'name', - 'process_type', - 'id') - - -class ToolboxSerializer(BaseSerializer): - class Meta: - model = Toolbox - fields = ('toolbox_id', - 'name') - - -class ToolboxItemSerializer(BaseSerializer): - class Meta: - model = ToolboxItem - fields = ('toolbox_item_id', - 'toolbox', - 'data') - - -class TopologyInventorySerializer(BaseSerializer): - class Meta: - model = TopologyInventory - fields = ('topology_inventory_id', - 'topology', - 'inventory_id') diff --git a/awx/network_ui/v2_api_urls.py b/awx/network_ui/v2_api_urls.py deleted file mode 100644 index e98bc10eae..0000000000 --- a/awx/network_ui/v2_api_urls.py +++ /dev/null @@ -1,74 +0,0 @@ -from django.conf.urls import url - -from awx.network_ui.v2_api_views import (DeviceList, DeviceDetail) -from awx.network_ui.v2_api_views import (LinkList, LinkDetail) -from awx.network_ui.v2_api_views import (TopologyList, TopologyDetail) -from awx.network_ui.v2_api_views import (InterfaceList, InterfaceDetail) -from awx.network_ui.v2_api_views import (GroupList, GroupDetail) -from awx.network_ui.v2_api_views import (GroupDeviceList, GroupDeviceDetail) -from awx.network_ui.v2_api_views import (StreamList, StreamDetail) -from awx.network_ui.v2_api_views import (ProcessList, ProcessDetail) -from awx.network_ui.v2_api_views import (ToolboxList, ToolboxDetail) -from awx.network_ui.v2_api_views import (ToolboxItemList, ToolboxItemDetail) -from awx.network_ui.v2_api_views import (TopologyInventoryList, TopologyInventoryDetail) - - -urls = [] - - -urls += [ - url(r'^device/$', DeviceList.as_view(), name='canvas_device_list'), - url(r'^device/(?P[0-9]+)/$', DeviceDetail.as_view(), name='canvas_device_detail'), -] - -urls += [ - url(r'^link/$', LinkList.as_view(), name='canvas_link_list'), - url(r'^link/(?P[0-9]+)/$', LinkDetail.as_view(), name='canvas_link_detail'), -] - -urls += [ - url(r'^topology/$', TopologyList.as_view(), name='canvas_topology_list'), - url(r'^topology/(?P[0-9]+)/$', TopologyDetail.as_view(), name='canvas_topology_detail'), -] - -urls += [ - url(r'^interface/$', InterfaceList.as_view(), name='canvas_interface_list'), - url(r'^interface/(?P[0-9]+)/$', InterfaceDetail.as_view(), name='canvas_interface_detail'), -] - -urls += [ - url(r'^group/$', GroupList.as_view(), name='canvas_group_list'), - url(r'^group/(?P[0-9]+)/$', GroupDetail.as_view(), name='canvas_group_detail'), -] - -urls += [ - url(r'^groupdevice/$', GroupDeviceList.as_view(), name='canvas_groupdevice_list'), - url(r'^groupdevice/(?P[0-9]+)/$', GroupDeviceDetail.as_view(), name='canvas_groupdevice_detail'), -] - -urls += [ - url(r'^stream/$', StreamList.as_view(), name='canvas_stream_list'), - url(r'^stream/(?P[0-9]+)/$', StreamDetail.as_view(), name='canvas_stream_detail'), -] - -urls += [ - url(r'^process/$', ProcessList.as_view(), name='canvas_process_list'), - url(r'^process/(?P[0-9]+)/$', ProcessDetail.as_view(), name='canvas_process_detail'), -] - -urls += [ - url(r'^toolbox/$', ToolboxList.as_view(), name='canvas_toolbox_list'), - url(r'^toolbox/(?P[0-9]+)/$', ToolboxDetail.as_view(), name='canvas_toolbox_detail'), -] - -urls += [ - url(r'^toolboxitem/$', ToolboxItemList.as_view(), name='canvas_toolboxitem_list'), - url(r'^toolboxitem/(?P[0-9]+)/$', ToolboxItemDetail.as_view(), name='canvas_toolboxitem_detail'), -] - -urls += [ - url(r'^topologyinventory/$', TopologyInventoryList.as_view(), name='canvas_topologyinventory_list'), - url(r'^topologyinventory/(?P[0-9]+)/$', TopologyInventoryDetail.as_view(), name='canvas_topologyinventory_detail'), -] - -__all__ = ['urls'] diff --git a/awx/network_ui/v2_api_views.py b/awx/network_ui/v2_api_views.py deleted file mode 100644 index 75cc1c0573..0000000000 --- a/awx/network_ui/v2_api_views.py +++ /dev/null @@ -1,616 +0,0 @@ -import json -import channels -from utils import transform_dict - -from awx.api.generics import ListCreateAPIView -from awx.api.generics import RetrieveUpdateDestroyAPIView -from awx.network_ui.models import (Device, - Link, - Topology, - Interface, - Group, - GroupDevice, - Stream, - Process, - Toolbox, - ToolboxItem, - TopologyInventory, - ) -from awx.network_ui.v2_api_serializers import (DeviceSerializer, - LinkSerializer, - TopologySerializer, - InterfaceSerializer, - GroupSerializer, - GroupDeviceSerializer, - StreamSerializer, - ProcessSerializer, - ToolboxSerializer, - ToolboxItemSerializer, - TopologyInventorySerializer, - ) - - -class DeviceList(ListCreateAPIView): - - model = Device - serializer_class = DeviceSerializer - - def create(self, request, *args, **kwargs): - response = super(DeviceList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['device_id'] - message = dict() - - message.update(transform_dict({'interface_id_seq': 'interface_id_seq', - 'name': 'name', - 'process_id_seq': 'process_id_seq', - 'device_type': 'type', - 'host_id': 'host_id', - 'y': 'y', - 'x': 'x', - 'topology_id': 'topology_id', - 'id': 'id', - }, Device.objects.filter(pk=pk).values(*['interface_id_seq', - 'name', - 'process_id_seq', - 'device_type', - 'host_id', - 'y', - 'x', - 'topology_id', - 'id', - ])[0])) - - message['msg_type'] = "DeviceCreate" - message['device_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Device.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in Device.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class DeviceDetail(RetrieveUpdateDestroyAPIView): - - model = Device - serializer_class = DeviceSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "DeviceUpdate" - message['device_id'] = pk - message['sender'] = 0 - - for topology_id in Device.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(DeviceDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(DeviceDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(DeviceDetail, self).destroy(request, pk, *args, **kwargs) - - -class LinkList(ListCreateAPIView): - - model = Link - serializer_class = LinkSerializer - - def create(self, request, *args, **kwargs): - response = super(LinkList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['link_id'] - message = dict() - - message.update(transform_dict({'to_device__id': 'to_device_id', - 'from_interface__id': 'from_interface_id', - 'name': 'name', - 'from_device__id': 'from_device_id', - 'id': 'id', - 'to_interface__id': 'to_interface_id', - }, Link.objects.filter(pk=pk).values(*['to_device__id', - 'from_interface__id', - 'name', - 'from_device__id', - 'id', - 'to_interface__id', - ])[0])) - - message['msg_type'] = "LinkCreate" - message['link_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Link.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True) - for topology_id in Link.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class LinkDetail(RetrieveUpdateDestroyAPIView): - - model = Link - serializer_class = LinkSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "LinkUpdate" - message['link_id'] = pk - message['sender'] = 0 - - for topology_id in Link.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(LinkDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(LinkDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(LinkDetail, self).destroy(request, pk, *args, **kwargs) - - -class TopologyList(ListCreateAPIView): - - model = Topology - serializer_class = TopologySerializer - - def create(self, request, *args, **kwargs): - response = super(TopologyList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['topology_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "TopologyCreate" - message['topology_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Topology.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in Topology.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class TopologyDetail(RetrieveUpdateDestroyAPIView): - - model = Topology - serializer_class = TopologySerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "TopologyUpdate" - message['topology_id'] = pk - message['sender'] = 0 - - for topology_id in Topology.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(TopologyDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(TopologyDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(TopologyDetail, self).destroy(request, pk, *args, **kwargs) - - -class InterfaceList(ListCreateAPIView): - - model = Interface - serializer_class = InterfaceSerializer - - def create(self, request, *args, **kwargs): - response = super(InterfaceList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['interface_id'] - message = dict() - - message.update(transform_dict({'id': 'id', - 'device__id': 'device_id', - 'name': 'name', - }, Interface.objects.filter(pk=pk).values(*['id', - 'device__id', - 'name', - ])[0])) - - message['msg_type'] = "InterfaceCreate" - message['interface_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Interface.objects.filter(pk=pk).values_list('device__topology_id', flat=True) - for topology_id in Interface.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class InterfaceDetail(RetrieveUpdateDestroyAPIView): - - model = Interface - serializer_class = InterfaceSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "InterfaceUpdate" - message['interface_id'] = pk - message['sender'] = 0 - - for topology_id in Interface.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(InterfaceDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(InterfaceDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(InterfaceDetail, self).destroy(request, pk, *args, **kwargs) - - -class GroupList(ListCreateAPIView): - - model = Group - serializer_class = GroupSerializer - - def create(self, request, *args, **kwargs): - response = super(GroupList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['group_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "GroupCreate" - message['group_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Group.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in Group.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class GroupDetail(RetrieveUpdateDestroyAPIView): - - model = Group - serializer_class = GroupSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "GroupUpdate" - message['group_id'] = pk - message['sender'] = 0 - - for topology_id in Group.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(GroupDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(GroupDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(GroupDetail, self).destroy(request, pk, *args, **kwargs) - - -class GroupDeviceList(ListCreateAPIView): - - model = GroupDevice - serializer_class = GroupDeviceSerializer - - def create(self, request, *args, **kwargs): - response = super(GroupDeviceList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['group_device_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "GroupDeviceCreate" - message['group_device_id'] = pk - message['sender'] = 0 - - print "sending to topologies", GroupDevice.objects.filter(pk=pk).values_list('group__topology_id', flat=True) - for topology_id in GroupDevice.objects.filter(pk=pk).values_list('group__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class GroupDeviceDetail(RetrieveUpdateDestroyAPIView): - - model = GroupDevice - serializer_class = GroupDeviceSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "GroupDeviceUpdate" - message['group_device_id'] = pk - message['sender'] = 0 - - for topology_id in GroupDevice.objects.filter(pk=pk).values_list('group__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(GroupDeviceDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(GroupDeviceDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(GroupDeviceDetail, self).destroy(request, pk, *args, **kwargs) - - -class StreamList(ListCreateAPIView): - - model = Stream - serializer_class = StreamSerializer - - def create(self, request, *args, **kwargs): - response = super(StreamList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['stream_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "StreamCreate" - message['stream_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Stream.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True) - for topology_id in Stream.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class StreamDetail(RetrieveUpdateDestroyAPIView): - - model = Stream - serializer_class = StreamSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "StreamUpdate" - message['stream_id'] = pk - message['sender'] = 0 - - for topology_id in Stream.objects.filter(pk=pk).values_list('from_device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(StreamDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(StreamDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(StreamDetail, self).destroy(request, pk, *args, **kwargs) - - -class ProcessList(ListCreateAPIView): - - model = Process - serializer_class = ProcessSerializer - - def create(self, request, *args, **kwargs): - response = super(ProcessList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['process_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "ProcessCreate" - message['process_id'] = pk - message['sender'] = 0 - - print "sending to topologies", Process.objects.filter(pk=pk).values_list('device__topology_id', flat=True) - for topology_id in Process.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class ProcessDetail(RetrieveUpdateDestroyAPIView): - - model = Process - serializer_class = ProcessSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "ProcessUpdate" - message['process_id'] = pk - message['sender'] = 0 - - for topology_id in Process.objects.filter(pk=pk).values_list('device__topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(ProcessDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(ProcessDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(ProcessDetail, self).destroy(request, pk, *args, **kwargs) - - -class ToolboxList(ListCreateAPIView): - - model = Toolbox - serializer_class = ToolboxSerializer - - def create(self, request, *args, **kwargs): - response = super(ToolboxList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['toolbox_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "ToolboxCreate" - message['toolbox_id'] = pk - message['sender'] = 0 - - print "sending to all topologies" - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class ToolboxDetail(RetrieveUpdateDestroyAPIView): - - model = Toolbox - serializer_class = ToolboxSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "ToolboxUpdate" - message['toolbox_id'] = pk - message['sender'] = 0 - - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(ToolboxDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(ToolboxDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(ToolboxDetail, self).destroy(request, pk, *args, **kwargs) - - -class ToolboxItemList(ListCreateAPIView): - - model = ToolboxItem - serializer_class = ToolboxItemSerializer - - def create(self, request, *args, **kwargs): - response = super(ToolboxItemList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['toolbox_item_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "ToolboxItemCreate" - message['toolbox_item_id'] = pk - message['sender'] = 0 - - print "sending to all topologies" - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class ToolboxItemDetail(RetrieveUpdateDestroyAPIView): - - model = ToolboxItem - serializer_class = ToolboxItemSerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "ToolboxItemUpdate" - message['toolbox_item_id'] = pk - message['sender'] = 0 - - for topology_id in Topology.objects.all().values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(ToolboxItemDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(ToolboxItemDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(ToolboxItemDetail, self).destroy(request, pk, *args, **kwargs) - - -class TopologyInventoryList(ListCreateAPIView): - - model = TopologyInventory - serializer_class = TopologyInventorySerializer - - def create(self, request, *args, **kwargs): - response = super(TopologyInventoryList, self).create(request, *args, **kwargs) - print response.data - pk = response.data['topology_inventory_id'] - message = dict() - - message.update(response.data) - - message['msg_type'] = "TopologyInventoryCreate" - message['topology_inventory_id'] = pk - message['sender'] = 0 - - print "sending to topologies", TopologyInventory.objects.filter(pk=pk).values_list('topology_id', flat=True) - for topology_id in TopologyInventory.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - print "Sent message", message - return response - - -class TopologyInventoryDetail(RetrieveUpdateDestroyAPIView): - - model = TopologyInventory - serializer_class = TopologyInventorySerializer - - def update(self, request, pk=None, *args, **kwargs): - message = dict() - message.update(json.loads(request.body)) - message['msg_type'] = "TopologyInventoryUpdate" - message['topology_inventory_id'] = pk - message['sender'] = 0 - - for topology_id in TopologyInventory.objects.filter(pk=pk).values_list('topology_id', flat=True): - - channels.Group("topology-%s" % topology_id).send({"text": json.dumps([message['msg_type'], message])}) - - return super(TopologyInventoryDetail, self).update(request, pk, *args, **kwargs) - - def partial_update(self, request, pk=None, *args, **kwargs): - return super(TopologyInventoryDetail, self).partial_update(request, pk, *args, **kwargs) - - def destroy(self, request, pk=None, *args, **kwargs): - return super(TopologyInventoryDetail, self).destroy(request, pk, *args, **kwargs) diff --git a/awx/ui/client/src/network-ui/button.directive.js b/awx/ui/client/src/network-ui/button.directive.js deleted file mode 100644 index d8b35aa06d..0000000000 --- a/awx/ui/client/src/network-ui/button.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/button.partial.svg'); - -function button () { - return { restrict: 'A', templateUrl}; -} -exports.button = button; diff --git a/awx/ui/client/src/network-ui/button.partial.svg b/awx/ui/client/src/network-ui/button.partial.svg deleted file mode 100644 index 274dd7c97a..0000000000 --- a/awx/ui/client/src/network-ui/button.partial.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - {{button.name}} diff --git a/awx/ui/client/src/network-ui/buttons.fsm.js b/awx/ui/client/src/network-ui/buttons.fsm.js deleted file mode 100644 index eed64818eb..0000000000 --- a/awx/ui/client/src/network-ui/buttons.fsm.js +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - -function _ButtonPressed () { - this.name = 'ButtonPressed'; -} -inherits(_ButtonPressed, _State); -var ButtonPressed = new _ButtonPressed(); -exports.ButtonPressed = ButtonPressed; - - - - -_Ready.prototype.onMouseDown = function (controller, msg_type, $event) { - - var i = 0; - var buttons = controller.scope.all_buttons; - var button = null; - for (i = 0; i < buttons.length; i++) { - button = buttons[i]; - if (button.is_selected(controller.scope.mouseX, controller.scope.mouseY)) { - button.fsm.handle_message(msg_type, $event); - controller.changeState(ButtonPressed); - break; - } - button = null; - } - if (button === null) { - controller.delegate_channel.send(msg_type, $event); - } - -}; -_Ready.prototype.onMouseDown.transitions = ['ButtonPressed']; - -_Ready.prototype.onMouseMove = function (controller, msg_type, $event) { - - if (!controller.scope.hide_buttons) { - - var i = 0; - var buttons = controller.scope.all_buttons; - var button = null; - for (i = 0; i < buttons.length; i++) { - button = buttons[i]; - button.mouse_over = false; - if (button.is_selected(controller.scope.mouseX, controller.scope.mouseY)) { - button.mouse_over = true; - } - } - } - - controller.delegate_channel.send(msg_type, $event); -}; - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - - - -_ButtonPressed.prototype.onMouseUp = function (controller, msg_type, $event) { - - var i = 0; - var buttons = controller.scope.all_buttons; - var button = null; - for (i = 0; i < buttons.length; i++) { - button = buttons[i]; - button.fsm.handle_message(msg_type, $event); - } - controller.changeState(Ready); - -}; -_ButtonPressed.prototype.onMouseUp.transitions = ['Ready']; - diff --git a/awx/ui/client/src/network-ui/configuration.partial.svg b/awx/ui/client/src/network-ui/configuration.partial.svg deleted file mode 100644 index 2cc1df37e5..0000000000 --- a/awx/ui/client/src/network-ui/configuration.partial.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/awx/ui/client/src/network-ui/debug.partial.svg b/awx/ui/client/src/network-ui/debug.partial.svg index f9816f49a7..3d037ea094 100644 --- a/awx/ui/client/src/network-ui/debug.partial.svg +++ b/awx/ui/client/src/network-ui/debug.partial.svg @@ -35,7 +35,6 @@ Time Pointer: {{time_pointer}} History: {{history.length}} Group State: {{group_controller.state.name}} - Selected groups: {{selected_groups.length}} Hotkeys State: {{hotkeys_controller.state.name}} Mode State: {{mode_controller.state.name}} Device Detail State: {{device_detail_controller.state.name}} diff --git a/awx/ui/client/src/network-ui/device.detail.directive.js b/awx/ui/client/src/network-ui/device.detail.directive.js deleted file mode 100644 index e76b6eef75..0000000000 --- a/awx/ui/client/src/network-ui/device.detail.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/device_detail.partial.svg'); - -function deviceDetail () { - return { restrict: 'A', templateUrl}; -} -exports.deviceDetail = deviceDetail; diff --git a/awx/ui/client/src/network-ui/device.detail.fsm.js b/awx/ui/client/src/network-ui/device.detail.fsm.js deleted file mode 100644 index 87cee94392..0000000000 --- a/awx/ui/client/src/network-ui/device.detail.fsm.js +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); -var models = require('./models.js'); -var messages = require('./messages.js'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Disable () { - this.name = 'Disable'; -} -inherits(_Disable, _State); -var Disable = new _Disable(); -exports.Disable = Disable; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - - - - - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - - -_Ready.prototype.onPasteProcess = function (controller, msg_type, message) { - - console.log([msg_type, message]); - - var i=0; - var devices = controller.scope.devices; - var device = null; - var x = controller.scope.scaledX; - var y = controller.scope.scaledY; - var app = null; - - for(i=0; i < devices.length; i++) { - device = devices[i]; - if (device.is_selected(x, y)) { - console.log(device); - - app = new models.Process(device.process_id_seq(), - message.process.name, - message.process.type, - controller.scope.scaledX, - controller.scope.scaledY); - app.device = device; - device.processes.push(app); - controller.scope.send_control_message(new messages.ProcessCreate(controller.scope.client_id, - app.id, - app.name, - app.type, - app.device.id, - app.x, - app.y)); - break; - } else { - console.log([x,y, device.x, device.y]); - } - } -}; diff --git a/awx/ui/client/src/network-ui/device_detail.partial.svg b/awx/ui/client/src/network-ui/device_detail.partial.svg deleted file mode 100644 index a2564ae4f9..0000000000 --- a/awx/ui/client/src/network-ui/device_detail.partial.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{interface.name}} -{{interface.name}}{{interface.edit_label?'_':''}} - - - - - - - - -{{interface.remote_interface().name}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/awx/ui/client/src/network-ui/group.directive.js b/awx/ui/client/src/network-ui/group.directive.js deleted file mode 100644 index 82adb59cae..0000000000 --- a/awx/ui/client/src/network-ui/group.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/group.partial.svg'); - -function group () { - return { restrict: 'A', templateUrl}; -} -exports.group = group; diff --git a/awx/ui/client/src/network-ui/group.fsm.js b/awx/ui/client/src/network-ui/group.fsm.js deleted file mode 100644 index f9c975bc5f..0000000000 --- a/awx/ui/client/src/network-ui/group.fsm.js +++ /dev/null @@ -1,599 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); -var models = require('./models.js'); -var messages = require('./messages.js'); -var titlecase = require('titlecase'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Resize () { - this.name = 'Resize'; -} -inherits(_Resize, _State); -var Resize = new _Resize(); -exports.Resize = Resize; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - -function _CornerSelected () { - this.name = 'CornerSelected'; -} -inherits(_CornerSelected, _State); -var CornerSelected = new _CornerSelected(); -exports.CornerSelected = CornerSelected; - -function _Selected1 () { - this.name = 'Selected1'; -} -inherits(_Selected1, _State); -var Selected1 = new _Selected1(); -exports.Selected1 = Selected1; - -function _Selected3 () { - this.name = 'Selected3'; -} -inherits(_Selected3, _State); -var Selected3 = new _Selected3(); -exports.Selected3 = Selected3; - -function _Move () { - this.name = 'Move'; -} -inherits(_Move, _State); -var Move = new _Move(); -exports.Move = Move; - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Disable () { - this.name = 'Disable'; -} -inherits(_Disable, _State); -var Disable = new _Disable(); -exports.Disable = Disable; - - -function _EditLabel () { - this.name = 'EditLabel'; -} -inherits(_EditLabel, _State); -var EditLabel = new _EditLabel(); -exports.EditLabel = EditLabel; - -function _Selected2 () { - this.name = 'Selected2'; -} -inherits(_Selected2, _State); -var Selected2 = new _Selected2(); -exports.Selected2 = Selected2; - -function _Placing () { - this.name = 'Placing'; -} -inherits(_Placing, _State); -var Placing = new _Placing(); -exports.Placing = Placing; - -function _ContextMenu () { - this.name = 'ContextMenu'; -} -inherits(_ContextMenu, _State); -var ContextMenu = new _ContextMenu(); -exports.ContextMenu = ContextMenu; - -_State.prototype.onUnselectAll = function (controller, msg_type, $event) { - - controller.changeState(Ready); - controller.delegate_channel.send(msg_type, $event); -}; - -_Resize.prototype.onMouseUp = function (controller, msg_type, $event) { - - controller.changeState(Selected1); - controller.handle_message(msg_type, $event); - -}; -_Resize.prototype.onMouseUp.transitions = ['Selected1']; - -_Resize.prototype.onMouseMove = function (controller) { - - var groups = controller.scope.selected_groups; - - var diffX = controller.scope.scaledX - controller.scope.pressedScaledX; - var diffY = controller.scope.scaledY - controller.scope.pressedScaledY; - var i = 0; - var j = 0; - var membership_old_new = []; - var previous_x1, previous_y1, previous_x2, previous_y2; - for (i = 0; i < groups.length; i++) { - previous_x1 = groups[i].x1; - previous_y1 = groups[i].y1; - previous_x2 = groups[i].x2; - previous_y2 = groups[i].y2; - if (groups[i].selected_corner === models.TOP_LEFT) { - groups[i].x1 = groups[i].x1 + diffX; - groups[i].y1 = groups[i].y1 + diffY; - } - if (groups[i].selected_corner === models.BOTTOM_RIGHT) { - groups[i].x2 = groups[i].x2 + diffX; - groups[i].y2 = groups[i].y2 + diffY; - } - if (groups[i].selected_corner === models.TOP_RIGHT) { - groups[i].x2 = groups[i].x2 + diffX; - groups[i].y1 = groups[i].y1 + diffY; - } - if (groups[i].selected_corner === models.BOTTOM_LEFT) { - groups[i].x1 = groups[i].x1 + diffX; - groups[i].y2 = groups[i].y2 + diffY; - } - - membership_old_new = groups[i].update_membership(controller.scope.devices, - controller.scope.groups); - for(j = 0; j < membership_old_new[0].length; j++) { - membership_old_new[0][j].selected = false; - } - for(j = 0; j < membership_old_new[1].length; j++) { - membership_old_new[1][j].selected = true; - } - - controller.scope.send_control_message(new messages.GroupMove(controller.scope.client_id, - groups[i].id, - groups[i].x1, - groups[i].y1, - groups[i].x2, - groups[i].y2, - previous_x1, - previous_y1, - previous_x2, - previous_y2)); - controller.scope.send_control_message(new messages.GroupMembership(controller.scope.client_id, - groups[i].id, - membership_old_new[2])); - controller.scope.create_group_association(groups[i], membership_old_new[6]); - controller.scope.delete_group_association(groups[i], membership_old_new[7]); - } - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; -}; - -_Resize.prototype.start = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - for (i = 0; i < groups.length; i++) { - groups[i].moving = true; - } -}; - -_Resize.prototype.end = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - var j = 0; - for (i = 0; i < groups.length; i++) { - for(j = 0; j < groups[i].devices.length; j++) { - groups[i].devices[j].selected = false; - } - } - - for (i = 0; i < groups.length; i++) { - groups[i].moving = false; - } -}; - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - -_CornerSelected.prototype.start = function (controller) { - - var groups = controller.scope.selected_groups; - var i = 0; - var x = controller.scope.scaledX; - var y = controller.scope.scaledY; - for (i = 0; i < groups.length; i++) { - groups[i].selected_corner = groups[i].select_corner(x, y); - } -}; - -_CornerSelected.prototype.onMouseMove = function (controller) { - - controller.changeState(Resize); -}; -_CornerSelected.prototype.onMouseMove.transitions = ['Resize']; - -_CornerSelected.prototype.onMouseUp = function (controller, msg_type, $event) { - - controller.changeState(Selected1); - controller.handle_message(msg_type, $event); -}; -_CornerSelected.prototype.onMouseUp.transitions = ['Selected1']; - - - -_Selected1.prototype.onMouseMove = function (controller) { - - controller.changeState(Move); - -}; -_Selected1.prototype.onMouseMove.transitions = ['Move']; - -_Selected1.prototype.onMouseUp = function (controller) { - - controller.changeState(Selected2); -}; -_Selected1.prototype.onMouseUp.transitions = ['Selected2']; - - - -_Selected3.prototype.onMouseMove = function (controller) { - - controller.changeState(Move); - -}; -_Selected3.prototype.onMouseMove.transitions = ['Move']; - -_Selected3.prototype.onMouseUp = function (controller, msg_type, $event) { - let context_menu = controller.scope.context_menus[0]; - context_menu.enabled = true; - context_menu.x = $event.x; - context_menu.y = $event.y; - context_menu.buttons.forEach(function(button, index){ - button.x = $event.x; - let menuPaddingTop = 5; - button.y = $event.y + menuPaddingTop + (button.height * index); - }); - - controller.changeState(ContextMenu); - -}; -_Selected3.prototype.onMouseUp.transitions = ['ContextMenu']; - - -_Move.prototype.onMouseMove = function (controller) { - - var groups = controller.scope.selected_groups; - - var diffX = controller.scope.scaledX - controller.scope.pressedScaledX; - var diffY = controller.scope.scaledY - controller.scope.pressedScaledY; - var i = 0; - var j = 0; - var membership_old_new = []; - var previous_x1, previous_y1, previous_x2, previous_y2; - for (i = 0; i < groups.length; i++) { - previous_x1 = groups[i].x1; - previous_y1 = groups[i].y1; - previous_x2 = groups[i].x2; - previous_y2 = groups[i].y2; - groups[i].x1 = groups[i].x1 + diffX; - groups[i].y1 = groups[i].y1 + diffY; - groups[i].x2 = groups[i].x2 + diffX; - groups[i].y2 = groups[i].y2 + diffY; - - membership_old_new = groups[i].update_membership(controller.scope.devices, - controller.scope.groups); - for(j = 0; j < membership_old_new[0].length; j++) { - membership_old_new[0][j].selected = false; - } - for(j = 0; j < membership_old_new[1].length; j++) { - membership_old_new[1][j].selected = true; - } - - controller.scope.send_control_message(new messages.GroupMove(controller.scope.client_id, - groups[i].id, - groups[i].x1, - groups[i].y1, - groups[i].x2, - groups[i].y2, - previous_x1, - previous_y1, - previous_x2, - previous_y2)); - controller.scope.send_control_message(new messages.GroupMembership(controller.scope.client_id, - groups[i].id, - membership_old_new[2])); - controller.scope.create_group_association(groups[i], membership_old_new[6]); - controller.scope.delete_group_association(groups[i], membership_old_new[7]); - } - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; -}; - -_Move.prototype.onMouseUp = function (controller) { - - controller.changeState(Selected2); - -}; -_Move.prototype.onMouseUp.transitions = ['Selected2']; - -_Move.prototype.onMouseDown = function (controller) { - - controller.changeState(Selected1); -}; -_Move.prototype.onMouseDown.transitions = ['Selected1']; - -_Move.prototype.start = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - for (i = 0; i < groups.length; i++) { - groups[i].moving = true; - } -}; - -_Move.prototype.end = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - var j = 0; - for (i = 0; i < groups.length; i++) { - for(j = 0; j < groups[i].devices.length; j++) { - groups[i].devices[j].selected = false; - } - } - - for (i = 0; i < groups.length; i++) { - groups[i].moving = false; - } -}; - - -_Ready.prototype.onMouseMove = function (controller, msg_type, $event) { - - if (controller.scope.hide_groups) { - controller.delegate_channel.send(msg_type, $event); - return; - } - - var i = 0; - - for (i = 0; i < controller.scope.groups.length; i++) { - controller.scope.groups[i].update_hightlighted(controller.scope.scaledX, controller.scope.scaledY); - } - - controller.delegate_channel.send(msg_type, $event); -}; - - -_Ready.prototype.onMouseDown = function (controller, msg_type, $event) { - - if (controller.scope.hide_groups) { - controller.delegate_channel.send(msg_type, $event); - return; - } - - // - var i = 0; - - for (i = 0; i < controller.scope.groups.length; i++) { - controller.scope.groups[i].selected = false; - } - controller.scope.selected_groups = []; - - for (i = 0; i < controller.scope.groups.length; i++) { - if (controller.scope.groups[i].has_corner_selected(controller.scope.scaledX, controller.scope.scaledY)) { - controller.scope.clear_selections(); - if (controller.scope.selected_groups.indexOf(controller.scope.groups[i]) === -1) { - controller.scope.selected_groups.push(controller.scope.groups[i]); - } - controller.scope.groups[i].selected = true; - controller.changeState(CornerSelected); - controller.scope.pressedX = controller.scope.mouseX; - controller.scope.pressedY = controller.scope.mouseY; - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - - return; - } else if (controller.scope.groups[i].is_selected(controller.scope.scaledX, controller.scope.scaledY)) { - controller.scope.clear_selections(); - if (controller.scope.selected_groups.indexOf(controller.scope.groups[i]) === -1) { - controller.scope.selected_groups.push(controller.scope.groups[i]); - } - controller.scope.groups[i].selected = true; - controller.changeState(Selected1); - controller.scope.pressedX = controller.scope.mouseX; - controller.scope.pressedY = controller.scope.mouseY; - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - - return; - } - } - - controller.delegate_channel.send(msg_type, $event); - -}; -_Ready.prototype.onMouseDown.transitions = ['Selected1', 'CornerSelected']; - - -_Ready.prototype.onNewGroup = function (controller, msg_type, message) { - controller.scope.hide_groups = false; - controller.scope.new_group_type = message.type; - controller.changeState(Placing); -}; -_Ready.prototype.onNewGroup.transitions = ['Placing']; - -_EditLabel.prototype.start = function (controller) { - controller.scope.selected_groups[0].edit_label = true; -}; - -_EditLabel.prototype.end = function (controller) { - controller.scope.selected_groups[0].edit_label = false; -}; - - -_EditLabel.prototype.onMouseDown = function (controller) { - - controller.changeState(Ready); - -}; -_EditLabel.prototype.onMouseDown.transitions = ['Ready']; - - -_EditLabel.prototype.onKeyDown = function (controller, msg_type, $event) { - //Key codes found here: - //https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes - var item = controller.scope.selected_groups[0]; - var previous_name = item.name; - if ($event.keyCode === 8 || $event.keyCode === 46) { //Delete - item.name = item.name.slice(0, -1); - } else if ($event.keyCode >= 48 && $event.keyCode <=90) { //Alphanumeric - item.name += $event.key; - } else if ($event.keyCode >= 186 && $event.keyCode <=222) { //Punctuation - item.name += $event.key; - } else if ($event.keyCode === 13) { //Enter - controller.changeState(Selected2); - } else if ($event.keyCode === 32) { //Space - item.name += " "; - } else { - console.log($event.keyCode); - } - controller.scope.send_control_message(new messages.GroupLabelEdit(controller.scope.client_id, - item.id, - item.name, - previous_name)); -}; -_EditLabel.prototype.onKeyDown.transitions = ['Selected2']; - -_Selected2.prototype.onNewGroup = function (controller, msg_type, $event) { - - controller.changeState(Ready); - controller.handle_message(msg_type, $event); - -}; -_Selected2.prototype.onNewGroup.transitions = ['Ready']; - - -_Selected2.prototype.onMouseDown = function (controller, msg_type, $event) { - - controller.scope.pressedX = controller.scope.mouseX; - controller.scope.pressedY = controller.scope.mouseY; - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - - - - var groups = controller.scope.selected_groups; - controller.scope.selected_groups = []; - var i = 0; - for (i = 0; i < groups.length; i++) { - if (groups[i].has_corner_selected(controller.scope.scaledX, controller.scope.scaledY)) { - controller.scope.selected_groups = []; - break; - } - else if (groups[i].is_selected(controller.scope.scaledX, controller.scope.scaledY)) { - if (controller.scope.selected_groups.indexOf(groups[i]) === -1) { - controller.scope.selected_groups.push(groups[i]); - } - } - } - - if (controller.scope.selected_groups.length > 0) { - controller.changeState(Selected3); - } else { - controller.changeState(Ready); - controller.handle_message(msg_type, $event); - } - -}; -_Selected2.prototype.onMouseDown.transitions = ['Ready', 'Selected3']; - - -_Selected2.prototype.onKeyDown = function (controller, msg_type, $event) { - - if ($event.keyCode === 8) { - //Delete - controller.scope.deleteGroup(); - } else { - controller.delegate_channel.send(msg_type, $event); - } -}; -_Selected2.prototype.onKeyDown.transitions = ['Ready']; - - -_Placing.prototype.onMouseDown = function (controller) { - - var scope = controller.scope; - var group = null; - - scope.pressedX = scope.mouseX; - scope.pressedY = scope.mouseY; - scope.pressedScaledX = scope.scaledX; - scope.pressedScaledY = scope.scaledY; - - scope.clear_selections(); - - var id = scope.group_id_seq(); - - group = new models.Group(id, - titlecase.toTitleCase("" + scope.new_group_type + id), - scope.new_group_type, - scope.scaledX, - scope.scaledY, - scope.scaledX, - scope.scaledY, - false); - - scope.send_control_message(new messages.GroupCreate(scope.client_id, - group.id, - group.x1, - group.y1, - group.x2, - group.y2, - group.name, - group.type, - group.group_id)); - - scope.create_inventory_group(group); - scope.groups.push(group); - scope.selected_groups.push(group); - group.selected = true; - group.selected_corner = models.BOTTOM_RIGHT; - - controller.scope.new_group_type = null; - - controller.changeState(Resize); -}; -_Placing.prototype.onMouseDown.transitions = ['Resize']; - - -_ContextMenu.prototype.end = function (controller) { - - controller.scope.removeContextMenu(); -}; - -_ContextMenu.prototype.onLabelEdit = function (controller) { - - controller.changeState(EditLabel); - -}; -_ContextMenu.prototype.onLabelEdit.transitions = ['EditLabel']; - -_ContextMenu.prototype.onMouseDown = function (controller) { - - controller.changeState(Ready); - -}; -_ContextMenu.prototype.onMouseDown.transitions = ['Ready']; diff --git a/awx/ui/client/src/network-ui/group.partial.svg b/awx/ui/client/src/network-ui/group.partial.svg deleted file mode 100644 index 9565ad39bc..0000000000 --- a/awx/ui/client/src/network-ui/group.partial.svg +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - {{item.name}}{{item.edit_label?'_':''}} - - - - - - - - - diff --git a/awx/ui/client/src/network-ui/host.partial.svg b/awx/ui/client/src/network-ui/host.partial.svg index 7804d8781f..86e5c875c2 100644 --- a/awx/ui/client/src/network-ui/host.partial.svg +++ b/awx/ui/client/src/network-ui/host.partial.svg @@ -1,5 +1,4 @@ - @@ -88,4 +87,3 @@ {{item.name}}{{item.edit_label?'_':''}} - diff --git a/awx/ui/client/src/network-ui/hotkeys.fsm.js b/awx/ui/client/src/network-ui/hotkeys.fsm.js index 2c310380c6..abc3a3cc75 100644 --- a/awx/ui/client/src/network-ui/hotkeys.fsm.js +++ b/awx/ui/client/src/network-ui/hotkeys.fsm.js @@ -1,7 +1,6 @@ /* Copyright (c) 2017 Red Hat, Inc. */ var inherits = require('inherits'); var fsm = require('./fsm.js'); -var messages = require('./messages.js'); function _State () { } @@ -44,35 +43,14 @@ _Enabled.prototype.onKeyDown = function(controller, msg_type, $event) { var scope = controller.scope; - if ($event.key === 'c' && ($event.ctrlKey || $event.metaKey)) { - scope.first_channel.send("CopySelected", $event); - } - if ($event.key === 'r' && ($event.ctrlKey || $event.metaKey)) { location.reload(); } - if ($event.key === 'l') { - scope.first_channel.send("NewLink", $event); - return; - } - - if ($event.key === 'm') { - scope.first_channel.send("NewStream", $event); - } - if ($event.key === 'd') { scope.debug.hidden = !scope.debug.hidden; return; } - if ($event.key === 'p') { - scope.cursor.hidden = !scope.cursor.hidden; - return; - } - if ($event.key === 'b') { - scope.hide_buttons = !scope.hide_buttons; - return; - } if ($event.key === 'i') { scope.hide_interfaces = !scope.hide_interfaces; return; @@ -83,31 +61,7 @@ _Enabled.prototype.onKeyDown = function(controller, msg_type, $event) { return; } - if ($event.key === 'r' && !($event.ctrlKey || $event.metaKey)) { - scope.first_channel.send("NewDevice", new messages.NewDevice("router")); - return; - } - else if ($event.key === 's') { - scope.first_channel.send("NewDevice", new messages.NewDevice("switch")); - return; - } - else if ($event.key === 'a') { - scope.first_channel.send("NewGroup", new messages.NewGroup("rack")); - return; - } - else if ($event.key === 'h') { - scope.first_channel.send("NewDevice", new messages.NewDevice("host")); - return; - } - else if ($event.key === 'g') { - scope.first_channel.send("NewGroup", new messages.NewGroup("group")); - return; - } - else if ($event.key === 'e') { - scope.first_channel.send("NewGroup", new messages.NewGroup("site")); - return; - } - else if ($event.key === '0') { + if ($event.key === '0') { scope.jump_to_animation(0, 0, 1.0); } diff --git a/awx/ui/client/src/network-ui/link.fsm.js b/awx/ui/client/src/network-ui/link.fsm.js deleted file mode 100644 index 05f17573f5..0000000000 --- a/awx/ui/client/src/network-ui/link.fsm.js +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); -var models = require('./models.js'); -var messages = require('./messages.js'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - -function _Connected () { - this.name = 'Connected'; -} -inherits(_Connected, _State); -var Connected = new _Connected(); -exports.Connected = Connected; - -function _Connecting () { - this.name = 'Connecting'; -} -inherits(_Connecting, _State); -var Connecting = new _Connecting(); -exports.Connecting = Connecting; - -function _Selecting () { - this.name = 'Selecting'; -} -inherits(_Selecting, _State); -var Selecting = new _Selecting(); -exports.Selecting = Selecting; - - - - -_Ready.prototype.onNewLink = function (controller, msg_type, message) { - - controller.scope.clear_selections(); - controller.changeState(Selecting); - controller.delegate_channel.send(msg_type, message); -}; -_Ready.prototype.onNewLink.transitions = ['Selecting']; - - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - - - -_Connected.prototype.start = function (controller) { - - controller.scope.clear_selections(); - controller.changeState(Ready); -}; -_Connected.prototype.start.transitions = ['Ready']; - - -_Connecting.prototype.onMouseDown = function () { -}; - -_Connecting.prototype.onMouseUp = function (controller) { - - var selected_device = controller.scope.select_items(false).last_selected_device; - var to_device_interface = null; - var from_device_interface = null; - var i = 0; - if (selected_device !== null) { - controller.scope.new_link.to_device = selected_device; - i = controller.scope.new_link.to_device.interface_seq(); - to_device_interface = new models.Interface(i, "eth" + i); - controller.scope.new_link.to_device.interfaces.push(to_device_interface); - i = controller.scope.new_link.from_device.interface_seq(); - from_device_interface = new models.Interface(i, "eth" + i); - controller.scope.new_link.from_device.interfaces.push(from_device_interface); - to_device_interface.link = controller.scope.new_link; - from_device_interface.link = controller.scope.new_link; - to_device_interface.device = controller.scope.new_link.to_device; - from_device_interface.device = controller.scope.new_link.from_device; - controller.scope.new_link.to_interface = to_device_interface; - controller.scope.new_link.from_interface = from_device_interface; - to_device_interface.dot(); - from_device_interface.dot(); - controller.scope.send_control_message(new messages.MultipleMessage(controller.scope.client_id, [ - new messages.InterfaceCreate(controller.scope.client_id, - controller.scope.new_link.from_device.id, - from_device_interface.id, - from_device_interface.name), - new messages.InterfaceCreate(controller.scope.client_id, - controller.scope.new_link.to_device.id, - to_device_interface.id, - to_device_interface.name), - new messages.LinkCreate(controller.scope.client_id, - controller.scope.new_link.id, - controller.scope.new_link.from_device.id, - controller.scope.new_link.to_device.id, - from_device_interface.id, - to_device_interface.id)])); - controller.scope.new_link = null; - controller.changeState(Connected); - } else { - var index = controller.scope.links.indexOf(controller.scope.new_link); - if (index !== -1) { - controller.scope.links.splice(index, 1); - } - controller.scope.new_link = null; - controller.changeState(Ready); - } -}; -_Connecting.prototype.onMouseUp.transitions = ['Ready', 'Connected']; - - -_Selecting.prototype.onMouseDown = function () { -}; - -_Selecting.prototype.onMouseUp = function (controller) { - - var selected_device = controller.scope.select_items(false).last_selected_device; - if (selected_device !== null) { - controller.scope.new_link = new models.Link(controller.scope.link_id_seq(), selected_device, null, null, null, true); - controller.scope.links.push(controller.scope.new_link); - controller.changeState(Connecting); - } -}; -_Selecting.prototype.onMouseUp.transitions = ['Connecting']; - diff --git a/awx/ui/client/src/network-ui/map.directive.js b/awx/ui/client/src/network-ui/map.directive.js deleted file mode 100644 index 2f9673e358..0000000000 --- a/awx/ui/client/src/network-ui/map.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/map.partial.svg'); - -function map () { - return { restrict: 'A', templateUrl}; -} -exports.map = map; diff --git a/awx/ui/client/src/network-ui/map.partial.svg b/awx/ui/client/src/network-ui/map.partial.svg deleted file mode 100644 index e5aac18d61..0000000000 --- a/awx/ui/client/src/network-ui/map.partial.svg +++ /dev/null @@ -1,2662 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/awx/ui/client/src/network-ui/messages.js b/awx/ui/client/src/network-ui/messages.js index ed576fc2e3..d2b4009f67 100644 --- a/awx/ui/client/src/network-ui/messages.js +++ b/awx/ui/client/src/network-ui/messages.js @@ -25,14 +25,6 @@ function DeviceInventoryUpdate(sender, id, host_id) { } exports.DeviceInventoryUpdate = DeviceInventoryUpdate; -function GroupInventoryUpdate(sender, id, group_id) { - this.msg_type = "GroupInventoryUpdate"; - this.sender = sender; - this.id = id; - this.group_id = group_id; -} -exports.GroupInventoryUpdate = GroupInventoryUpdate; - function DeviceCreate(sender, id, x, y, name, type, host_id) { this.msg_type = "DeviceCreate"; this.sender = sender; @@ -146,45 +138,6 @@ function LinkUnSelected(sender, id) { } exports.LinkUnSelected = LinkUnSelected; -function Undo(sender, original_message) { - this.msg_type = "Undo"; - this.sender = sender; - this.original_message = original_message; -} -exports.Undo = Undo; - -function Redo(sender, original_message) { - this.msg_type = "Redo"; - this.sender = sender; - this.original_message = original_message; -} -exports.Redo = Redo; - -function Deploy(sender) { - this.msg_type = "Deploy"; - this.sender = sender; -} -exports.Deploy = Deploy; - -function Destroy(sender) { - this.msg_type = "Destroy"; - this.sender = sender; -} -exports.Destroy = Destroy; - -function Discover(sender) { - this.msg_type = "Discover"; - this.sender = sender; -} - -exports.Discover = Discover; - -function Layout(sender) { - this.msg_type = "Layout"; - this.sender = sender; -} -exports.Layout = Layout; - function MultipleMessage(sender, messages) { this.msg_type = "MultipleMessage"; this.sender = sender; @@ -263,162 +216,6 @@ function PasteDevice(device) { } exports.PasteDevice = PasteDevice; -function PasteProcess(process) { - this.process = process; -} -exports.PasteProcess = PasteProcess; - - -function NewGroup(type) { - this.type = type; -} -exports.NewGroup = NewGroup; - -function PasteRack(group) { - this.group = group; -} -exports.PasteRack = PasteRack; - -function PasteSite(group) { - this.group = group; -} -exports.PasteSite = PasteSite; - -function CopySite(site) { - this.msg_type = "CopySite"; - this.site = site; -} -exports.CopySite = CopySite; - - -function GroupMove(sender, id, x1, y1, x2, y2, previous_x1, previous_y1, previous_x2, previous_y2) { - this.msg_type = "GroupMove"; - this.sender = sender; - this.id = id; - this.x1 = x1; - this.y1 = y1; - this.x2 = x2; - this.y2 = y2; - this.previous_x1 = previous_x1; - this.previous_y1 = previous_y1; - this.previous_x2 = previous_x2; - this.previous_y2 = previous_y2; -} -exports.GroupMove = GroupMove; - -function GroupCreate(sender, id, x1, y1, x2, y2, name, type, group_id) { - this.msg_type = "GroupCreate"; - this.sender = sender; - this.id = id; - this.x1 = x1; - this.y1 = y1; - this.x2 = x2; - this.y2 = y2; - this.name = name; - this.type = type; - this.group_id = group_id; -} -exports.GroupCreate = GroupCreate; - -function GroupDestroy(sender, id, previous_x1, previous_y1, previous_x2, previous_y2, previous_name, previous_type, previous_group_id) { - this.msg_type = "GroupDestroy"; - this.sender = sender; - this.id = id; - this.previous_x1 = previous_x1; - this.previous_y1 = previous_y1; - this.previous_x2 = previous_x2; - this.previous_y2 = previous_y2; - this.previous_name = previous_name; - this.previous_type = previous_type; - this.previous_group_id = previous_group_id; -} -exports.GroupDestroy = GroupDestroy; - -function GroupLabelEdit(sender, id, name, previous_name) { - this.msg_type = "GroupLabelEdit"; - this.sender = sender; - this.id = id; - this.name = name; - this.previous_name = previous_name; -} -exports.GroupLabelEdit = GroupLabelEdit; - -function GroupSelected(sender, id) { - this.msg_type = "GroupSelected"; - this.sender = sender; - this.id = id; -} -exports.GroupSelected = GroupSelected; - -function GroupUnSelected(sender, id) { - this.msg_type = "GroupUnSelected"; - this.sender = sender; - this.id = id; -} -exports.GroupUnSelected = GroupUnSelected; - -function GroupMembership(sender, id, members) { - this.msg_type = "GroupMembership"; - this.sender = sender; - this.id = id; - this.members = members; -} -exports.GroupMembership = GroupMembership; - -function ProcessCreate(sender, id, name, type, device_id, x, y) { - this.msg_type = "ProcessCreate"; - this.id = id; - this.name = name; - this.type = type; - this.device_id = device_id; - this.x = x; - this.y = y; -} -exports.ProcessCreate = ProcessCreate; - -function StreamCreate(sender, id, from_id, to_id, label) { - this.msg_type = "StreamCreate"; - this.sender = sender; - this.id = id; - this.from_id = from_id; - this.to_id = to_id; - this.label = label; -} -exports.StreamCreate = StreamCreate; - -function StreamDestroy(sender, id, from_id, to_id, label) { - this.msg_type = "StreamDestroy"; - this.sender = sender; - this.id = id; - this.from_id = from_id; - this.to_id = to_id; - this.label = label; -} -exports.StreamDestroy = StreamDestroy; - -function StreamLabelEdit(sender, id, label, previous_label) { - this.msg_type = "StreamLabelEdit"; - this.sender = sender; - this.id = id; - this.label = label; - this.previous_label = previous_label; -} -exports.StreamLabelEdit = StreamLabelEdit; - -function StreamSelected(sender, id) { - this.msg_type = "StreamSelected"; - this.sender = sender; - this.id = id; -} -exports.StreamSelected = StreamSelected; - -function StreamUnSelected(sender, id) { - this.msg_type = "StreamUnSelected"; - this.sender = sender; - this.id = id; -} -exports.StreamUnSelected = StreamUnSelected; - function FSMTrace(order, fsm_name, from_state, to_state, recv_message_type) { this.msg_type = 'FSMTrace'; this.order = order; @@ -441,13 +238,11 @@ function ChannelTrace(from_fsm, to_fsm, sent_message_type) { } exports.ChannelTrace = ChannelTrace; -function Snapshot(sender, devices, links, groups, streams, order, trace_id) { +function Snapshot(sender, devices, links, order, trace_id) { this.msg_type = 'Snapshot'; this.sender = 0; this.devices = devices; this.links = links; - this.groups = groups; - this.streams = streams; this.order = order; this.trace_id = trace_id; } diff --git a/awx/ui/client/src/network-ui/mode.fsm.js b/awx/ui/client/src/network-ui/mode.fsm.js index 035dff3d2f..2ef48e177f 100644 --- a/awx/ui/client/src/network-ui/mode.fsm.js +++ b/awx/ui/client/src/network-ui/mode.fsm.js @@ -2,9 +2,6 @@ var inherits = require('inherits'); var fsm = require('./fsm.js'); var move = require('./move.fsm.js'); -var group = require('./group.fsm.js'); -var rack_fsm = require('./rack.fsm.js'); -var site_fsm = require('./site.fsm.js'); function _State () { } @@ -18,34 +15,6 @@ inherits(_Start, _State); var Start = new _Start(); exports.Start = Start; -function _Interface () { - this.name = 'Interface'; -} -inherits(_Interface, _State); -var Interface = new _Interface(); -exports.Interface = Interface; - -function _Site () { - this.name = 'Site'; -} -inherits(_Site, _State); -var Site = new _Site(); -exports.Site = Site; - -function _Process () { - this.name = 'Process'; -} -inherits(_Process, _State); -var Process = new _Process(); -exports.Process = Process; - -function _MultiSite () { - this.name = 'MultiSite'; -} -inherits(_MultiSite, _State); -var MultiSite = new _MultiSite(); -exports.MultiSite = MultiSite; - function _Rack () { this.name = 'Rack'; } @@ -53,13 +22,6 @@ inherits(_Rack, _State); var Rack = new _Rack(); exports.Rack = Rack; -function _Device () { - this.name = 'Device'; -} -inherits(_Device, _State); -var Device = new _Device(); -exports.Device = Device; - _State.prototype.start = function (controller) { controller.scope.current_mode = controller.state.name; @@ -68,148 +30,22 @@ _State.prototype.start = function (controller) { _Start.prototype.start = function (controller) { - controller.scope.app_toolbox_controller.handle_message('Disable', {}); controller.scope.inventory_toolbox_controller.handle_message('Disable', {}); - controller.scope.rack_toolbox_controller.handle_message('Disable', {}); - controller.scope.site_toolbox_controller.handle_message('Disable', {}); controller.changeState(Rack); }; _Start.prototype.start.transitions = ['MultiSite']; - -_Interface.prototype.onMouseWheel = function (controller, msg_type, $event) { - - //controller.changeState(Device); - - controller.delegate_channel.send(msg_type, $event); - -}; -_Interface.prototype.onMouseWheel.transitions = ['Device']; - -_Interface.prototype.onScaleChanged = _Interface.prototype.onMouseWheel; - -_Site.prototype.start = function (controller) { - controller.scope.current_mode = controller.state.name; - controller.scope.rack_toolbox_controller.handle_message('Enable', {}); - controller.scope.rack_controller.changeState(rack_fsm.Ready); -}; - -_Site.prototype.end = function (controller) { - - controller.scope.rack_toolbox_controller.handle_message('Disable', {}); - controller.scope.rack_controller.changeState(rack_fsm.Disable); -}; - - -_Site.prototype.onMouseWheel = function (controller, msg_type, $event) { - - - if (controller.scope.current_scale < 0.1) { - controller.changeState(MultiSite); - } else if (controller.scope.current_scale > 0.5) { - controller.changeState(Rack); - } - - controller.delegate_channel.send(msg_type, $event); - -}; -_Site.prototype.onMouseWheel.transitions = ['MultiSite', 'Rack']; - -_Site.prototype.onScaleChanged = _Site.prototype.onMouseWheel; - - -_Process.prototype.onMouseWheel = function (controller, msg_type, $event) { - - controller.delegate_channel.send(msg_type, $event); - - //controller.changeState(Device); - -}; -_Process.prototype.onMouseWheel.transitions = ['Device']; - -_Process.prototype.onScaleChanged = _Process.prototype.onMouseWheel; - -_MultiSite.prototype.start = function (controller) { - controller.scope.current_mode = controller.state.name; - controller.scope.site_toolbox_controller.handle_message('Enable', {}); - controller.scope.site_controller.changeState(site_fsm.Ready); -}; - -_MultiSite.prototype.end = function (controller) { - - controller.scope.site_toolbox_controller.handle_message('Disable', {}); - controller.scope.site_controller.changeState(site_fsm.Disable); -}; - - -_MultiSite.prototype.onMouseWheel = function (controller, msg_type, $event) { - - if (controller.scope.current_scale > 0.1) { - controller.changeState(Site); - } - - controller.delegate_channel.send(msg_type, $event); -}; -_MultiSite.prototype.onMouseWheel.transitions = ['Site']; - -_MultiSite.prototype.onScaleChanged = _MultiSite.prototype.onMouseWheel; - -_Device.prototype.start = function (controller) { - controller.scope.current_mode = controller.state.name; - controller.scope.app_toolbox_controller.handle_message('Enable', {}); -}; - -_Device.prototype.end = function (controller) { - - controller.scope.app_toolbox_controller.handle_message('Disable', {}); -}; - -_Device.prototype.onMouseWheel = function (controller, msg_type, $event) { - - //controller.changeState(Process); - - //controller.changeState(Interface); - - //controller.changeState(Site); - - if (controller.scope.current_scale < 5) { - controller.changeState(Rack); - } - - controller.delegate_channel.send(msg_type, $event); -}; -_Device.prototype.onMouseWheel.transitions = ['Process', 'Interface', 'Rack']; - -_Device.prototype.onScaleChanged = _Device.prototype.onMouseWheel; - _Rack.prototype.start = function (controller) { controller.scope.current_mode = controller.state.name; controller.scope.inventory_toolbox_controller.handle_message('Enable', {}); controller.scope.move_controller.changeState(move.Ready); - controller.scope.group_controller.changeState(group.Ready); }; _Rack.prototype.end = function (controller) { controller.scope.inventory_toolbox_controller.handle_message('Disable', {}); controller.scope.move_controller.changeState(move.Disable); - controller.scope.group_controller.changeState(group.Disable); }; -_Rack.prototype.onMouseWheel = function (controller, msg_type, $event) { - - if (controller.scope.current_scale < 0.5) { - controller.changeState(Site); - } - - if (controller.scope.current_scale > 5) { - controller.changeState(Device); - } - - controller.delegate_channel.send(msg_type, $event); -}; -_Rack.prototype.onMouseWheel.transitions = ['Site', 'Device']; - -_Rack.prototype.onScaleChanged = _Rack.prototype.onMouseWheel; diff --git a/awx/ui/client/src/network-ui/models.js b/awx/ui/client/src/network-ui/models.js index 1c20a42476..392fa2341d 100644 --- a/awx/ui/client/src/network-ui/models.js +++ b/awx/ui/client/src/network-ui/models.js @@ -447,287 +447,6 @@ ContextMenuButton.prototype.is_selected = function (x, y) { }; -function Group(id, name, type, x1, y1, x2, y2, selected) { - this.id = id; - this.name = name; - this.type = type; - this.x1 = x1; - this.y1 = y1; - this.x2 = x2; - this.y2 = y2; - this.selected = selected; - this.moving = false; - this.highlighted = false; - this.fsm = null; - this.selected_corner = null; - this.devices = []; - this.links = []; - this.groups = []; - this.streams = []; - this.group_id = 0; - this.icon_size = type === 'site' ? 500 : 100; - this.template = false; - this.variables = {}; - this.sequences = {}; -} -exports.Group = Group; - -Group.prototype.compile_variables = function () { - - var variables = JSON.parse(JSON.stringify(this.variables)); - return variables; -}; - -Group.prototype.toJSON = function () { - - return {id: this.id, - name: this.name, - type: this.type, - x1: this.x1, - y1: this.y1, - x2: this.x2, - y2: this.y2, - devices: this.devices, - links: this.links, - streams: this.streams, - groups: this.groups}; -}; - - -Group.prototype.update_hightlighted = function (x, y) { - - this.highlighted = this.is_highlighted(x, y); -}; - -Group.prototype.is_highlighted = function (x, y) { - - return (x > this.left_extent() && - x < this.right_extent() && - y > this.top_extent() && - y < this.bottom_extent()); - -}; - -Group.prototype.is_icon_selected = function (x, y) { - - return ((x > this.left_extent() && - x < this.right_extent() && - y > this.top_extent() && - y < this.bottom_extent()) || - (x > this.centerX() - this.icon_size && - x < this.centerX() + this.icon_size && - y > this.centerY() - this.icon_size && - y < this.centerY() + this.icon_size)); - -}; - -var TOP_LEFT = 0; -exports.TOP_LEFT = TOP_LEFT; -var TOP_RIGHT = 1; -exports.TOP_RIGHT = TOP_RIGHT; -var BOTTOM_LEFT = 2; -exports.BOTTOM_LEFT = BOTTOM_LEFT; -var BOTTOM_RIGHT = 3; -exports.BOTTOM_RIGHT = BOTTOM_RIGHT; - -Group.prototype.has_corner_selected = function (x, y) { - - if (x > this.left_extent() && - x < this.left_extent() + 10 && - y > this.top_extent() && - y < this.top_extent() + 10) { - return true; - } - if (x > this.left_extent() && - x < this.left_extent() + 10 && - y > this.bottom_extent() - 10 && - y < this.bottom_extent()) { - return true; - } - if (x > this.right_extent() - 10 && - x < this.right_extent() && - y > this.bottom_extent() - 10 && - y < this.bottom_extent()) { - return true; - } - if (x > this.right_extent() - 10 && - x < this.right_extent() && - y > this.top_extent() && - y < this.top_extent() + 10) { - return true; - } - - return false; -}; - -Group.prototype.select_corner = function (x, y) { - - var corners = [[util.distance(this.x1, this.y1, x, y), TOP_LEFT], - [util.distance(this.x2, this.y2, x, y), BOTTOM_RIGHT], - [util.distance(this.x1, this.y2, x, y), BOTTOM_LEFT], - [util.distance(this.x2, this.y1, x, y), TOP_RIGHT]]; - - corners.sort(function(a, b) { - return a[0] - b[0]; - }); - - if (corners[0][0] > 30) { - return null; - } - - return corners[0][1]; -}; - -Group.prototype.is_selected = function (x, y) { - - if (util.pDistance(x, - y, - this.left_extent(), - this.top_extent(), - this.left_extent(), - this.bottom_extent()) < 10) { - return true; - } - if (util.pDistance(x, - y, - this.left_extent(), - this.top_extent(), - this.right_extent(), - this.top_extent()) < 10) { - return true; - } - if (util.pDistance(x, - y, - this.left_extent(), - this.top_extent(), - this.right_extent(), - this.top_extent()) < 40 && y > this.top_extent()) { - return true; - } - if (util.pDistance(x, - y, - this.right_extent(), - this.bottom_extent(), - this.right_extent(), - this.top_extent()) < 10) { - return true; - } - if (util.pDistance(x, - y, - this.right_extent(), - this.bottom_extent(), - this.left_extent(), - this.bottom_extent()) < 10) { - return true; - } - - return false; -}; - -Group.prototype.width = function (scaledX) { - var x2 = this.x2 !== null ? this.x2 : scaledX; - return Math.abs(this.x1 - x2); -}; - -Group.prototype.height = function (scaledY) { - var y2 = this.y2 !== null ? this.y2 : scaledY; - return Math.abs(this.y1 - y2); -}; - -Group.prototype.top_extent = function (scaledY) { - var y2 = this.y2 !== null ? this.y2 : scaledY; - return (this.y1 < y2? this.y1 : y2); -}; - -Group.prototype.left_extent = function (scaledX) { - var x2 = this.x2 !== null ? this.x2 : scaledX; - return (this.x1 < x2? this.x1 : x2); -}; - -Group.prototype.bottom_extent = function (scaledY) { - var y2 = this.y2 !== null ? this.y2 : scaledY; - return (this.y1 > y2? this.y1 : y2); -}; - -Group.prototype.right_extent = function (scaledX) { - var x2 = this.x2 !== null ? this.x2 : scaledX; - return (this.x1 > x2? this.x1 : x2); -}; - -Group.prototype.centerX = function (scaledX) { - return (this.right_extent(scaledX) + this.left_extent(scaledX)) / 2; -}; - -Group.prototype.centerY = function (scaledY) { - return (this.bottom_extent(scaledY) + this.top_extent(scaledY)) / 2; -}; - -Group.prototype.update_membership = function (devices, groups) { - var i = 0; - var y1 = this.top_extent(); - var x1 = this.left_extent(); - var y2 = this.bottom_extent(); - var x2 = this.right_extent(); - var old_devices = this.devices; - var new_devices = []; - var removed_devices = old_devices.slice(); - var device_ids = []; - var index = -1; - this.devices = []; - for (i = 0; i < devices.length; i++) { - if (devices[i].x > x1 && - devices[i].y > y1 && - devices[i].x < x2 && - devices[i].y < y2) { - devices[i].in_group = true; - this.devices.push(devices[i]); - device_ids.push(devices[i].id); - index = removed_devices.indexOf(devices[i]); - if (index !== -1) { - removed_devices.splice(index, 1); - } else { - new_devices.push(devices[i]); - } - } - } - var old_groups = this.groups; - this.groups = []; - var group_ids = []; - for (i = 0; i < groups.length; i++) { - if (groups[i].left_extent() > x1 && - groups[i].top_extent() > y1 && - groups[i].right_extent() < x2 && - groups[i].bottom_extent() < y2) { - this.groups.push(groups[i]); - group_ids.push(groups[i].id); - } - } - return [old_devices, this.devices, device_ids, old_groups, this.groups, group_ids, new_devices, removed_devices]; -}; - -Group.prototype.is_in_breadcrumb = function(viewport){ - var groupY1 = this.top_extent(); - var groupX1 = this.left_extent(); - var groupY2 = this.bottom_extent(); - var groupX2 = this.right_extent(); - - var viewportY1 = viewport.top_extent(); - var viewportX1 = viewport.left_extent(); - var viewportY2 = viewport.bottom_extent(); - var viewportX2 = viewport.right_extent(); - - if (viewportX1 > groupX1 && - viewportY1 > groupY1 && - viewportX2 < groupX2 && - viewportY2 < groupY2) { - this.on_screen = true; - return true; - } else { - this.on_screen = false; - return false; - } -}; - function ToolBox(id, name, type, x, y, width, height) { this.id = id; diff --git a/awx/ui/client/src/network-ui/move.fsm.js b/awx/ui/client/src/network-ui/move.fsm.js index 3646ffcb6d..c1f9946bf5 100644 --- a/awx/ui/client/src/network-ui/move.fsm.js +++ b/awx/ui/client/src/network-ui/move.fsm.js @@ -372,7 +372,6 @@ _Move.prototype.end = function (controller) { _Move.prototype.onMouseMove = function (controller) { var devices = controller.scope.selected_devices; - var groups = controller.scope.groups; var diffX = controller.scope.scaledX - controller.scope.pressedScaledX; var diffY = controller.scope.scaledY - controller.scope.pressedScaledY; @@ -402,16 +401,6 @@ _Move.prototype.onMouseMove = function (controller) { controller.scope.pressedScaledX = controller.scope.scaledX; controller.scope.pressedScaledY = controller.scope.scaledY; - - //TODO: Improve the performance of this code from O(n^2) to O(n) or better - for (i = 0; i < groups.length; i++) { - membership_old_new = groups[i].update_membership(controller.scope.devices, controller.scope.groups); - controller.scope.send_control_message(new messages.GroupMembership(controller.scope.client_id, - groups[i].id, - membership_old_new[2])); - controller.scope.create_group_association(groups[i], membership_old_new[6]); - controller.scope.delete_group_association(groups[i], membership_old_new[7]); - } }; _Move.prototype.onMouseUp = function (controller, msg_type, $event) { diff --git a/awx/ui/client/src/network-ui/network.ui.app.js b/awx/ui/client/src/network-ui/network.ui.app.js index 85ddb2bd94..d29d6a1929 100644 --- a/awx/ui/client/src/network-ui/network.ui.app.js +++ b/awx/ui/client/src/network-ui/network.ui.app.js @@ -12,22 +12,12 @@ var router = require('./router.directive.js'); var switchd = require('./switch.directive.js'); var host = require('./host.directive.js'); var link = require('./link.directive.js'); -var stream = require('./stream.directive.js'); -var rack = require('./rack.directive.js'); -var rackIcon = require('./rack.icon.directive.js'); -var group = require('./group.directive.js'); -var site = require('./site.directive.js'); -var siteIcon = require('./site.icon.directive.js'); var chevronRight = require('./chevron.right.directive.js'); var chevronLeft = require('./chevron.left.directive.js'); var contextMenu = require('./context.menu.directive.js'); var contextMenuButton = require('./context.menu.button.directive.js'); -var process = require('./process.directive.js'); -var map = require('./map.directive.js'); -var deviceDetail = require('./device.detail.directive.js'); var defaultd = require('./default.directive.js'); var quadrants = require('./quadrants.directive.js'); -var button = require('./button.directive.js'); var inventoryToolbox = require('./inventory.toolbox.directive.js'); var debug = require('./debug.directive.js'); var test_results = require('./test_results.directive.js'); @@ -46,22 +36,12 @@ var networkUI = angular.module('networkUI', [ .directive('awxNetSwitch', switchd.switchd) .directive('awxNetHost', host.host) .directive('awxNetLink', link.link) - .directive('awxNetStream', stream.stream) - .directive('awxNetRack', rack.rack) - .directive('awxNetGroup', group.group) - .directive('awxNetSite', site.site) - .directive('awxNetSiteIcon', siteIcon.siteIcon) - .directive('awxNetRackIcon', rackIcon.rackIcon) .directive('awxNetChevronRightIcon', chevronRight.chevronRight) .directive('awxNetChevronLeftIcon', chevronLeft.chevronLeft) .directive('awxNetContextMenu', contextMenu.contextMenu) .directive('awxNetContextMenuButton', contextMenuButton.contextMenuButton) - .directive('awxNetProcess', process.process) - .directive('awxNetMap', map.map) - .directive('awxNetDeviceDetail', deviceDetail.deviceDetail) .directive('awxNetDefault', defaultd.defaultd) .directive('awxNetQuadrants', quadrants.quadrants) - .directive('awxNetButton', button.button) .directive('awxNetInventoryToolbox', inventoryToolbox.inventoryToolbox) .directive('awxNetTestResults', test_results.test_results) .directive('awxNetworkUi', awxNetworkUI.awxNetworkUI); diff --git a/awx/ui/client/src/network-ui/network.ui.controller.js b/awx/ui/client/src/network-ui/network.ui.controller.js index a945aee033..a468172688 100644 --- a/awx/ui/client/src/network-ui/network.ui.controller.js +++ b/awx/ui/client/src/network-ui/network.ui.controller.js @@ -3,17 +3,10 @@ var angular = require('angular'); var fsm = require('./fsm.js'); var null_fsm = require('./null.fsm.js'); var mode_fsm = require('./mode.fsm.js'); -var device_detail_fsm = require('./device.detail.fsm.js'); -var rack_fsm = require('./rack.fsm.js'); -var site_fsm = require('./site.fsm.js'); var hotkeys = require('./hotkeys.fsm.js'); var toolbox_fsm = require('./toolbox.fsm.js'); var view = require('./view.fsm.js'); var move = require('./move.fsm.js'); -var link = require('./link.fsm.js'); -var stream_fsm = require('./stream.fsm.js'); -var group = require('./group.fsm.js'); -var buttons = require('./buttons.fsm.js'); var time = require('./time.fsm.js'); var test_fsm = require('./test.fsm.js'); var util = require('./util.js'); @@ -35,12 +28,9 @@ var NetworkUIController = function($scope, $state, ProcessErrors, ConfigService, - rbacUiControlService, - HostsService, - GroupsService) { + rbacUiControlService) { window.scope = $scope; - var i = 0; $scope.nunjucks = nunjucks; @@ -99,7 +89,6 @@ var NetworkUIController = function($scope, $scope.selected_links = []; $scope.selected_interfaces = []; $scope.selected_items = []; - $scope.selected_groups = []; $scope.new_link = null; $scope.new_stream = null; $scope.new_group_type = null; @@ -112,10 +101,11 @@ var NetworkUIController = function($scope, $scope.hide_buttons = false; $scope.hide_links = false; $scope.hide_interfaces = false; - $scope.hide_groups = false; $scope.graph = {'width': window.innerWidth, 'right_column': 300, 'height': window.innerHeight}; + $scope.MAX_ZOOM = 5; + $scope.MIN_ZOOM = 0.1; $scope.device_id_seq = util.natural_numbers(0); $scope.link_id_seq = util.natural_numbers(0); $scope.group_id_seq = util.natural_numbers(0); @@ -130,8 +120,6 @@ var NetworkUIController = function($scope, $scope.replay = false; $scope.devices = []; $scope.links = []; - $scope.groups = []; - $scope.processes = []; $scope.tests = []; $scope.current_tests = []; $scope.current_test = null; @@ -141,7 +129,6 @@ var NetworkUIController = function($scope, $scope.test_events = []; $scope.test_results = []; $scope.test_errors = []; - $scope.streams = []; $scope.animations = []; $scope.sequences = {}; $scope.view_port = {'x': 0, @@ -232,45 +219,16 @@ var NetworkUIController = function($scope, $scope.hotkeys_controller = new fsm.FSMController($scope, "hotkeys_fsm", hotkeys.Start, $scope); $scope.keybindings_controller = new fsm.FSMController($scope, "keybindings_fsm", keybindings.Start, $scope); $scope.view_controller = new fsm.FSMController($scope, "view_fsm", view.Start, $scope); - $scope.device_detail_controller = new fsm.FSMController($scope, "device_detail_fsm", device_detail_fsm.Start, $scope); $scope.move_controller = new fsm.FSMController($scope, "move_fsm", move.Start, $scope); $scope.details_panel_controller = new fsm.FSMController($scope, "details_panel_fsm", details_panel_fsm.Start, $scope); - $scope.link_controller = new fsm.FSMController($scope, "link_fsm", link.Start, $scope); - $scope.stream_controller = new fsm.FSMController($scope, "stream_fsm", stream_fsm.Start, $scope); - $scope.group_controller = new fsm.FSMController($scope, "group_fsm", group.Start, $scope); - $scope.rack_controller = new fsm.FSMController($scope, "rack_fsm", rack_fsm.Disable, $scope); - $scope.site_controller = new fsm.FSMController($scope, "site_fsm", site_fsm.Disable, $scope); - $scope.buttons_controller = new fsm.FSMController($scope, "buttons_fsm", buttons.Start, $scope); $scope.time_controller = new fsm.FSMController($scope, "time_fsm", time.Start, $scope); $scope.test_controller = new fsm.FSMController($scope, "test_fsm", test_fsm.Start, $scope); - $scope.app_toolbox_controller = new fsm.FSMController($scope, "toolbox_fsm", toolbox_fsm.Start, $scope); - - //App Toolbox Setup - // const toolboxTopMargin = 115; - var toolboxTopMargin = $('.Networking-top').height(); - var toolboxTitleMargin = toolboxTopMargin + 35; - var toolboxHeight = $scope.graph.height - $('.Networking-top').height(); - $scope.app_toolbox = new models.ToolBox(0, 'Process', 'app', 0, toolboxTopMargin, 200, toolboxHeight); - $scope.app_toolbox.title_coordinates = {x: 70, y: toolboxTitleMargin}; - $scope.app_toolbox.spacing = 150; - $scope.app_toolbox.enabled = false; - $scope.app_toolbox_controller.toolbox = $scope.app_toolbox; - $scope.app_toolbox_controller.debug = true; - $scope.app_toolbox_controller.dropped_action = function (selected_item) { - $scope.first_channel.send("PasteProcess", new messages.PasteProcess(selected_item)); - }; - - $scope.app_toolbox.items.push(new models.Process(0, 'BGP', 'process', 0, 0)); - $scope.app_toolbox.items.push(new models.Process(0, 'OSPF', 'process', 0, 0)); - $scope.app_toolbox.items.push(new models.Process(0, 'STP', 'process', 0, 0)); - $scope.app_toolbox.items.push(new models.Process(0, 'Zero Pipeline', 'process', 0, 0)); - - for(i = 0; i < $scope.app_toolbox.items.length; i++) { - $scope.app_toolbox.items[i].icon = true; - } $scope.inventory_toolbox_controller = new fsm.FSMController($scope, "toolbox_fsm", toolbox_fsm.Start, $scope); + var toolboxTopMargin = $('.Networking-top').height(); + var toolboxTitleMargin = toolboxTopMargin + 35; + var toolboxHeight = $scope.graph.height - $('.Networking-top').height(); //Inventory Toolbox Setup $scope.inventory_toolbox = new models.ToolBox(0, 'Inventory', 'device', 0, toolboxTopMargin, 200, toolboxHeight); @@ -335,40 +293,6 @@ var NetworkUIController = function($scope, }; //End Inventory Toolbox Setup - $scope.rack_toolbox_controller = new fsm.FSMController($scope, "toolbox_fsm", toolbox_fsm.Start, $scope); - //Rack Toolbox Setup - $scope.rack_toolbox = new models.ToolBox(0, 'Rack', 'rack', 0, toolboxTopMargin, 200, toolboxHeight); - $scope.rack_toolbox.title_coordinates = {x: 80, y: toolboxTitleMargin}; - $scope.rack_toolbox.spacing = 200; - $scope.rack_toolbox.enabled = false; - $scope.rack_toolbox_controller.remove_on_drop = false; - $scope.rack_toolbox_controller.toolbox = $scope.rack_toolbox; - $scope.rack_toolbox_controller.debug = true; - $scope.rack_toolbox_controller.dropped_action = function (selected_item) { - $scope.first_channel.send("PasteRack", new messages.PasteRack(selected_item)); - }; - for(i = 0; i < $scope.rack_toolbox.items.length; i++) { - $scope.rack_toolbox.items[i].icon = true; - $scope.rack_toolbox.items[i].selected = false; - } - //End Rack Toolbox Setup - $scope.site_toolbox_controller = new fsm.FSMController($scope, "toolbox_fsm", toolbox_fsm.Start, $scope); - //Site Toolbox Setup - $scope.site_toolbox = new models.ToolBox(0, 'Sites', 'sites', 0, toolboxTopMargin, 200, toolboxHeight); - $scope.site_toolbox.title_coordinates = {x: 80, y: toolboxTitleMargin}; - $scope.site_toolbox.spacing = 200; - $scope.site_toolbox.enabled = false; - $scope.site_toolbox_controller.remove_on_drop = false; - $scope.site_toolbox_controller.toolbox = $scope.site_toolbox; - $scope.site_toolbox_controller.debug = true; - $scope.site_toolbox_controller.dropped_action = function (selected_item) { - $scope.first_channel.send("PasteSite", new messages.PasteSite(selected_item)); - }; - for(i = 0; i < $scope.site_toolbox.items.length; i++) { - $scope.site_toolbox.items[i].icon = true; - $scope.site_toolbox.items[i].selected = false; - } - //End Site Toolbox Setup $scope.mode_controller = new fsm.FSMController($scope, "mode_fsm", mode_fsm.Start, $scope); @@ -380,47 +304,17 @@ var NetworkUIController = function($scope, $scope.view_controller.delegate_channel = new fsm.Channel($scope.view_controller, $scope.keybindings_controller, $scope); - $scope.device_detail_controller.delegate_channel = new fsm.Channel($scope.device_detail_controller, - $scope.view_controller, - $scope); $scope.move_controller.delegate_channel = new fsm.Channel($scope.move_controller, - $scope.device_detail_controller, + $scope.view_controller, $scope); $scope.details_panel_controller.delegate_channel = new fsm.Channel($scope.details_panel_controller, $scope.move_controller, $scope); - $scope.link_controller.delegate_channel = new fsm.Channel($scope.link_controller, - $scope.details_panel_controller, - $scope); - $scope.stream_controller.delegate_channel = new fsm.Channel($scope.stream_controller, - $scope.link_controller, - $scope); - $scope.group_controller.delegate_channel = new fsm.Channel($scope.group_controller, - $scope.stream_controller, - $scope); - $scope.rack_controller.delegate_channel = new fsm.Channel($scope.rack_controller, - $scope.group_controller, - $scope); - $scope.site_controller.delegate_channel = new fsm.Channel($scope.site_controller, - $scope.rack_controller, - $scope); - $scope.app_toolbox_controller.delegate_channel = new fsm.Channel($scope.app_toolbox_controller, - $scope.site_controller, - $scope); $scope.inventory_toolbox_controller.delegate_channel = new fsm.Channel($scope.inventory_toolbox_controller, - $scope.app_toolbox_controller, + $scope.details_panel_controller, $scope); - $scope.rack_toolbox_controller.delegate_channel = new fsm.Channel($scope.rack_toolbox_controller, - $scope.inventory_toolbox_controller, - $scope); - $scope.site_toolbox_controller.delegate_channel = new fsm.Channel($scope.site_toolbox_controller, - $scope.rack_toolbox_controller, - $scope); - $scope.buttons_controller.delegate_channel = new fsm.Channel($scope.buttons_controller, - $scope.site_toolbox_controller, - $scope); $scope.time_controller.delegate_channel = new fsm.Channel($scope.time_controller, - $scope.buttons_controller, + $scope.inventory_toolbox_controller, $scope); $scope.mode_controller.delegate_channel = new fsm.Channel($scope.mode_controller, $scope.time_controller, @@ -486,32 +380,23 @@ var NetworkUIController = function($scope, $scope.clear_selections = function () { var i = 0; - var j = 0; var devices = $scope.devices; var links = $scope.links; - var groups = $scope.groups; $scope.selected_items = []; $scope.selected_devices = []; $scope.selected_links = []; $scope.selected_interfaces = []; - $scope.selected_groups = []; - for (i = 0; i < devices.length; i++) { - for (j = 0; j < devices[i].interfaces.length; j++) { - devices[i].interfaces[j].selected = false; - } - if (devices[i].selected) { - $scope.send_control_message(new messages.DeviceUnSelected($scope.client_id, devices[i].id)); - } - devices[i].selected = false; - } for (i = 0; i < links.length; i++) { if (links[i].selected) { $scope.send_control_message(new messages.LinkUnSelected($scope.client_id, links[i].id)); } links[i].selected = false; } - for (i = 0; i < groups.length; i++) { - groups[i].selected = false; + for (i = 0; i < devices.length; i++) { + if (devices[i].selected) { + $scope.send_control_message(new messages.DeviceUnSelected($scope.client_id, devices[i].id)); + } + devices[i].selected = false; } }; @@ -770,11 +655,6 @@ var NetworkUIController = function($scope, emitCallback($scope.selected_links[0]); } - //show details for groups, racks, and sites - else if ($scope.selected_groups.length === 1){ - emitCallback($scope.selected_groups[0]); - } - }; $scope.onRenameContextButton = function () { @@ -832,65 +712,11 @@ var NetworkUIController = function($scope, } }; - $scope.deleteGroup = function(){ - var i = 0; - var index = -1; - var selected_groups = $scope.selected_groups; - $scope.selected_groups = []; - $scope.group_controller.changeState(group.Ready); - - function removeSingleGroup(group){ - index = $scope.groups.indexOf(group); - if (index !== -1) { - group.selected = false; - group.remote_selected = false; - $scope.groups.splice(index, 1); - } - $scope.send_control_message(new messages.GroupDestroy($scope.client_id, - group.id, - group.x1, - group.y1, - group.x2, - group.y2, - group.name, - group.group_id)); - } - - if($scope.current_scale <= 0.5){ - // current scale is in racks mode or sites mode - for (i = 0; i < selected_groups.length; i++) { - let group = selected_groups[i]; - if(group.groups.length > 0){ - for(var k = 0; k < group.groups.length; k++){ - let nested_group = group.groups[k]; - removeSingleGroup(nested_group); - } - } - // remove all the nested devices and links - $scope.selected_devices = group.devices; - $scope.selected_links = group.links; - $scope.deleteDevice(); - - removeSingleGroup(group); - } - } - if($scope.current_scale > 0.5){ - // current scale is in devices mode - for (i = 0; i < selected_groups.length; i++) { - let group = selected_groups[i]; - removeSingleGroup(group); - } - } - }; - $scope.onDeleteContextMenu = function(){ $scope.removeContextMenu(); if($scope.selected_devices.length === 1){ $scope.deleteDevice(); } - else if($scope.selected_groups.length === 1){ - $scope.deleteGroup(); - } }; // Button Event Handlers @@ -1019,8 +845,6 @@ var NetworkUIController = function($scope, new messages.Snapshot($scope.client_id, $scope.devices, $scope.links, - $scope.groups, - $scope.streams, 0, $scope.trace_id)])); } else { @@ -1028,8 +852,6 @@ var NetworkUIController = function($scope, [new messages.Snapshot($scope.client_id, $scope.devices, $scope.links, - $scope.groups, - $scope.streams, 1, $scope.trace_id), new messages.StopRecording($scope.client_id, $scope.trace_id)])); @@ -1048,28 +870,6 @@ var NetworkUIController = function($scope, }, 1000); }; - $scope.onLayoutButton = function () { - $scope.send_control_message(new messages.Layout($scope.client_id)); - }; - - $scope.onTogglePhysical = function () { - $scope.hide_links = false; - }; - - $scope.onUnTogglePhysical = function () { - $scope.hide_links = true; - }; - - $scope.onToggleGroup = function () { - $scope.hide_groups = false; - }; - - $scope.onUnToggleGroup = function () { - $scope.hide_groups = true; - $scope.group_controller.changeState(group.Ready); - }; - - $scope.onExportYamlButton = function () { $window.open('/network_ui/topology.yaml?topology_id=' + $scope.topology_id , '_blank'); }; @@ -1094,15 +894,15 @@ var NetworkUIController = function($scope, ]; $scope.onDownloadTraceButton = function () { - window.open("/network_ui/download_trace?topology_id=" + $scope.topology_id + "&trace_id=" + $scope.trace_id + "&client_id=" + $scope.client_id); + window.open("/network_ui_test/download_trace?topology_id=" + $scope.topology_id + "&trace_id=" + $scope.trace_id + "&client_id=" + $scope.test_client_id); }; $scope.onDownloadRecordingButton = function () { - window.open("/network_ui/download_recording?topology_id=" + $scope.topology_id + "&trace_id=" + $scope.trace_id + "&client_id=" + $scope.client_id); + window.open("/network_ui_test/download_recording?topology_id=" + $scope.topology_id + "&trace_id=" + $scope.trace_id + "&client_id=" + $scope.test_client_id); }; $scope.onUploadTestButton = function () { - window.open("/network_ui/upload_test", "_top"); + window.open("/network_ui_test/upload_test", "_top"); }; $scope.onRunTestsButton = function () { @@ -1112,107 +912,9 @@ var NetworkUIController = function($scope, $scope.first_channel.send("EnableTest", new messages.EnableTest()); }; - $scope.onCompileVariablesButton = function () { - - - function noop (response) { - console.log(response); - } - - function error_handler (response) { - - console.log(response); - } - - var i = 0; - var variables = null; - for(i = 0; i < $scope.devices.length; i++) { - variables = $scope.devices[i].compile_variables(); - if ($scope.devices[i].host_id !== 0) { - $http.put('/api/v2/hosts/' + $scope.devices[i].host_id + '/variable_data/', JSON.stringify(variables)).then(noop).catch(error_handler); - } - } - - for(i = 0; i < $scope.groups.length; i++) { - variables = $scope.groups[i].compile_variables(); - if ($scope.groups[i].group_id !== 0) { - $http.put('/api/v2/groups/' + $scope.groups[i].group_id + '/variable_data/', JSON.stringify(variables)).then(noop).catch(error_handler); - } - - } - }; - - - $scope.buttons = [ - // new models.Button("DEPLOY", button_offset + 10, 48, 70, 30, $scope.onDeployButton, $scope), - // new models.Button("DESTROY", button_offset + 90, 48, 80, 30, $scope.onDestroyButton, $scope), - // new models.Button("RECORD", button_offset + 180, 48, 80, 30, $scope.onRecordButton, $scope), - // new models.Button("EXPORT", button_offset + 270, 48, 70, 30, $scope.onExportButton, $scope), - // new models.Button("DISCOVER", button_offset + 350, 48, 80, 30, $scope.onDiscoverButton, $scope), - // new models.Button("LAYOUT", button_offset + 440, 48, 70, 30, $scope.onLayoutButton, $scope), - // new models.Button("CONFIGURE", button_offset + 520, 48, 90, 30, $scope.onConfigureButton, $scope), - // new models.Button("EXPORT YAML", button_offset + 620, 48, 120, 30, $scope.onExportYamlButton, $scope), - // new models.Button("DOWNLOAD TRACE", button_offset + 750, 48, 150, 30, $scope.onDownloadTraceButton, $scope), - // new models.Button("DOWNLOAD RECORDING", button_offset + 910, 48, 170, 30, $scope.onDownloadRecordingButton, $scope), - // new models.Button("UPLOAD TEST", button_offset + 10, 88, 100, 30, $scope.onUploadTestButton, $scope), - // new models.Button("RUN TESTS", button_offset + 120, 88, 100, 30, $scope.onRunTestsButton, $scope), - ]; - $scope.all_buttons = []; $scope.all_buttons.extend($scope.context_menu_buttons); $scope.all_buttons.extend($scope.action_icons); - $scope.all_buttons.extend($scope.buttons); - - $scope.onFacts = function(data) { - var i = 0; - var j = 0; - var k = 0; - var device = null; - var keys = null; - var peers = null; - var ptm = null; - var intf = null; - for (i = 0; i < $scope.devices.length; i++) { - device = $scope.devices[i]; - if (device.name === data.key) { - - //Check PTM - if (data.value.ansible_local !== undefined && - data.value.ansible_local.ptm !== undefined) { - keys = Object.keys(data.value.ansible_local.ptm); - for (j = 0; j < keys.length; j++) { - ptm = data.value.ansible_local.ptm[keys[j]]; - for (k = 0; k < device.interfaces.length; k++) { - intf = device.interfaces[k]; - if (intf.name === ptm.port) { - intf.link.status = ptm['cbl status'] === 'pass'; - } - } - } - } - - //Check LLDP - if (data.value.ansible_net_neighbors !== undefined) { - keys = Object.keys(data.value.ansible_net_neighbors); - for (j = 0; j < keys.length; j++) { - peers = data.value.ansible_net_neighbors[keys[j]]; - for (k = 0; k < peers.length; k++) { - intf = $scope.getDeviceInterface(device.name, keys[j]); - if (intf !== null && intf.link !== null) { - if (intf.link.to_interface === intf) { - intf.link.status = ($scope.getDeviceInterface(peers[k].host, peers[k].port) === intf.link.from_interface); - } else { - intf.link.status = ($scope.getDeviceInterface(peers[k].host, peers[k].port) === intf.link.to_interface); - } - } - } - } - } - } - } - - $scope.$apply(); - }; $scope.getDevice = function(name) { @@ -1243,151 +945,6 @@ var NetworkUIController = function($scope, return null; }; - $scope.create_template_sequences = function (sequences, template, template_context) { - var i = 0; - var template_variables = util.nunjucks_find_variables(template); - for (i = 0; i < template_variables.length; i++) { - if (template_context[template_variables[i]] === undefined) { - if (sequences[template_variables[i]] === undefined) { - sequences[template_variables[i]] = util.natural_numbers(0); - } - template_context[template_variables[i]] = sequences[template_variables[i]](); - } - } - }; - - $scope.create_inventory_host = function (device) { - if ($scope.template_building || device.template) { - return; - } - console.log(device); - - function update_inventory () { - HostsService.post({inventory: $scope.inventory_id, - name: device.name, - variables: JSON.stringify({awx: {name: device.name, - type: device.type}})}) - .then(function (res) { - console.log(res); - device.host_id = res.data.id; - device.variables = util.parse_variables(res.data.variables); - $scope.send_control_message(new messages.DeviceInventoryUpdate($scope.client_id, - device.id, - device.host_id)); - }) - .catch(function (res) { - console.log(res); - }); - } - - return HostsService.get({inventory: $scope.inventory_id, - name: device.name}) - .then(function (res) { - console.log(res); - if (res.data.count === 0) { - update_inventory(); - } else if (res.data.count === 1) { - device.host_id = res.data.results[0].id; - device.variables = util.parse_variables(res.data.results[0].variables); - $scope.send_control_message(new messages.DeviceInventoryUpdate($scope.client_id, - device.id, - device.host_id)); - } - }) - .catch(function (res) { - console.log(res); - }); - - }; - - $scope.create_inventory_group = function (group) { - if ($scope.template_building || group.template) { - return; - } - console.log(group); - function update_inventory () { - GroupsService.post({inventory: $scope.inventory_id, - name: group.name, - variables: JSON.stringify({awx: {name: group.name, - type: group.type}})}) - .then(function (res) { - console.log(res); - group.group_id = res.data.id; - group.variables = util.parse_variables(res.data.variables); - $scope.send_control_message(new messages.GroupInventoryUpdate($scope.client_id, - group.id, - group.group_id)); - }) - .catch(function (res) { - console.log(res); - }); - } - return GroupsService.get({inventory: $scope.inventory_id, - name: group.name}) - .then(function (res) { - console.log(res); - if (res.data.count === 0) { - update_inventory(); - } else if (res.data.count === 1) { - group.group_id = res.data.results[0].id; - group.variables = util.parse_variables(res.data.results[0].variables); - $scope.send_control_message(new messages.GroupInventoryUpdate($scope.client_id, - group.id, - group.group_id)); - } - }) - .catch(function (res) { - console.log(res); - }); - - }; - - $scope.create_group_association = function (group, devices) { - if ($scope.template_building || group.template) { - return; - } - - console.log(['create_group_association', group, devices]); - - function noop (response) { - console.log(response); - } - - function error_handler (response) { - console.log(response); - } - - var i = 0; - for (i = 0; i < devices.length; i ++) { - if (!devices[i].template) { - $http.post('/api/v2/groups/' + group.group_id + '/hosts/', JSON.stringify({name: devices[i].name})).then(noop).catch(error_handler); - } - } - }; - - $scope.delete_group_association = function (group, devices) { - if ($scope.template_building || group.template) { - return; - } - - console.log(['delete_group_association', group, devices]); - - function noop (response) { - console.log(response); - } - - function error_handler (response) { - console.log(response); - } - - var i = 0; - for (i = 0; i < devices.length; i ++) { - if (!devices[i].template) { - GroupsService.disassociateHost(devices[i].host_id, group.group_id).then(noop).catch(error_handler); - } - } - }; - $scope.onDeviceCreate = function(data) { $scope.create_device(data); }; @@ -2168,7 +1725,7 @@ var NetworkUIController = function($scope, toolboxTitleMargin = toolboxTopMargin + 35; toolboxHeight = $scope.graph.height - toolboxTopMargin; - let toolboxes = ['site_toolbox', 'rack_toolbox', 'inventory_toolbox', 'app_toolbox']; + let toolboxes = ['inventory_toolbox']; toolboxes.forEach((toolbox) => { $scope[toolbox].y = toolboxTopMargin; $scope[toolbox].height = toolboxHeight; @@ -2267,34 +1824,14 @@ var NetworkUIController = function($scope, $scope.keybindings_controller.state.start($scope.keybindings_controller); $scope.view_controller.state = view.Start; $scope.view_controller.state.start($scope.view_controller); - $scope.device_detail_controller.state = device_detail_fsm.Start; - $scope.device_detail_controller.state.start($scope.device_detail_controller); $scope.move_controller.state = move.Start; $scope.move_controller.state.start($scope.move_controller); $scope.details_panel_controller.state = details_panel_fsm.Start; $scope.details_panel_controller.state.start($scope.details_panel_controller); - $scope.link_controller.state = link.Start; - $scope.link_controller.state.start($scope.link_controller); - $scope.stream_controller.state = stream_fsm.Start; - $scope.stream_controller.state.start($scope.stream_controller); - $scope.group_controller.state = group.Start; - $scope.group_controller.state.start($scope.group_controller); - $scope.rack_controller.state = rack_fsm.Disable; - $scope.rack_controller.state.start($scope.rack_controller); - $scope.site_controller.state = site_fsm.Disable; - $scope.site_controller.state.start($scope.site_controller); - $scope.buttons_controller.state = buttons.Start; - $scope.buttons_controller.state.start($scope.buttons_controller); $scope.time_controller.state = time.Start; $scope.time_controller.state.start($scope.time_controller); - $scope.app_toolbox_controller.state = toolbox_fsm.Start; - $scope.app_toolbox_controller.state.start($scope.app_toolbox_controller); $scope.inventory_toolbox_controller.state = toolbox_fsm.Start; $scope.inventory_toolbox_controller.state.start($scope.inventory_toolbox_controller); - $scope.rack_toolbox_controller.state = toolbox_fsm.Start; - $scope.rack_toolbox_controller.state.start($scope.rack_toolbox_controller); - $scope.site_toolbox_controller.state = toolbox_fsm.Start; - $scope.site_toolbox_controller.state.start($scope.site_toolbox_controller); $scope.mode_controller.state = mode_fsm.Start; $scope.mode_controller.state.start($scope.mode_controller); }; @@ -2304,18 +1841,7 @@ var NetworkUIController = function($scope, }; $scope.reset_toolboxes = function () { - $scope.app_toolbox.items = []; - $scope.app_toolbox.items.push(new models.Process(0, 'BGP', 'process', 0, 0)); - $scope.app_toolbox.items.push(new models.Process(0, 'OSPF', 'process', 0, 0)); - $scope.app_toolbox.items.push(new models.Process(0, 'STP', 'process', 0, 0)); - $scope.app_toolbox.items.push(new models.Process(0, 'Zero Pipeline', 'process', 0, 0)); - - for(i = 0; i < $scope.app_toolbox.items.length; i++) { - $scope.app_toolbox.items[i].icon = true; - } $scope.inventory_toolbox.items = []; - $scope.rack_toolbox.items = []; - $scope.site_toolbox.items = []; }; $scope.cancel_animations = function () { diff --git a/awx/ui/client/src/network-ui/network_ui.partial.svg b/awx/ui/client/src/network-ui/network_ui.partial.svg index 47a8f52003..132636ae37 100644 --- a/awx/ui/client/src/network-ui/network_ui.partial.svg +++ b/awx/ui/client/src/network-ui/network_ui.partial.svg @@ -28,7 +28,6 @@ - @@ -37,15 +36,8 @@ - + - - - - - - - - - - - - - - - - - - @@ -86,18 +66,9 @@ - + - - - - - - - - - TEMPLATE BUILDING diff --git a/awx/ui/client/src/network-ui/process.directive.js b/awx/ui/client/src/network-ui/process.directive.js deleted file mode 100644 index bc6ef22046..0000000000 --- a/awx/ui/client/src/network-ui/process.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/process.partial.svg'); - -function process () { - return { restrict: 'A', templateUrl}; -} -exports.process = process; diff --git a/awx/ui/client/src/network-ui/process.partial.svg b/awx/ui/client/src/network-ui/process.partial.svg deleted file mode 100644 index e354b21472..0000000000 --- a/awx/ui/client/src/network-ui/process.partial.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - {{item.name}} -{{item.name}}{{item.edit_label?'_':''}} diff --git a/awx/ui/client/src/network-ui/rack.directive.js b/awx/ui/client/src/network-ui/rack.directive.js deleted file mode 100644 index cc619c63f3..0000000000 --- a/awx/ui/client/src/network-ui/rack.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/rack.partial.svg'); - -function rack () { - return { restrict: 'A', templateUrl}; -} -exports.rack = rack; diff --git a/awx/ui/client/src/network-ui/rack.fsm.js b/awx/ui/client/src/network-ui/rack.fsm.js deleted file mode 100644 index 33400c6334..0000000000 --- a/awx/ui/client/src/network-ui/rack.fsm.js +++ /dev/null @@ -1,595 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); -var models = require('./models.js'); -var messages = require('./messages.js'); -var nunjucks = require('nunjucks'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Disable () { - this.name = 'Disable'; -} -inherits(_Disable, _State); -var Disable = new _Disable(); -exports.Disable = Disable; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - - -function _Selected1 () { - this.name = 'Selected1'; -} -inherits(_Selected1, _State); -var Selected1 = new _Selected1(); -exports.Selected1 = Selected1; - -function _Selected2 () { - this.name = 'Selected2'; -} -inherits(_Selected2, _State); -var Selected2 = new _Selected2(); -exports.Selected2 = Selected2; - -function _Selected3 () { - this.name = 'Selected3'; -} -inherits(_Selected3, _State); -var Selected3 = new _Selected3(); -exports.Selected3 = Selected3; - -function _EditLabel () { - this.name = 'EditLabel'; -} -inherits(_EditLabel, _State); -var EditLabel = new _EditLabel(); -exports.EditLabel = EditLabel; - - -function _Move () { - this.name = 'Move'; -} -inherits(_Move, _State); -var Move = new _Move(); -exports.Move = Move; - -function _ContextMenu () { - this.name = 'ContextMenu'; -} -inherits(_ContextMenu, _State); -var ContextMenu = new _ContextMenu(); -exports.ContextMenu = ContextMenu; - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - - -_Ready.prototype.onPasteRack = function (controller, msg_type, message) { - - var scope = controller.scope; - var device = null; - var intf = null; - var process = null; - var link = null; - var i = 0; - var j = 0; - var top_left_x, top_left_y; - var device_map = {}; - var c_messages = []; - var rack_template_context = null; - var device_template_context = null; - var promises = []; - scope.hide_groups = false; - - scope.pressedX = scope.mouseX; - scope.pressedY = scope.mouseY; - scope.pressedScaledX = scope.scaledX; - scope.pressedScaledY = scope.scaledY; - top_left_x = scope.scaledX - message.group.x2/2; - top_left_y = scope.scaledY - message.group.y2/2; - - var group = new models.Group(controller.scope.group_id_seq(), - message.group.name, - message.group.type, - top_left_x, - top_left_y, - top_left_x + message.group.x2, - top_left_y + message.group.y2, - false); - - if (!controller.scope.template_building && message.group.template) { - try { - rack_template_context = {}; - rack_template_context.id = group.id; - controller.scope.create_template_sequences(controller.scope.sequences, group.name, rack_template_context); - group.name = nunjucks.renderString(group.name, rack_template_context); - promises.push(scope.create_inventory_group(group)); - } catch (err) { - console.log(err); - } - } - - c_messages.push(new messages.GroupCreate(scope.client_id, - group.id, - group.x1, - group.y1, - group.x2, - group.y2, - group.name, - group.type, - 0)); - - scope.groups.push(group); - - if (!controller.scope.template_building && message.group.template) { - device_template_context = Object.assign({}, rack_template_context); - device_template_context.rack_id = group.id; - for(i=0; i= 48 && $event.keyCode <=90) { //Alphanumeric - item.name += $event.key; - } else if ($event.keyCode >= 186 && $event.keyCode <=222) { //Punctuation - item.name += $event.key; - } else if ($event.keyCode === 13) { //Enter - controller.changeState(Selected2); - } else if ($event.keyCode === 32) { //Space - item.name += " "; - } else { - console.log($event.keyCode); - } - controller.scope.send_control_message(new messages.GroupLabelEdit(controller.scope.client_id, - item.id, - item.name, - previous_name)); -}; -_EditLabel.prototype.onKeyDown.transitions = ['Selected2']; - - -_Ready.prototype.onMouseDown = function (controller, msg_type, $event) { - - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - - var groups = controller.scope.groups; - var i = 0; - var selected = false; - controller.scope.clear_selections(); - - for (i = 0; i < groups.length; i++) { - if (groups[i].type !== "rack") { - continue; - } - if (groups[i].is_icon_selected(controller.scope.scaledX, controller.scope.scaledY)) { - groups[i].selected = true; - selected = true; - controller.scope.selected_groups.push(groups[i]); - } - } - - if (selected) { - controller.changeState(Selected1); - } else { - controller.delegate_channel.send(msg_type, $event); - } -}; -_Ready.prototype.onMouseDown.transitions = ['Selected1']; - -_Move.prototype.start = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - for (i = 0; i < groups.length; i++) { - groups[i].moving = true; - } -}; - -_Move.prototype.end = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - var j = 0; - for (i = 0; i < groups.length; i++) { - for(j = 0; j < groups[i].devices.length; j++) { - groups[i].devices[j].selected = false; - } - } - - for (i = 0; i < groups.length; i++) { - groups[i].moving = false; - } -}; - -_Move.prototype.onMouseUp = function (controller) { - - controller.changeState(Selected2); - -}; -_Move.prototype.onMouseUp.transitions = ['Selected2']; - - -_Move.prototype.onMouseMove = function (controller) { - - var groups = controller.scope.selected_groups; - var devices = null; - - var diffX = controller.scope.scaledX - controller.scope.pressedScaledX; - var diffY = controller.scope.scaledY - controller.scope.pressedScaledY; - var i = 0; - var j = 0; - var k = 0; - var previous_x1, previous_y1, previous_x2, previous_y2, previous_x, previous_y; - var c_messages = []; - for (i = 0; i < groups.length; i++) { - c_messages = []; - previous_x1 = groups[i].x1; - previous_y1 = groups[i].y1; - previous_x2 = groups[i].x2; - previous_y2 = groups[i].y2; - groups[i].x1 = groups[i].x1 + diffX; - groups[i].y1 = groups[i].y1 + diffY; - groups[i].x2 = groups[i].x2 + diffX; - groups[i].y2 = groups[i].y2 + diffY; - - c_messages.push(new messages.GroupMove(controller.scope.client_id, - groups[i].id, - groups[i].x1, - groups[i].y1, - groups[i].x2, - groups[i].y2, - previous_x1, - previous_y1, - previous_x2, - previous_y2)); - - - devices = groups[i].devices; - for (j = 0; j < devices.length; j++) { - previous_x = devices[j].x; - previous_y = devices[j].y; - devices[j].x = devices[j].x + diffX; - devices[j].y = devices[j].y + diffY; - for (k = 0; k < devices[j].interfaces.length; k++) { - devices[j].interfaces[k].dot(); - if (devices[j].interfaces[k].link !== null) { - devices[j].interfaces[k].link.to_interface.dot(); - devices[j].interfaces[k].link.from_interface.dot(); - } - } - c_messages.push(new messages.DeviceMove(controller.scope.client_id, - devices[j].id, - devices[j].x, - devices[j].y, - previous_x, - previous_y)); - } - - controller.scope.send_control_message(new messages.MultipleMessage(controller.scope.client_id, c_messages)); - } - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - -}; - -_Move.prototype.onTouchMove = _Move.prototype.onMouseMove; - -_ContextMenu.prototype.end = function (controller) { - - controller.scope.removeContextMenu(); -}; - -_ContextMenu.prototype.onLabelEdit = function (controller) { - - controller.changeState(EditLabel); - -}; -_ContextMenu.prototype.onLabelEdit.transitions = ['EditLabel']; - -_ContextMenu.prototype.onMouseDown = function (controller) { - - controller.changeState(Ready); - -}; -_ContextMenu.prototype.onMouseDown.transitions = ['Ready']; diff --git a/awx/ui/client/src/network-ui/rack.icon.directive.js b/awx/ui/client/src/network-ui/rack.icon.directive.js deleted file mode 100644 index ce3bdef666..0000000000 --- a/awx/ui/client/src/network-ui/rack.icon.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/rack_icon.partial.svg'); - -function rackIcon () { - return { restrict: 'A', templateUrl}; -} -exports.rackIcon = rackIcon; diff --git a/awx/ui/client/src/network-ui/rack.partial.svg b/awx/ui/client/src/network-ui/rack.partial.svg deleted file mode 100644 index b4eb56e7f4..0000000000 --- a/awx/ui/client/src/network-ui/rack.partial.svg +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - - {{item.name}}{{item.edit_label?'_':''}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - - {{item.name}}{{item.edit_label?'_':''}} - - - diff --git a/awx/ui/client/src/network-ui/rack_icon.partial.svg b/awx/ui/client/src/network-ui/rack_icon.partial.svg deleted file mode 100644 index 4628a89598..0000000000 --- a/awx/ui/client/src/network-ui/rack_icon.partial.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - - {{item.name}}{{item.edit_label?'_':''}} - - diff --git a/awx/ui/client/src/network-ui/router.partial.svg b/awx/ui/client/src/network-ui/router.partial.svg index 12a4e06ac2..99a2606926 100644 --- a/awx/ui/client/src/network-ui/router.partial.svg +++ b/awx/ui/client/src/network-ui/router.partial.svg @@ -1,5 +1,4 @@ - @@ -80,4 +79,3 @@ {{item.name}}{{item.edit_label?'_':''}} - diff --git a/awx/ui/client/src/network-ui/site.directive.js b/awx/ui/client/src/network-ui/site.directive.js deleted file mode 100644 index 8382bf1b47..0000000000 --- a/awx/ui/client/src/network-ui/site.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/site.partial.svg'); - -function site () { - return { restrict: 'A', templateUrl}; -} -exports.site = site; diff --git a/awx/ui/client/src/network-ui/site.fsm.js b/awx/ui/client/src/network-ui/site.fsm.js deleted file mode 100644 index d5d36886da..0000000000 --- a/awx/ui/client/src/network-ui/site.fsm.js +++ /dev/null @@ -1,730 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); -var models = require('./models.js'); -var messages = require('./messages.js'); -var nunjucks = require('nunjucks'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Disable () { - this.name = 'Disable'; -} -inherits(_Disable, _State); -var Disable = new _Disable(); -exports.Disable = Disable; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - - -function _Selected1 () { - this.name = 'Selected1'; -} -inherits(_Selected1, _State); -var Selected1 = new _Selected1(); -exports.Selected1 = Selected1; - -function _Selected2 () { - this.name = 'Selected2'; -} -inherits(_Selected2, _State); -var Selected2 = new _Selected2(); -exports.Selected2 = Selected2; - -function _Selected3 () { - this.name = 'Selected3'; -} -inherits(_Selected3, _State); -var Selected3 = new _Selected3(); -exports.Selected3 = Selected3; - -function _EditLabel () { - this.name = 'EditLabel'; -} -inherits(_EditLabel, _State); -var EditLabel = new _EditLabel(); -exports.EditLabel = EditLabel; - - -function _Move () { - this.name = 'Move'; -} -inherits(_Move, _State); -var Move = new _Move(); -exports.Move = Move; - - -function _ContextMenu () { - this.name = 'ContextMenu'; -} -inherits(_ContextMenu, _State); -var ContextMenu = new _ContextMenu(); -exports.ContextMenu = ContextMenu; - - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - - -_Ready.prototype.onPasteSite = function (controller, msg_type, message) { - - var scope = controller.scope; - var device = null; - var intf = null; - var process = null; - var link = null; - var stream = null; - var i = 0; - var j = 0; - var top_left_x, top_left_y; - var device_map = {}; - var inner_group = null; - var c_messages = []; - var membership_old_new = null; - var site_template_context = null; - var rack_template_context = null; - var device_template_context = null; - var promises = []; - scope.hide_groups = false; - - scope.pressedX = scope.mouseX; - scope.pressedY = scope.mouseY; - scope.pressedScaledX = scope.scaledX; - scope.pressedScaledY = scope.scaledY; - top_left_x = scope.scaledX - message.group.x2/2; - top_left_y = scope.scaledY - message.group.y2/2; - - var group = new models.Group(controller.scope.group_id_seq(), - message.group.name, - message.group.type, - top_left_x, - top_left_y, - top_left_x + message.group.x2, - top_left_y + message.group.y2, - false); - - c_messages.push(new messages.GroupCreate(scope.client_id, - group.id, - group.x1, - group.y1, - group.x2, - group.y2, - group.name, - group.type, - 0)); - - scope.groups.push(group); - - for(i=0; i= 48 && $event.keyCode <=90) { //Alphanumeric - item.name += $event.key; - } else if ($event.keyCode >= 186 && $event.keyCode <=222) { //Punctuation - item.name += $event.key; - } else if ($event.keyCode === 13) { //Enter - controller.changeState(Selected2); - } else if ($event.keyCode === 32) { //Space - item.name += " "; - } else { - console.log($event.keyCode); - } - controller.scope.send_control_message(new messages.GroupLabelEdit(controller.scope.client_id, - item.id, - item.name, - previous_name)); -}; -_EditLabel.prototype.onKeyDown.transitions = ['Selected2']; - - -_Ready.prototype.onMouseDown = function (controller, msg_type, $event) { - - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - - var groups = controller.scope.groups; - var i = 0; - var selected = false; - controller.scope.clear_selections(); - - for (i = 0; i < groups.length; i++) { - if (groups[i].type !== "site") { - continue; - } - if (groups[i].is_icon_selected(controller.scope.scaledX, controller.scope.scaledY)) { - groups[i].selected = true; - selected = true; - controller.scope.selected_groups.push(groups[i]); - } - } - - if (selected) { - controller.changeState(Selected1); - } else { - controller.delegate_channel.send(msg_type, $event); - } -}; -_Ready.prototype.onMouseDown.transitions = ['Selected1']; - -_Move.prototype.start = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - for (i = 0; i < groups.length; i++) { - groups[i].moving = true; - } -}; - -_Move.prototype.end = function (controller) { - - var groups = controller.scope.selected_groups; - - var i = 0; - var j = 0; - for (i = 0; i < groups.length; i++) { - for(j = 0; j < groups[i].devices.length; j++) { - groups[i].devices[j].selected = false; - } - } - - for (i = 0; i < groups.length; i++) { - groups[i].moving = false; - } -}; - -_Move.prototype.onMouseUp = function (controller) { - - controller.changeState(Selected2); - -}; -_Move.prototype.onMouseUp.transitions = ['Selected2']; - - -_Move.prototype.onMouseMove = function (controller) { - - var groups = controller.scope.selected_groups; - var devices = null; - - var diffX = controller.scope.scaledX - controller.scope.pressedScaledX; - var diffY = controller.scope.scaledY - controller.scope.pressedScaledY; - var i = 0; - var j = 0; - var k = 0; - var previous_x1, previous_y1, previous_x2, previous_y2, previous_x, previous_y; - var c_messages = []; - for (i = 0; i < groups.length; i++) { - c_messages = []; - previous_x1 = groups[i].x1; - previous_y1 = groups[i].y1; - previous_x2 = groups[i].x2; - previous_y2 = groups[i].y2; - groups[i].x1 = groups[i].x1 + diffX; - groups[i].y1 = groups[i].y1 + diffY; - groups[i].x2 = groups[i].x2 + diffX; - groups[i].y2 = groups[i].y2 + diffY; - - c_messages.push(new messages.GroupMove(controller.scope.client_id, - groups[i].id, - groups[i].x1, - groups[i].y1, - groups[i].x2, - groups[i].y2, - previous_x1, - previous_y1, - previous_x2, - previous_y2)); - - - devices = groups[i].devices; - for (j = 0; j < devices.length; j++) { - previous_x = devices[j].x; - previous_y = devices[j].y; - devices[j].x = devices[j].x + diffX; - devices[j].y = devices[j].y + diffY; - for (k = 0; k < devices[j].interfaces.length; k++) { - devices[j].interfaces[k].dot(); - if (devices[j].interfaces[k].link !== null) { - devices[j].interfaces[k].link.to_interface.dot(); - devices[j].interfaces[k].link.from_interface.dot(); - } - } - c_messages.push(new messages.DeviceMove(controller.scope.client_id, - devices[j].id, - devices[j].x, - devices[j].y, - previous_x, - previous_y)); - } - for (j = 0; j < groups[i].groups.length; j++) { - previous_x1 = groups[i].groups[j].x1; - previous_y1 = groups[i].groups[j].y1; - previous_x2 = groups[i].groups[j].x2; - previous_y2 = groups[i].groups[j].y2; - groups[i].groups[j].x1 = groups[i].groups[j].x1 + diffX; - groups[i].groups[j].y1 = groups[i].groups[j].y1 + diffY; - groups[i].groups[j].x2 = groups[i].groups[j].x2 + diffX; - groups[i].groups[j].y2 = groups[i].groups[j].y2 + diffY; - - c_messages.push(new messages.GroupMove(controller.scope.client_id, - groups[i].groups[j].id, - groups[i].groups[j].x1, - groups[i].groups[j].y1, - groups[i].groups[j].x2, - groups[i].groups[j].y2, - previous_x1, - previous_y1, - previous_x2, - previous_y2)); - } - - controller.scope.send_control_message(new messages.MultipleMessage(controller.scope.client_id, c_messages)); - } - controller.scope.pressedScaledX = controller.scope.scaledX; - controller.scope.pressedScaledY = controller.scope.scaledY; - -}; - -_Move.prototype.onTouchMove = _Move.prototype.onMouseMove; - -_ContextMenu.prototype.end = function (controller) { - - controller.scope.removeContextMenu(); -}; - -_ContextMenu.prototype.onLabelEdit = function (controller) { - - controller.changeState(EditLabel); - -}; -_ContextMenu.prototype.onLabelEdit.transitions = ['EditLabel']; - -_ContextMenu.prototype.onMouseDown = function (controller) { - - controller.changeState(Ready); - -}; -_ContextMenu.prototype.onMouseDown.transitions = ['Ready']; diff --git a/awx/ui/client/src/network-ui/site.icon.directive.js b/awx/ui/client/src/network-ui/site.icon.directive.js deleted file mode 100644 index 3c95aa9411..0000000000 --- a/awx/ui/client/src/network-ui/site.icon.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/site_icon.partial.svg'); - -function siteIcon () { - return { restrict: 'A', templateUrl}; -} -exports.siteIcon = siteIcon; diff --git a/awx/ui/client/src/network-ui/site.partial.svg b/awx/ui/client/src/network-ui/site.partial.svg deleted file mode 100644 index a716c30de6..0000000000 --- a/awx/ui/client/src/network-ui/site.partial.svg +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - {{item.name}}{{item.edit_label?'_':''}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - {{item.name}}{{item.edit_label?'_':''}} - - - diff --git a/awx/ui/client/src/network-ui/site_icon.partial.svg b/awx/ui/client/src/network-ui/site_icon.partial.svg deleted file mode 100644 index 9fcd6c85c3..0000000000 --- a/awx/ui/client/src/network-ui/site_icon.partial.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{item.name}} - - {{item.name}}{{item.edit_label?'_':''}} - - diff --git a/awx/ui/client/src/network-ui/status.light.directive.js b/awx/ui/client/src/network-ui/status.light.directive.js deleted file mode 100644 index e2b4ededff..0000000000 --- a/awx/ui/client/src/network-ui/status.light.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/status_light.partial.svg'); - -function statusLight () { - return { restrict: 'A', templateUrl}; -} -exports.statusLight = statusLight; diff --git a/awx/ui/client/src/network-ui/status_light.partial.svg b/awx/ui/client/src/network-ui/status_light.partial.svg deleted file mode 100644 index 1eb021bd5e..0000000000 --- a/awx/ui/client/src/network-ui/status_light.partial.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/awx/ui/client/src/network-ui/stream.directive.js b/awx/ui/client/src/network-ui/stream.directive.js deleted file mode 100644 index a28cd14f0e..0000000000 --- a/awx/ui/client/src/network-ui/stream.directive.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -const templateUrl = require('~network-ui/stream.partial.svg'); - -function stream () { - return { restrict: 'A', templateUrl}; -} -exports.stream = stream; diff --git a/awx/ui/client/src/network-ui/stream.fsm.js b/awx/ui/client/src/network-ui/stream.fsm.js deleted file mode 100644 index 5b406404c6..0000000000 --- a/awx/ui/client/src/network-ui/stream.fsm.js +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ -var inherits = require('inherits'); -var fsm = require('./fsm.js'); -var models = require('./models.js'); -var messages = require('./messages.js'); - -function _State () { -} -inherits(_State, fsm._State); - - -function _Ready () { - this.name = 'Ready'; -} -inherits(_Ready, _State); -var Ready = new _Ready(); -exports.Ready = Ready; - -function _Start () { - this.name = 'Start'; -} -inherits(_Start, _State); -var Start = new _Start(); -exports.Start = Start; - -function _Connected () { - this.name = 'Connected'; -} -inherits(_Connected, _State); -var Connected = new _Connected(); -exports.Connected = Connected; - -function _Connecting () { - this.name = 'Connecting'; -} -inherits(_Connecting, _State); -var Connecting = new _Connecting(); -exports.Connecting = Connecting; - -function _Selecting () { - this.name = 'Selecting'; -} -inherits(_Selecting, _State); -var Selecting = new _Selecting(); -exports.Selecting = Selecting; - - - - -_Ready.prototype.onNewStream = function (controller) { - - controller.scope.clear_selections(); - controller.changeState(Selecting); -}; -_Ready.prototype.onNewStream.transitions = ['Selecting']; - - -_Start.prototype.start = function (controller) { - - controller.changeState(Ready); - -}; -_Start.prototype.start.transitions = ['Ready']; - - - -_Connected.prototype.start = function (controller) { - - controller.scope.clear_selections(); - controller.changeState(Ready); -}; -_Connected.prototype.start.transitions = ['Ready']; - - -_Connecting.prototype.onMouseDown = function () { -}; - -_Connecting.prototype.onMouseUp = function (controller) { - - var selected = controller.scope.select_items(false); - if (selected.last_selected_device !== null) { - controller.scope.new_stream.to_device = selected.last_selected_device; - controller.scope.send_control_message(new messages.StreamCreate(controller.scope.client_id, - controller.scope.new_stream.id, - controller.scope.new_stream.from_device.id, - controller.scope.new_stream.to_device.id, - '')); - controller.scope.new_stream = null; - controller.scope.update_offsets(); - controller.changeState(Connected); - } else { - var index = controller.scope.streams.indexOf(controller.scope.new_stream); - if (index !== -1) { - controller.scope.streams.splice(index, 1); - } - controller.scope.new_stream = null; - controller.changeState(Ready); - } -}; -_Connecting.prototype.onMouseUp.transitions = ['Ready', 'Connected']; - - -_Selecting.prototype.onMouseDown = function () { -}; - -_Selecting.prototype.onMouseUp = function (controller) { - - var selected = controller.scope.select_items(false); - if (selected.last_selected_device !== null) { - controller.scope.new_stream = new models.Stream(controller.scope.stream_id_seq(), selected.last_selected_device, null, ''); - controller.scope.streams.push(controller.scope.new_stream); - controller.changeState(Connecting); - } -}; -_Selecting.prototype.onMouseUp.transitions = ['Connecting']; - diff --git a/awx/ui/client/src/network-ui/stream.partial.svg b/awx/ui/client/src/network-ui/stream.partial.svg deleted file mode 100644 index 7a5c759ee0..0000000000 --- a/awx/ui/client/src/network-ui/stream.partial.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{stream.label}} -{{stream.label}}{{stream.edit_label?'_':''}} - - - diff --git a/awx/ui/client/src/network-ui/switch.partial.svg b/awx/ui/client/src/network-ui/switch.partial.svg index 4fee735ed9..65692d8101 100644 --- a/awx/ui/client/src/network-ui/switch.partial.svg +++ b/awx/ui/client/src/network-ui/switch.partial.svg @@ -1,5 +1,4 @@ - @@ -82,4 +81,3 @@ {{item.name}}{{item.edit_label?'_':''}} - diff --git a/awx/ui/client/src/network-ui/tables.ui.controller.js b/awx/ui/client/src/network-ui/tables.ui.controller.js deleted file mode 100644 index a4960dbc86..0000000000 --- a/awx/ui/client/src/network-ui/tables.ui.controller.js +++ /dev/null @@ -1,153 +0,0 @@ -/* Copyright (c) 2017 Red Hat, Inc. */ - -var util = require('./util.js'); -var messages = require('./messages.js'); -var ReconnectingWebSocket = require('reconnectingwebsocket'); - -var TablesUIController = function($scope, $window, $location, $timeout) { - - $window.scope = $scope; - $scope.disconnected = false; - - $scope.topology_id = $location.search().topology_id || 0; - if (!$scope.disconnected) { - $scope.control_socket = new ReconnectingWebSocket("ws://" + window.location.host + "/network_ui/tables?topology_id=" + $scope.topology_id, - null, - {debug: false, reconnectInterval: 300}); - } else { - $scope.control_socket = { - on_message: util.noop - }; - } - - $scope.client_id = 0; - $scope.message_id_seq = util.natural_numbers(0); - - $scope.onClientId = function(data) { - $scope.client_id = data; - }; - - $scope.control_socket.onmessage = function(message) { - var type_data = JSON.parse(message.data); - var type = type_data[0]; - var data = type_data[1]; - $scope.handle_message(type, data); - $scope.$apply(); - }; - - $scope.control_socket.onopen = function() { - //Ignore - }; - - // Call onopen directly if $scope.control_socket is already open - if ($scope.control_socket.readyState === WebSocket.OPEN) { - $scope.control_socket.onopen(); - } - - $scope.send_control_message = function (message) { - var i = 0; - message.sender = $scope.client_id; - message.message_id = $scope.message_id_seq(); - if (message.constructor.name === "MultipleMessage") { - for (i=0; i < message.messages.length; i++) { - message.messages[i].message_id = $scope.message_id_seq(); - } - } - var data = messages.serialize(message); - if (!$scope.disconnected) { - $scope.control_socket.send(data); - console.log("Sent message"); - } else { - console.log(data); - } - }; - - $scope.handle_message = function(msg_type, message) { - - var handler_name = 'on' + msg_type; - if (typeof(this[handler_name]) !== "undefined") { - this[handler_name](msg_type, message); - } else { - this.default_handler(msg_type, message); - } - }; - - $scope.default_handler = function(msg_type, message) { - console.log([msg_type, message]); - }; - - - // End web socket - // - // - - - $scope.onid = function(msg_type, message) { - console.log(["Set client_id to" , message]); - $scope.client_id = message; - }; - - $scope.ontopology_id = function(msg_type, message) { - console.log(["Set topology_id to" , message]); - $scope.topology_id = message; - $location.search({topology_id: message}); - }; - - $scope.onsheet = function(msg_type, message) { - console.log("Update sheet"); - console.log(message); - $scope.data = message.data; - $scope.name = message.name; - $scope.sheets.push(message.name); - $scope.sheets_by_name[message.name] = message.data; - }; - - $scope.onTableCellEdit = function(msg_type, message) { - if (message.sender === $scope.client_id) { - return; - } - console.log(["Updating data", message.sheet, message.row, message.col, message.new_value]); - - $scope.sheets_by_name[message.sheet][message.row][message.col].value = message.new_value; - $scope.$apply(); - }; - - $scope.user = { - name: 'world' - }; - - $scope.data = []; - $scope.sheets = []; - $scope.sheets_by_name = {}; - - console.log("Tables UI started"); - - $scope.$on('$destroy', function () { - console.log("Tables UI stopping"); - }); - - $scope.updateData = function (old_data, new_data, column_index, row_index, column_name, row_name) { - console.log(['updateData', $scope.name, old_data, new_data, column_index, row_index, column_name, row_name]); - $scope.send_control_message(new messages.TableCellEdit($scope.client_id, - $scope.name, - column_index, - row_index, - old_data, - new_data)); - - $timeout(function () { - var q = document.querySelectorAll("#" + $scope.name + "_" + column_index + "_" + (row_index + 1)); - if (q.length > 0) { - q[0].click(); - } - }); - }; - - $scope.changeSheet = function(sheet) { - $scope.name = sheet; - $scope.data = $scope.sheets_by_name[sheet]; - }; -}; - -exports.TablesUIController = TablesUIController; -console.log("Tables UI loaded"); diff --git a/awx/ui/client/src/network-ui/tables_ui.partial.svg b/awx/ui/client/src/network-ui/tables_ui.partial.svg deleted file mode 100644 index aa7a00b97f..0000000000 --- a/awx/ui/client/src/network-ui/tables_ui.partial.svg +++ /dev/null @@ -1,30 +0,0 @@ - -
- - - - - - - - - - - - - - - - - -
- - {{column_header.value}} -
- {{row[0].value}} - - {{cell.value}} -
-
diff --git a/awx/ui/client/src/network-ui/time.fsm.js b/awx/ui/client/src/network-ui/time.fsm.js index b18bc3c737..c36edeca7c 100644 --- a/awx/ui/client/src/network-ui/time.fsm.js +++ b/awx/ui/client/src/network-ui/time.fsm.js @@ -1,7 +1,6 @@ /* Copyright (c) 2017 Red Hat, Inc. */ var inherits = require('inherits'); var fsm = require('./fsm.js'); -var messages = require('./messages.js'); var util = require('./util.js'); var models = require('./models.js'); @@ -9,13 +8,6 @@ function _State () { } inherits(_State, fsm._State); -function _Past () { - this.name = 'Past'; -} -inherits(_Past, _State); -var Past = new _Past(); -exports.Past = Past; - function _Start () { this.name = 'Start'; } @@ -30,211 +22,6 @@ inherits(_Present, _State); var Present = new _Present(); exports.Present = Present; -_Past.prototype.start = function (controller) { - - controller.scope.time_pointer = controller.scope.history.length - 1; -}; - - -_Past.prototype.onMessage = function(controller, msg_type, message) { - - var type_data = JSON.parse(message.data); - var type = type_data[0]; - var data = type_data[1]; - - if (['DeviceCreate', - 'DeviceDestroy', - 'DeviceMove', - 'DeviceLabelEdit', - 'GroupLabelEdit', - 'GroupCreate', - 'LinkLabelEdit', - 'InterfaceLabelEdit', - 'InterfaceCreate', - 'LinkCreate', - 'LinkDestroy'].indexOf(type) !== -1) { - controller.changeState(Present); - controller.scope.history.splice(controller.scope.time_pointer); - if (data.sender !== controller.scope.client_id) { - controller.handle_message(msg_type, message); - } else { - controller.scope.history.push(message.data); - } - } else { - controller.handle_message(type, data); - } -}; - -_Past.prototype.onMultipleMessage = function(controller, msg_type, message) { - var i = 0; - if (message.sender !== controller.scope.client_id) { - for (i=0; i< message.messages.length; i++) { - controller.handle_message(message.messages[i].msg_type, message.messages[i]); - } - } -}; - -_Past.prototype.onDeviceSelected = function(controller, msg_type, message) { - if (message.sender !== controller.scope.client_id) { - controller.scope.onDeviceSelected(message); - } -}; -_Past.prototype.onDeviceUnSelected = function(controller, msg_type, message) { - if (message.sender !== controller.scope.client_id) { - controller.scope.onDeviceUnSelected(message); - } -}; - -_Past.prototype.onUndo = function(controller, msg_type, message) { - if (message.sender !== controller.scope.client_id) { - controller.scope.time_pointer = Math.max(0, controller.scope.time_pointer - 1); - controller.scope.undo(message.original_message); - } -}; -_Past.prototype.onRedo = function(controller, msg_type, message) { - if (message.sender !== controller.scope.client_id) { - controller.scope.time_pointer = Math.min(controller.scope.history.length, controller.scope.time_pointer + 1); - controller.scope.redo(message.original_message); - if (controller.scope.time_pointer === controller.scope.history.length) { - controller.changeState(Present); - } - } -}; -_Past.prototype.onRedo.transitions = ['Present']; - -_Past.prototype.onCoverageRequest = function(controller) { - controller.scope.send_coverage(); -}; -_Past.prototype.onStopRecording = function(controller) { - controller.scope.recording = false; -}; -_Past.prototype.onStartReplay = function(controller) { - controller.scope.replay = true; -}; -_Past.prototype.onStopReplay = function(controller) { - controller.scope.replay = false; -}; -_Past.prototype.onViewPort = function(controller, msg_type, message) { - if (message.sender === controller.scope.client_id) { - return; - } - controller.scope.current_scale = message.scale; - controller.scope.panX = message.panX; - controller.scope.panY = message.panY; - controller.scope.updateScaledXY(); - controller.scope.updatePanAndScale(); -}; -_Past.prototype.onMouseEvent = function(controller, msg_type, message) { - if (message.sender === controller.scope.client_id) { - return; - } - message.preventDefault = util.noop; - if (message.type === "mousemove") { - controller.scope.onMouseMove(message); - } - if (message.type === "mouseup") { - controller.scope.onMouseUp(message); - } - if (message.type === "mousedown") { - controller.scope.onMouseDown(message); - } - if (message.type === "mouseover") { - controller.scope.onMouseOver(message); - } - if (message.type === "mouseout") { - controller.scope.onMouseOver(message); - } -}; -_Past.prototype.onMouseWheelEvent = function(controller, msg_type, message) { - if (message.sender === controller.scope.client_id) { - return; - } - message.preventDefault = util.noop; - message.stopPropagation = util.noop; - controller.scope.onMouseWheel(message, message.delta, message.deltaX, message.deltaY); -}; -_Past.prototype.onKeyEvent = function(controller, msg_type, message) { - if (message.sender === controller.scope.client_id) { - return; - } - message.preventDefault = util.noop; - if (message.type === "keydown") { - controller.scope.onKeyDown(message); - } -}; - -_Past.prototype.onMouseWheel = function (controller, msg_type, message) { - - var $event = message[0]; - var delta = message[1]; - - if ($event.originalEvent.metaKey) { - if (delta < 0) { - this.undo(controller); - } else if (delta > 0) { - this.redo(controller); - } - } else { - controller.delegate_channel.send(msg_type, message); - } - -}; -_Past.prototype.onMouseWheel.transitions = ['Present']; - -_Past.prototype.onKeyDown = function(controller, msg_type, $event) { - - - if ($event.key === 'z' && $event.metaKey && ! $event.shiftKey) { - this.undo(controller); - return; - } else if ($event.key === 'z' && $event.ctrlKey && ! $event.shiftKey) { - this.undo(controller); - return; - } else if ($event.key === 'Z' && $event.metaKey && $event.shiftKey) { - this.redo(controller); - return; - } else if ($event.key === 'Z' && $event.ctrlKey && $event.shiftKey) { - this.redo(controller); - return; - } else { - controller.delegate_channel.send(msg_type, $event); - } -}; -_Past.prototype.onKeyDown.transitions = ['Present']; - - -_Past.prototype.undo = function(controller) { - //controller.changeState(Past); - controller.scope.time_pointer = Math.max(0, controller.scope.time_pointer - 1); - if (controller.scope.time_pointer >= 0) { - var change = controller.scope.history[controller.scope.time_pointer]; - var type_data = JSON.parse(change); - controller.scope.send_control_message(new messages.Undo(controller.scope.client_id, - type_data)); - - - controller.scope.undo(type_data); - } -}; - -_Past.prototype.redo = function(controller) { - - - if (controller.scope.time_pointer < controller.scope.history.length) { - var change = controller.scope.history[controller.scope.time_pointer]; - var type_data = JSON.parse(change); - controller.scope.send_control_message(new messages.Redo(controller.scope.client_id, - type_data)); - controller.scope.redo(type_data); - controller.scope.time_pointer = Math.min(controller.scope.history.length, controller.scope.time_pointer + 1); - if (controller.scope.time_pointer === controller.scope.history.length) { - controller.changeState(Present); - } - } else { - controller.changeState(Present); - } -}; - _Start.prototype.start = function (controller) { controller.changeState(Present); @@ -350,14 +137,6 @@ _Present.prototype.onDeviceUnSelected = function(controller, msg_type, message) controller.scope.onDeviceUnSelected(message); } }; -_Present.prototype.onUndo = function(controller, msg_type, message) { - if (message.sender !== controller.scope.client_id) { - controller.scope.time_pointer = Math.max(0, controller.scope.time_pointer - 1); - controller.scope.undo(message.original_message); - controller.changeState(Past); - } -}; -_Present.prototype.onUndo.transitions = ['Past']; _Present.prototype.onSnapshot = function(controller, msg_type, message) { if (message.sender !== controller.scope.client_id) { controller.scope.onSnapshot(message); @@ -445,52 +224,6 @@ _Present.prototype.onMouseWheelEvent = function(controller, msg_type, message) { } }; -_Present.prototype.onMouseWheel = function (controller, msg_type, message) { - - var $event = message[0]; - var delta = message[1]; - - if ($event.originalEvent.metaKey) { - if (delta < 0) { - this.undo(controller); - } - } else { - controller.delegate_channel.send(msg_type, message); - } - -}; -_Present.prototype.onMouseWheel.transitions = ['Past']; - -_Present.prototype.onKeyDown = function(controller, msg_type, $event) { - - - if ($event.key === 'z' && $event.metaKey && ! $event.shiftKey) { - this.undo(controller); - return; - } else if ($event.key === 'z' && $event.ctrlKey && ! $event.shiftKey) { - this.undo(controller); - return; - } else { - controller.delegate_channel.send(msg_type, $event); - } -}; -_Present.prototype.onKeyDown.transitions = ['Past']; - - -_Present.prototype.undo = function(controller) { - controller.scope.time_pointer = controller.scope.history.length - 1; - if (controller.scope.time_pointer >= 0) { - var change = controller.scope.history[controller.scope.time_pointer]; - var type_data = JSON.parse(change); - controller.scope.send_control_message(new messages.Undo(controller.scope.client_id, - type_data)); - - controller.scope.undo(type_data); - controller.changeState(Past); - } -}; - - _Present.prototype.onTestCase = function(controller, msg_type, message) { if ('runnable' in message[1]) { if (!message[1].runnable) { diff --git a/awx/ui/client/src/network-ui/tower.app.js b/awx/ui/client/src/network-ui/tower.app.js index 6f68282c20..200d5078ce 100644 --- a/awx/ui/client/src/network-ui/tower.app.js +++ b/awx/ui/client/src/network-ui/tower.app.js @@ -4,24 +4,5 @@ var angular = require('angular'); var tower = angular.module('tower', ['networkUI', 'ui.router']); -tower.config(function($stateProvider, $urlRouterProvider) { - - $urlRouterProvider.otherwise('/index'); - - $stateProvider - .state({ - name: 'index', - url: '/index', - template: '' - }); - - $stateProvider - .state({ - name: 'topology', - url: '/topology', - template: "" - }); -}); - exports.tower = tower; diff --git a/awx/ui/client/src/network-ui/view.fsm.js b/awx/ui/client/src/network-ui/view.fsm.js index 8ddda2bdb1..b88e073bdc 100644 --- a/awx/ui/client/src/network-ui/view.fsm.js +++ b/awx/ui/client/src/network-ui/view.fsm.js @@ -73,7 +73,9 @@ _Start.prototype.start.transitions = ['Ready']; _Scale.prototype.onMouseWheel = function (controller, msg_type, message) { var delta = message[1]; - var new_scale = Math.max(0.001, Math.min(100, (controller.scope.current_scale + delta / (100 / controller.scope.current_scale)))); + var new_scale = Math.max(controller.scope.MIN_ZOOM, + Math.min(controller.scope.MAX_ZOOM, + (controller.scope.current_scale + delta / (controller.scope.MAX_ZOOM / controller.scope.current_scale)))); var new_panX = controller.scope.mouseX - new_scale * ((controller.scope.mouseX - controller.scope.panX) / controller.scope.current_scale); var new_panY = controller.scope.mouseY - new_scale * ((controller.scope.mouseY - controller.scope.panY) / controller.scope.current_scale); controller.scope.updateScaledXY(); diff --git a/awx/urls.py b/awx/urls.py index 57a97fdae5..508ef3075f 100644 --- a/awx/urls.py +++ b/awx/urls.py @@ -16,6 +16,7 @@ urlpatterns = [ url(r'^sso/', include('awx.sso.urls', namespace='sso')), url(r'^sso/', include('social_django.urls', namespace='social')), url(r'^network_ui/', include('awx.network_ui.urls', namespace='network_uiui', app_name='network_ui')), + url(r'^network_ui_test/', include('awx.network_ui_test.urls', namespace='network_ui_test', app_name='network_ui_test')), url(r'^(?:api/)?400.html$', handle_400), url(r'^(?:api/)?403.html$', handle_403), url(r'^(?:api/)?404.html$', handle_404), diff --git a/requirements/requirements.in b/requirements/requirements.in index 63488af939..9711c1e28e 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -60,4 +60,3 @@ uwsgitop==0.10.0 xmltodict==0.11.0 pip==9.0.1 setuptools==36.0.1 -dpath==1.4.0 diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 06c4886d8b..fca17117f8 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -106,9 +106,7 @@ constantly==15.1.0 # via twisted cryptography==2.1.4 # via adal, azure-cosmosdb-table, azure-storage-common, pyopenssl, requests, secretstorage daphne==1.3.0 decorator==4.2.1 -dpath==1.4.0 debtcollector==1.15.0 # via oslo.config, oslo.utils, python-designateclient, python-keystoneclient, python-neutronclient -decorator==4.0.11 # via shade defusedxml==0.4.1 # via python-saml deprecation==2.0 # via openstacksdk django-auth-ldap==1.2.8