├── .dockerignore ├── .gitignore ├── .hound.yml ├── .jshintrc ├── .travis.yml ├── Dockerfile ├── Gruntfile.js ├── HWIMO-BUILD ├── HWIMO-TEST ├── LICENSE ├── README.md ├── alpha ├── build_deb.sh ├── build_deb.yml ├── build_docker.sh ├── build_docker.yml ├── post_build_deb.yml ├── post_unittest.yml ├── set_dependencies.sh ├── unittest.sh └── unittest.yml ├── api ├── rest │ ├── notification.js │ ├── profiles.js │ ├── tasks.js │ ├── templates.js │ ├── view │ │ └── view.js │ ├── workflowGraphs.js │ ├── workflowTasks.js │ └── workflows.js ├── rpc │ ├── index.js │ ├── profiles.js │ ├── tasks.js │ ├── templates.js │ ├── workflowGraphs.js │ ├── workflowTasks.js │ └── workflows.js └── swagger.json ├── app.js ├── data ├── profiles │ ├── boilerplate.ipxe │ ├── boot-livecd.ipxe │ ├── bootdisk-firstdisk.ipxe │ ├── defaultboot.ipxe │ ├── dell-bmp.sh │ ├── dell-onie.sh │ ├── dos.ipxe │ ├── end-ipxe.ipxe │ ├── install-centos.ipxe │ ├── install-coreos.ipxe │ ├── install-debian.ipxe │ ├── install-esx.ipxe │ ├── install-esx60.ipxe │ ├── install-photon-os.ipxe │ ├── install-suse.ipxe │ ├── ipxe-info.ipxe │ ├── linux-generic.ipxe │ ├── linux.ipxe │ ├── rancherOS.ipxe │ ├── redirect.ipxe │ ├── run-uefi.ipxe │ ├── taskrunner.py │ ├── windows.ipxe │ ├── zerotouch-configure.zt │ └── zerotouch-default.zt ├── templates │ ├── ansible-external-inventory.js │ ├── arista-boot-config │ ├── arista-catalog-config.py │ ├── arista-catalog-ip.py │ ├── arista-catalog-snmp-settings.py │ ├── arista-catalog-version.py │ ├── arista-deploy-startup-config.py │ ├── arista-startup-config │ ├── autounattend_windows_2012_r2_SMC_6028U-TR4+.xml │ ├── autounattend_windows_2012_r2_unknown.xml │ ├── autounattend_windows_2012_r2_vmware.xml │ ├── bootstrap.js │ ├── brocade-catalog-version.py │ ├── brocade-vdx-deploy-config.py │ ├── centos-ks │ ├── centos.rackhdcallback │ ├── cisco-catalog-config.py │ ├── cisco-catalog-snmp-settings.py │ ├── cisco-catalog-version.py │ ├── cisco-deploy-config-and-images.py │ ├── cloud-config.yaml │ ├── dell-catalog-sysinfo.sh │ ├── dell-switch-basic-config.exp │ ├── dell-switch-catalog.sh │ ├── dell-switch-nos-install.sh │ ├── dell-switch-onie-catalog.sh │ ├── esx-boot-cfg │ ├── esx-boot-cfg-http │ ├── esx-boot-cfg-tftp │ ├── esx-ks │ ├── esx-pxelinux-cfg │ ├── esx.rackhdcallback │ ├── get_driveid.js │ ├── get_smart.sh │ ├── ignition.json │ ├── install-coreos.sh │ ├── install-debian │ │ ├── debian-interfaces │ │ ├── debian-preseed │ │ ├── debian-sources │ │ ├── debian.rackhdcallback │ │ ├── post-install-debian.sh │ │ └── ubuntu-netplan-interfaces │ ├── install-photon │ │ ├── photon-os-ks │ │ ├── photon-os.rackhdcallback │ │ └── post-install-photon.sh │ ├── megaraid-config.sh │ ├── monorail-backup.sh │ ├── monorail-restore.sh │ ├── post-windows-install.ps1 │ ├── pxe-cloud-config.yml │ ├── remove_bmc_credentials.sh │ ├── renasar-ansible.pub │ ├── secure_erase.py │ ├── set_bmc_credentials.sh │ ├── set_interfaces.py │ ├── startup.ps1 │ ├── suse-autoinst.xml │ ├── unattend_server2012.xml │ └── winpe-kickstart.ps1 └── views │ ├── renderable.2.0.json │ ├── tasks.2.0.json │ ├── workflowGraphs.2.0.json │ ├── workflowTasks.2.0.json │ └── workflows.2.0.json ├── debian ├── changelog ├── compat ├── control ├── on-taskgraph.dirs ├── on-taskgraph.init ├── on-taskgraph.install ├── rules └── source │ └── format ├── extra ├── Vagrantfile ├── make-cicd.sh ├── make-clean.sh ├── make-deb.sh ├── make-npmdeps.sh ├── make-npmtest.sh ├── make-sysdeps.sh └── make-testcoveralls.sh ├── index.js ├── lib ├── completed-task-poller.js ├── graphs │ ├── add-hotspare-graph.js │ ├── add-volume-graph.js │ ├── arista-switch-discovery-graph.js │ ├── boot-livecd-graph.js │ ├── bootstrap-bmc-credentials-remove-graph.js │ ├── bootstrap-bmc-credentials-setup-graph.js │ ├── bootstrap-decommission-node-graph.js │ ├── bootstrap-decommission-node-test-graph.js │ ├── bootstrap-megaraid-config-graph.js │ ├── bootstrap-rancher-graph.js │ ├── bootstrap-ubuntu-graph.js │ ├── brocade-switch-discovery-graph.js │ ├── cisco-switch-discovery-graph.js │ ├── clear-sel-graph.js │ ├── create-emc-fabric-service-poller-graph.js │ ├── create-ipmi-obm-settings-graph.js │ ├── create-megaraid-graph.js │ ├── create-redfish-chassis-poller-graph.js │ ├── create-redfish-managers-poller-graph.js │ ├── create-redfish-systems-poller-graph.js │ ├── create-vbox-obm-settings-graph.js │ ├── delete-megaraid-graph.js │ ├── delete-volume-graph.js │ ├── dell-configure-idrac-graph.js │ ├── dell-configure-redfish-alerting-graph.js │ ├── dell-onie-switch-discovery-graph.js │ ├── dell-perccli-create-megaraid-graph.js │ ├── dell-perccli-megaraid-catalog-graph.js │ ├── dell-racadm-disable-vtx-graph.js │ ├── dell-racadm-enable-vtx-graph.js │ ├── dell-racadm-get-bios-graph.js │ ├── dell-racadm-get-config-catalog-graph.js │ ├── dell-racadm-get-firmware-list-graph.js │ ├── dell-racadm-reset-components-graph.js │ ├── dell-racadm-set-bios-graph.js │ ├── dell-racadm-update-firmware-graph.js │ ├── dell-switch-config-graph.js │ ├── dell-switch-discovery-graph.js │ ├── dell-switch-nos-install-graph.js │ ├── dell-wsman-add-hotspare-graph.js │ ├── dell-wsman-add-volume-graph.js │ ├── dell-wsman-config-services-graph.js │ ├── dell-wsman-configure-bios-graph.js │ ├── dell-wsman-configure-idrac-graph.js │ ├── dell-wsman-configure-redfish-alert-graph.js │ ├── dell-wsman-create-repo-graph.js │ ├── dell-wsman-delete-volume-graph.js │ ├── dell-wsman-discovery-graph.js │ ├── dell-wsman-download-catalog-graph.js │ ├── dell-wsman-export-scp-graph.js │ ├── dell-wsman-get-bios-graph.js │ ├── dell-wsman-get-inventory-graph.js │ ├── dell-wsman-get-systemcomponents-catalog-graph.js │ ├── dell-wsman-get-trap-config-graph.js │ ├── dell-wsman-import-scp-graph.js │ ├── dell-wsman-os-deployment-create-graph.js │ ├── dell-wsman-os-deployment-deploy-graph.js │ ├── dell-wsman-post-discovery-graph.js │ ├── dell-wsman-powerthermal-graph.js │ ├── dell-wsman-reset-components-graph.js │ ├── dell-wsman-simple-update-firmware-graph.js │ ├── dell-wsman-update-firmware-graph.js │ ├── dell-wsman-update-systemcomponents-graph.js │ ├── discovery-graph.js │ ├── discovery-mgmt-graph.js │ ├── discovery-mgmtsku-graph.js │ ├── discovery-redfish-system-graph.js │ ├── discovery-refresh-delayed-graph.js │ ├── discovery-refresh-immediate-graph.js │ ├── discovery-sku-graph.js │ ├── discovery-sku-orig-graph.js │ ├── docker-ps-graph.js │ ├── docker-restart-graph.js │ ├── docker-run-graph.js │ ├── docker-service-graph.js │ ├── docker-start-graph.js │ ├── docker-stop-graph.js │ ├── emc-compose-system-graph.js │ ├── emc-redfish-discovery-graph.js │ ├── esxcli-driver-version-commands-graph.js │ ├── examples │ │ ├── bootstrap-ubuntu-inline-graph-example.js │ │ ├── bootstrap-ubuntu-mocks-graph.js │ │ ├── bootstrap-ubuntu-overrides-graph-example.js │ │ ├── iPDU-firmware-update-by-sftp-graph.js │ │ ├── install-chef-graph.js │ │ └── install-chef-server-graph.js │ ├── flash-megaraid-controller-graph.js │ ├── flash-quanta-all-graph.js │ ├── flash-quanta-bios-graph.js │ ├── flash-quanta-bmc-graph.js │ ├── flash-quanta-megaraid-graph.js │ ├── generate-sku-graph.js │ ├── generate-tag-graph.js │ ├── get-switch-config-graph.js │ ├── get-switch-version-graph.js │ ├── install-centos-graph.js │ ├── install-coreos-graph.js │ ├── install-debian-graph.js │ ├── install-esx-graph.js │ ├── install-photon-graph.js │ ├── install-rhel-graph.js │ ├── install-suse-graph.js │ ├── install-ubuntu-graph.js │ ├── install-windows-server2012-graph.js │ ├── intel-flashupdt-catalog-graph.js │ ├── mc-reset-cold-graph.js │ ├── noop-graph.js │ ├── pdu-discovery-graph.js │ ├── persist-poller-data-graph.js │ ├── poller-service-graph.js │ ├── poweroff-graph.js │ ├── poweron-graph.js │ ├── quanta-storcli-megaraid-catalog-graph.js │ ├── rancher-catalog-graph.js │ ├── rancher-discovery-graph.js │ ├── reboot-graph.js │ ├── redfish-discovery-graph.js │ ├── redfish-discovery-ip-range-graph.js │ ├── redfish-reset-actions-graph.js │ ├── remove-bmc-credentials-graph.js │ ├── reset-graph.js │ ├── run-emc-diag-graph.js │ ├── run-rest-command-graph.js │ ├── secure-erase-drive-graph.js │ ├── set-bmc-credentials-graph.js │ ├── set-idrac-ipaddress-graph.js │ ├── shell-command-graph.js │ ├── soft-reset-graph.js │ ├── switch-active-discovery-sku-graph.js │ ├── switch-discovery-graph.js │ ├── switch-discovery-post-sku-hooks-graph.js │ ├── ucs-catalog-graph.js │ ├── ucs-discovery-graph.js │ ├── ucs-poller-graph.js │ ├── uefi-graph.js │ ├── update-switch-firmware-graph.js │ ├── winpe-graph.js │ ├── write-quanta-bios-nvram-graph.js │ ├── wsman-poller-service-graph.js │ └── zerotouch-veos-graph.js ├── lease-expiration-poller.js ├── loader.js ├── rx-mixins.js ├── service-graph.js ├── services │ ├── nodes-api-service.js │ ├── notification-api-service.js │ ├── profile-api-service.js │ ├── schema-api-service.js │ ├── swagger-api-service.js │ ├── task-api-service.js │ ├── templates-api-service.js │ └── workflow-api-service.js ├── task-graph-runner.js ├── task-runner.js └── task-scheduler.js ├── npm-shrinkwrap.json ├── package.json ├── scheduler.proto ├── scripts ├── index.html └── post-install.sh ├── spec ├── .jshintrc ├── api │ ├── rest │ │ ├── notification-spec.js │ │ ├── profile-spec.js │ │ ├── tasks-spec.js │ │ ├── templates-spec.js │ │ ├── workflowGraphs-spec.js │ │ ├── workflowTasks-spec.js │ │ └── workflows-spec.js │ └── rpc │ │ ├── index-spec.js │ │ ├── tasks-spec.js │ │ ├── workflowGraphs-spec.js │ │ ├── workflowTasks-spec.js │ │ └── workflows-spec.js ├── data │ └── get_driveid-spec.js ├── helper.js └── lib │ ├── completed-task-poller-spec.js │ ├── graph-library-spec.js │ ├── graphs │ ├── base-graph-spec.js │ ├── boot-livecd-graph-spec.js │ ├── bootstrap-bmc-credentials-remove-graph-spec.js │ ├── bootstrap-bmc-credentials-setup-graph-spec.js │ ├── bootstrap-decommission-node-graph-spec.js │ ├── bootstrap-megaraid-config-graph-spec.js │ ├── bootstrap-rancher-graph-spec.js │ ├── create-emc-fabric-service-poller-graph-spec.js │ ├── create-ipmi-obm-settings-graph-spec.js │ ├── create-megaraid-graph-spec.js │ ├── create-redfish-chassis-poller-graph-spec.js │ ├── create-redfish-systems-poller-graph-spec.js │ ├── create-vbox-obm-settings-graph-spec.js │ ├── delete-megaraid-graph-spec.js │ ├── dell-configure-idrac-graph-spec.js │ ├── dell-configure-redfish-alerting-graph.js │ ├── dell-perccli-megaraid-catalog-graph-spec.js │ ├── dell-racadm-disable-vtx-graph-spec.js │ ├── dell-racadm-enable-vtx-graph-spec.js │ ├── dell-racadm-get-bios-graph-spec.js │ ├── dell-racadm-get-config-catalog-graph-spec.js │ ├── dell-racadm-get-firmware-list-graph-spec.js │ ├── dell-racadm-reset-components-graph-spec.js │ ├── dell-racadm-set-bios-graph-spec.js │ ├── dell-racadm-update-firmware-graph-spec.js │ ├── dell-wsman-add-hotspare-graph-spec.js │ ├── dell-wsman-config-services-graph-spec.js │ ├── dell-wsman-configure-bios-graph-spec.js │ ├── dell-wsman-configure-idrac-graph-spec.js │ ├── dell-wsman-configure-redfish-alert-graph-spec.js │ ├── dell-wsman-discovery-graph-spec.js │ ├── dell-wsman-get-bios-graph-spec.js │ ├── dell-wsman-get-inventory-graph-spec.js │ ├── dell-wsman-os-deployment-create-graph-spec.js.js │ ├── dell-wsman-os-deployment-deploy-graph-spec.js.js │ ├── dell-wsman-reset-components-graph-spec.js │ ├── dell-wsman-update-firmware-graph-spec.js │ ├── discovery-graph-spec.js │ ├── discovery-mgmt-graph-spec.js │ ├── discovery-mgmtsku-graph-spec.js │ ├── emc-compose-system-graph-spec.js │ ├── emc-redfish-discovery-graph.js │ ├── esxcli-driver-verison-commands-graph-spec.js │ ├── generate-sku-graph.js │ ├── generate-tag.graph.js │ ├── get-switch-config-graph-spec.js │ ├── get-switch-version-graph-spec.js │ ├── iPDU-firmware-update-by-sftp-graph-spec.js │ ├── install-centos-graph-spec.js │ ├── install-chef-graph-spec.js │ ├── install-chef-server-graph-spec.js │ ├── install-coreos-graph-spec.js │ ├── install-debian-graph-spec.js │ ├── install-esx-graph-spec.js │ ├── install-photon-graph-spec.js │ ├── install-rhel-graph-spec.js │ ├── install-suse-graph-spec.js │ ├── install-ubuntu-graph-spec.js │ ├── install-windows-server2012-graph-spec.js │ ├── intel-flashupdt-catalog-graph-spec.js │ ├── mc-reset-cold-graph-spec.js │ ├── noop-graph-spec.js │ ├── pdu-discovery-graph-spec.js │ ├── poller-service-graph-spec.js │ ├── poweroff-graph-spec.js │ ├── poweron-graph-spec.js │ ├── quanta-storcli-megaraid-catalog-graph-spec.js │ ├── rancher-catalog-graph-spec.js │ ├── reboot-graph-spec.js │ ├── redfish-discovery-graph-spec.js │ ├── redfish-reset-actions-graph-spec.js │ ├── remove-bmc-credentials-graph-spec.js │ ├── run-emc-diag-graph-spec.js │ ├── secure-erase-drive-graph-spec.js │ ├── set-bmc-credentials-graph-spec.js │ ├── set-idrac-ipaddress-spec.js │ ├── shell-command-graph-spec.js │ ├── switch-discovery-graph-spec.js │ ├── ucs-catalog-graph-spec.js │ ├── ucs-discovery-graph-spec.js │ ├── ucs-poller-graph-spec.js │ ├── uefi-graph-spec.js │ └── update-switch-firmware-graph-spec.js │ ├── lease-expiration-poller-spec.js │ ├── loader-spec.js │ ├── rx-mixins-spec.js │ ├── service-graph-spec.js │ ├── services │ ├── nodes-api-service-spec.js │ ├── notification-api-service-spec.js │ ├── profile-api-service-spec.js │ ├── schema-api-service-spec.js │ ├── swagger-api-service-spec.js │ ├── task-api-service-spec.js │ ├── templates-api-service-spec.js │ └── workflow-api-service-spec.js │ ├── task-graph-runner-spec.js │ ├── task-runner-spec.js │ └── task-scheduler-spec.js ├── static └── schemas │ └── 2.0 │ ├── node.2.0.json │ └── workflowGraphs.2.0.json ├── test ├── README.md ├── __init__.py ├── requirements.txt ├── test_api_notification.py ├── test_api_profiles.py ├── test_api_tasks.py ├── test_api_templates.py ├── test_api_workflows.py └── test_common.py └── version /.dockerignore: -------------------------------------------------------------------------------- 1 | .bintray.json 2 | .dockerignore 3 | .git 4 | .gitignore 5 | .hound.yml 6 | .jshintrc 7 | .travis.yml 8 | debian/ 9 | extra/ 10 | Dockerfile 11 | Gruntfile.js 12 | HWIMO-* 13 | LICENSE 14 | node_modules/ 15 | prototype/ 16 | README.md 17 | spec/ 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | xunit.xml 16 | checkstyle-result.xml 17 | 18 | #jsdoc 19 | docs 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | # Waterline temp files for testing 24 | .tmp 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | #Config overrride 30 | overrides.json 31 | 32 | # Dependency directory 33 | # Commenting this out is preferred by some people, see 34 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 35 | node_modules 36 | 37 | # Users Environment Variables 38 | .lock-wscript 39 | 40 | # IDE 41 | .idea 42 | .vscode/ 43 | 44 | # HWIMO-BUILD artifacts 45 | on-taskgraph_*.dsc 46 | on-taskgraph_*.tar.[gx]z 47 | on-taskgraph_*.build 48 | on-taskgraph_*.changes 49 | on-taskgraph_*.deb 50 | packagebuild 51 | 52 | # Vagrant 53 | .vagrant/ 54 | 55 | #Python Testing 56 | *.pyc 57 | .venv/ 58 | -------------------------------------------------------------------------------- /.hound.yml: -------------------------------------------------------------------------------- 1 | jshint: 2 | config_file: .jshintrc 3 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "maxerr" : 50, 3 | 4 | "bitwise" : true, 5 | "camelcase" : false, 6 | "curly" : true, 7 | "es3" : false, 8 | "eqeqeq" : true, 9 | "forin" : true, 10 | "freeze" : true, 11 | "immed" : false, 12 | "indent" : false, 13 | "latedef" : "nofunc", 14 | "maxcomplexity" : false, 15 | "maxdepth" : false, 16 | "maxlen" : false, 17 | "maxparams" : false, 18 | "maxstatements" : false, 19 | "newcap" : false, 20 | "noarg" : true, 21 | "noempty" : false, 22 | "nonbsp" : true, 23 | "nonew" : true, 24 | "plusplus" : true, 25 | "quotmark" : false, 26 | "strict" : true, 27 | "trailing" : true, 28 | "undef" : true, 29 | "unused" : true, 30 | 31 | "asi" : false, 32 | "boss" : false, 33 | "debug" : false, 34 | "eqnull" : false, 35 | "es5" : false, 36 | "esnext" : true, 37 | "moz" : false, 38 | "evil" : false, 39 | "expr" : true, 40 | "funcscope" : false, 41 | "iterator" : false, 42 | "lastsemic" : false, 43 | "laxbreak" : true, 44 | "laxcomma" : true, 45 | "loopfunc" : false, 46 | "multistr" : true, 47 | "noyield" : false, 48 | "notypeof" : false, 49 | "proto" : false, 50 | "scripturl" : false, 51 | "shadow" : false, 52 | "sub" : true, 53 | "supernew" : false, 54 | "validthis" : false, 55 | 56 | "node": true, 57 | "mocha": true, 58 | 59 | "predef" : [ 60 | "_", 61 | "chai", 62 | "expect", 63 | "helper", 64 | "Promise", 65 | "request", 66 | "should", 67 | "sinon", 68 | "sinonPromise" 69 | ] 70 | } 71 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2015-2018, Dell EMC, Inc. 2 | 3 | language: node_js 4 | 5 | node_js: 6 | - "4" 7 | - "6" 8 | - "8" 9 | 10 | addons: 11 | apt: 12 | packages: 13 | - dh-make 14 | - devscripts 15 | - debhelper 16 | - git 17 | 18 | services: 19 | - mongodb 20 | - rabbitmq 21 | 22 | before_install: 23 | - npm i -g npm@5.6.0 24 | 25 | after_success: 26 | - ./extra/make-testcoveralls.sh 27 | - ./extra/make-deb.sh 28 | 29 | 30 | notifications: 31 | slack: 32 | rooms: 33 | - secure: "TALStNEAK1mifEqsaiFKLC3V9PX2Ia3LqsWqWFIw6QXfFhJGUoNYa4KrJ4dbM1DS0tXwv3sMOeco6l2hhO73ZRU9jPzonPgwL+YT52KvDUs8wSNih0zNp0x3PRduJykJ1faYLOQr1zb7+Ajj3JJzqUpQon/arnRBDcHCQI3k2ElUqsZXlhRdo2JwitNCYD0N3SaLuAVFpLIzRgUjg/Rsp38rilvI/G8iJbmqz/+SukK5bx7Gq4DiDI6gN1cyBbWJ7Onyfrvm09LlbIvQDWYN87uU5iWQCfnf4Dh7x1GVfnMUNuTsBjE4mW6HJffHZZmVmkScJrRLUdhs1iIgkOTebB/d2i2m5eLGQ7/9Z/5uZjLoAN3oq/PCepiQBrXuDxlNJyKKrKQnNJmEFzpvrAJgvpC44SYnGs0+vlb37l14Ivjbmv05Xz5WOnS8EBRD5xeMUi3RWVVoj7sN8w3M36PR4s/iNLuvIqohmJqpPrE1aPhLPI+MVwUboIAMvCRe0Hkb1imXElTDi8i/+eLNxc3GSoxvtrVRIkPHzroDN2mMNR7PACWICD3fjxD/dieRwufoenvTEEp/B2c13C0EFQimRSEigk+iDcSNrUrfOhjTjztbHF6Seqwz3ZzTwuNlSA8PaK8yb83Q4ANXXa8bgKQQEj1rYEz+mJk0sjRC4hi8Q+I=" 34 | on_success: never 35 | on_failure: always 36 | on_start: never 37 | on_pull_requests: false 38 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2016, EMC, Inc. 2 | 3 | ARG repo=rackhd 4 | ARG tag=devel 5 | 6 | FROM ${repo}/on-tasks:${tag} 7 | ARG SNMP_VERSION=snmp-mibs-downloader_1.1_all.deb 8 | 9 | COPY . /RackHD/on-taskgraph/ 10 | WORKDIR /RackHD/on-taskgraph 11 | 12 | RUN mkdir -p ./node_modules \ 13 | && npm install --production \ 14 | && rm -r ./node_modules/on-tasks ./node_modules/on-core ./node_modules/di \ 15 | && ln -s /RackHD/on-tasks ./node_modules/on-tasks \ 16 | && ln -s /RackHD/on-core ./node_modules/on-core \ 17 | && ln -s /RackHD/on-core/node_modules/di ./node_modules/di \ 18 | && apt-get install -y wget smistrip libsnmp-dev snmp \ 19 | && wget http://http.us.debian.org/debian/pool/non-free/s/snmp-mibs-downloader/$SNMP_VERSION \ 20 | && dpkg -i $SNMP_VERSION \ 21 | && download-mibs \ 22 | && rm -rf /var/lib/apt/lists/* 23 | 24 | VOLUME /var/lib/dhcp 25 | CMD [ "node", "/RackHD/on-taskgraph/index.js" ] 26 | -------------------------------------------------------------------------------- /HWIMO-BUILD: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2015, 2016, EMC, Inc. 4 | 5 | # debian packages expected... 6 | # apt-get install git pbuilder dh-make ubuntu-dev-tools devscripts 7 | # apt-get install nodejs nodejs-legacy npm 8 | 9 | # Input (environment variables): 10 | # * PKG_VERSION: The version of debian package, 11 | # such as: 1.3.1 (official release); 12 | # 13 | 14 | set -e 15 | set -x 16 | 17 | rm -rf packagebuild 18 | rsync -L -r . packagebuild 19 | pushd packagebuild 20 | cp ../package.json . 21 | 22 | npm install --production --cache=`pwd` 23 | git log -n 1 --pretty=format:%h.%ai.%s > commitstring.txt 24 | 25 | export DEBEMAIL="hwimo robots " 26 | export DEBFULLNAME="The HWIMO Robots" 27 | 28 | # If PKG_VERSION is not set as an environment variable 29 | # compute it as below: 30 | if [ -z "$PKG_VERSION" ];then 31 | GIT_COMMIT_DATE=$(git show -s --pretty="format:%ci") 32 | DATE_STRING=$(date -d "$GIT_COMMIT_DATE" -u +"%Y%m%dUTC") 33 | 34 | GIT_COMMIT_HASH=$(git show -s --pretty="format:%h") 35 | 36 | CHANGELOG_VERSION=$(dpkg-parsechangelog --show-field Version) 37 | 38 | PKG_VERSION="$CHANGELOG_VERSION-$DATE_STRING-$GIT_COMMIT_HASH" 39 | fi 40 | 41 | if [[ $PKG_VERSION =~ ^([0-9]+\.){2}[0-9]+$ ]];then 42 | # If version looks like 1.2.3, the build is official build. 43 | # So update the distribution of changelog from "UNRELEASED" to "unstable" 44 | dch -r "" 45 | else 46 | COMMIT_STR=`git log -n 1 --oneline` 47 | dch -v $PKG_VERSION -u low $COMMIT_STR -b -m 48 | fi 49 | 50 | debuild --no-lintian --no-tgz-check -us -uc 51 | popd 52 | -------------------------------------------------------------------------------- /HWIMO-TEST: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2015, EMC, Inc. 4 | 5 | set -e 6 | set -x 7 | 8 | rm -rf node_modules 9 | npm install 10 | 11 | # Checks the code against the jshint options 12 | ./node_modules/.bin/jshint -c .jshintrc --reporter=checkstyle lib index.js > checkstyle-result.xml || true 13 | ./node_modules/.bin/jshint -c .jshintrc lib index.js || true 14 | 15 | 16 | # Runs the mocha tests and reports the code coerage. 17 | ./node_modules/.bin/istanbul cover -x "**/spec/**" ./node_modules/.bin/_mocha -- $(find spec -name '*-spec.js') --timeout 10000 -R xunit-file --require spec/helper.js 18 | ./node_modules/.bin/istanbul report cobertura 19 | 20 | -------------------------------------------------------------------------------- /alpha/build_deb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | 3 | ./alpha/set_dependencies.sh 4 | 5 | ./HWIMO-BUILD 6 | pwd 7 | ls -l 8 | cp *.deb ../build 9 | -------------------------------------------------------------------------------- /alpha/build_deb.yml: -------------------------------------------------------------------------------- 1 | --- 2 | platform: linux 3 | 4 | inputs: 5 | - name: on-taskgraph 6 | - name: on-core 7 | - name: on-tasks 8 | - name: manifest-artifactory 9 | outputs: 10 | - name: build 11 | 12 | run: 13 | path: "alpha/build_deb.sh" 14 | dir: "on-taskgraph" 15 | -------------------------------------------------------------------------------- /alpha/build_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | 3 | if [ "${VERIFY_DEP}" == "true" ]; then 4 | COMMIT=$(cat $(ls ../manifest-artifactory/manifest*.json) | jq -r .ontaskgraph.commit) 5 | git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/* 6 | git fetch 7 | git checkout $COMMIT 8 | export ONTASKS_TAG=$(<../on-tasks-docker/digest) 9 | sed -i "s/^FROM.*/FROM $REGISTRY\/${REPO_OWNER}\/on-tasks@${ONTASKS_TAG}/" ./Dockerfile 10 | fi 11 | cat Dockerfile 12 | cp -rf * ../build 13 | -------------------------------------------------------------------------------- /alpha/build_docker.yml: -------------------------------------------------------------------------------- 1 | --- 2 | platform: linux 3 | 4 | inputs: 5 | - name: on-taskgraph 6 | - name: manifest-artifactory 7 | - name: on-tasks-docker 8 | outputs: 9 | - name: build 10 | 11 | run: 12 | path: "alpha/build_docker.sh" 13 | dir: "on-taskgraph" 14 | -------------------------------------------------------------------------------- /alpha/post_build_deb.yml: -------------------------------------------------------------------------------- 1 | --- 2 | platform: linux 3 | 4 | inputs: 5 | - name: on-taskgraph 6 | outputs: 7 | - name: build 8 | 9 | run: 10 | path: "alpha/build_deb.sh" 11 | dir: "on-taskgraph" 12 | -------------------------------------------------------------------------------- /alpha/post_unittest.yml: -------------------------------------------------------------------------------- 1 | --- 2 | platform: linux 3 | 4 | inputs: 5 | - name: on-taskgraph 6 | run: 7 | path: "alpha/unittest.sh" 8 | dir: "on-taskgraph" 9 | -------------------------------------------------------------------------------- /alpha/set_dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | 3 | if [ "${VERIFY_DEP}" == "true" ]; then 4 | COMMIT=$(cat $(ls ../manifest-artifactory/manifest*.json) | jq -r .ontaskgraph.commit) 5 | git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/* 6 | git fetch 7 | git checkout $COMMIT 8 | pushd ../on-tasks 9 | COMMIT=$(cat $(ls ../manifest-artifactory/manifest*.json) | jq -r .ontasks.commit) 10 | git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/* 11 | git fetch 12 | git checkout $COMMIT 13 | rm -rf .git 14 | popd 15 | pushd ../on-core 16 | COMMIT=$(cat $(ls ../manifest-artifactory/manifest*.json) | jq -r .oncore.commit) 17 | git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/* 18 | git fetch 19 | git checkout $COMMIT 20 | rm -rf .git 21 | popd 22 | mkdir -p node_modules 23 | 24 | # Map on-tasks 25 | pushd ../ 26 | mkdir -p on-tasks/node_modules 27 | ln -s $(pwd)/on-tasks $(pwd)/on-taskgraph/node_modules/on-tasks 28 | ln -s $(pwd)/on-core $(pwd)/on-tasks/node_modules/on-core 29 | popd 30 | # Map on-core 31 | pushd ../ 32 | ln -s $(pwd)/on-core $(pwd)/on-taskgraph/node_modules/on-core 33 | popd 34 | 35 | # Run npm install for on-tasks and on-core 36 | pushd ../on-tasks 37 | npm install 38 | popd 39 | pushd ../on-core 40 | npm install 41 | popd 42 | fi 43 | -------------------------------------------------------------------------------- /alpha/unittest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -ex 2 | 3 | ./alpha/set_dependencies.sh 4 | ps -aux 5 | service rabbitmq-server start 6 | /usr/bin/mongod --fork --logpath /var/log/mongodb/monngod.log 7 | npm install 8 | ./node_modules/.bin/_mocha $(find spec -name '*-spec.js') --timeout 10000 --require spec/helper.js 9 | -------------------------------------------------------------------------------- /alpha/unittest.yml: -------------------------------------------------------------------------------- 1 | --- 2 | platform: linux 3 | 4 | image_resource: 5 | type: docker-image 6 | source: 7 | insecure_registries: 8 | - http://10.240.16.225:5000 9 | repository: 10.240.16.225:5000/geoff/unittest 10 | 11 | inputs: 12 | - name: on-tasks 13 | - name: on-core 14 | - name: manifest-artifactory 15 | - name: on-taskgraph 16 | run: 17 | path: "alpha/unittest.sh" 18 | dir: "on-taskgraph" 19 | -------------------------------------------------------------------------------- /api/rest/notification.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC Inc. 2 | 3 | 'use strict'; 4 | 5 | var injector = require('../../index.js').injector; 6 | var controller = injector.get('Http.Services.Swagger').controller; 7 | var notificationApiService = injector.get('Http.Services.Api.Notification'); 8 | var _ = injector.get('_'); // jshint ignore:line 9 | 10 | var notificationPost = controller({success: 201}, function(req, res) { 11 | var message = _.defaults(req.swagger.query || {}, req.query || {}, req.body || {}); 12 | message.nodeIp = res.locals.ipAddress; 13 | return notificationApiService.postNotification(message); 14 | }); 15 | 16 | /** 17 | * @api {post} /api/2.0/notification/progress 18 | * @apiDescription deeply customized notification for task progress 19 | * :taskId: active (OS installation) taskId 20 | * :maximum: the maximum progress value 21 | * :value: the current progress value 22 | * @apiName notification post 23 | * @apiGroup notification 24 | */ 25 | var notificationProgressPost = controller(function(req, res){ 26 | var message = _.defaults(req.swagger.query || {}, req.query || {}, req.body || {}); 27 | return notificationApiService.publishTaskProgress(message) 28 | .then(function(){ 29 | //Send any feedback is OK, just to cheat ipxe engine 30 | res.send('Notification response, no file will be sent'); 31 | }); 32 | }); 33 | 34 | module.exports = { 35 | notificationPost: notificationPost, 36 | notificationProgressPost: notificationProgressPost 37 | }; 38 | -------------------------------------------------------------------------------- /api/rest/tasks.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved 2 | 'use strict'; 3 | 4 | var injector = require('../../index.js').injector; 5 | var controller = injector.get('Http.Services.Swagger').controller; 6 | var tasksApiService = injector.get('Http.Services.Api.Tasks'); 7 | var _ = injector.get('_'); // jshint ignore:line 8 | var Errors = injector.get('Errors'); 9 | var Promise = injector.get('Promise'); 10 | 11 | var getBootstrap = controller( function (req, res) { 12 | return Promise.try(function() { 13 | return tasksApiService.getBootstrap(req, res, req.swagger.params.macAddress.value); 14 | }); 15 | }); 16 | 17 | var getTasksById = controller( function (req){ 18 | return Promise.try(function() { 19 | return tasksApiService.getTasksById(req.swagger.params.identifier.value); 20 | }) 21 | .catch(function () { 22 | throw new Errors.NotFoundError('Not Found'); 23 | }); 24 | }); 25 | 26 | var postTaskById = controller( {success: 201}, function (req){ 27 | return Promise.try(function() { 28 | var config = _.defaults(req.swagger.query || {}, req.body || {}); 29 | return tasksApiService.postTasksById(req.swagger.params.identifier.value, config); 30 | }); 31 | }); 32 | 33 | module.exports = { 34 | getBootstrap: getBootstrap, 35 | getTasksById: getTasksById, 36 | postTaskById: postTaskById 37 | }; -------------------------------------------------------------------------------- /api/rest/view/view.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved 2 | 'use strict'; 3 | 4 | var di = require('di'); 5 | 6 | module.exports = viewServiceFactory; 7 | 8 | di.annotate(viewServiceFactory, new di.Provide('Views')); 9 | di.annotate(viewServiceFactory, new di.Inject( 10 | 'Constants', 11 | 'DbRenderableContent', 12 | 'Util' 13 | )); 14 | 15 | function viewServiceFactory(Constants, DbRenderable, Util) { 16 | Util.inherits(ViewService, DbRenderable); 17 | 18 | function ViewService() { 19 | DbRenderable.call(this, { 20 | directory: '../../data/views', 21 | collectionName: 'views' 22 | }); 23 | } 24 | 25 | return new ViewService(); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /api/rpc/profiles.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved 2 | 'use strict'; 3 | 4 | var injector = require('../../index.js').injector; 5 | var profiles = injector.get('Profiles'); 6 | 7 | var profilesGetLibByName = function (call) { 8 | return profiles.get(call.request.name,call.request, call.request.scope) 9 | .then(function(profiles) { 10 | return profiles.contents; 11 | }); 12 | }; 13 | 14 | var profilesGetMetadata = function () { 15 | return profiles.getAll(); 16 | }; 17 | 18 | var profilesGetMetadataByName = function (call) { 19 | return profiles.getName(call.request.name, call.request.scope); 20 | }; 21 | 22 | var profilesPutLibByName = function (call) { 23 | return profiles.put(call.request.name, call.request, call.request.scope); 24 | }; 25 | 26 | module.exports = { 27 | profilesGetLibByName:profilesGetLibByName, 28 | profilesGetMetadata:profilesGetMetadata, 29 | profilesGetMetadataByName:profilesGetMetadataByName, 30 | profilesPutLibByName:profilesPutLibByName 31 | }; -------------------------------------------------------------------------------- /api/rpc/tasks.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | var injector = require('../../index.js').injector; 6 | var tasksApiService = injector.get('Http.Services.Api.Tasks'); 7 | var _ = injector.get('_'); // jshint ignore:line 8 | var Errors = injector.get('Errors'); 9 | var Promise = injector.get('Promise'); 10 | 11 | var getBootstrap = function(call) { 12 | return Promise.try(function() { 13 | var scope = call.request.scope; 14 | var ipAddress = call.request.ipAddress; 15 | var macAddress = call.request.macAddress; 16 | return tasksApiService.getBootstrap(scope, ipAddress, macAddress); 17 | }); 18 | }; 19 | 20 | var getTasksById = function(call) { 21 | return Promise.try(function() { 22 | return tasksApiService.activeTaskExists(call.request.identifier); 23 | }) 24 | .catch(function (err) { 25 | if (err.name === 'NoActiveTaskError') { 26 | return {}; 27 | } 28 | // throw a NotFoundError 29 | throw new Errors.NotFoundError('Not Found'); 30 | }).then(function (activeTask) { 31 | if (activeTask !== {}) { 32 | return tasksApiService.getTasksById(call.request.identifier); 33 | } 34 | return {}; 35 | }); 36 | }; 37 | 38 | var postTaskById = function(call) { 39 | return Promise.try(function() { 40 | return tasksApiService.postTasksById(call.request.identifier, 41 | JSON.parse(call.request.config)); 42 | }); 43 | }; 44 | 45 | module.exports = { 46 | getBootstrap: getBootstrap, 47 | getTasksById: getTasksById, 48 | postTaskById: postTaskById 49 | }; 50 | -------------------------------------------------------------------------------- /api/rpc/templates.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved 2 | 'use strict'; 3 | 4 | var injector = require('../../index.js').injector; 5 | var templatesApiService = injector.get('Http.Services.Api.Templates'); 6 | var Promise = injector.get('Promise'); 7 | var templates = injector.get('Templates'); 8 | 9 | var templatesLibGet = function (call) { 10 | return Promise.try(function() { 11 | return templatesApiService.templatesLibGet(call.request.name, call.request.scope); 12 | }); 13 | }; 14 | 15 | var templatesLibPut = function (call) { 16 | return Promise.try(function() { 17 | return templatesApiService.templatesLibPut(call.request.name,call.request, 18 | call.request.scope); 19 | }); 20 | }; 21 | 22 | var templatesMetaGet = function () { 23 | return Promise.try(function() { 24 | return templatesApiService.templatesMetaGet(); 25 | }); 26 | }; 27 | 28 | var templatesMetaGetByName = function (call) { 29 | return Promise.try(function() { 30 | return templatesApiService.templatesMetaGetByName(call.request.name, call.request.scope); 31 | }); 32 | }; 33 | 34 | var templatesLibDelete = function (call) { 35 | return templates.unlink(call.request.name, call.request.scope); 36 | }; 37 | 38 | module.exports = { 39 | templatesLibGet:templatesLibGet, 40 | templatesLibPut:templatesLibPut, 41 | templatesMetaGet: templatesMetaGet, 42 | templatesMetaGetByName: templatesMetaGetByName, 43 | templatesLibDelete: templatesLibDelete 44 | }; 45 | -------------------------------------------------------------------------------- /api/rpc/workflowGraphs.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved 2 | 3 | 'use strict'; 4 | 5 | var injector = require('../../index.js').injector; 6 | var workflowApiService = injector.get('Http.Services.Api.Workflows'); 7 | var _ = injector.get('_'); // jshint ignore:line 8 | var Promise = injector.get('Promise'); 9 | 10 | var workflowsGetGraphs = function() { 11 | return workflowApiService.getGraphDefinitions(); 12 | }; 13 | 14 | var workflowsGetGraphsByName = function(call) { 15 | return Promise.try(function() { 16 | return workflowApiService.getGraphDefinitions(call.request.injectableName); 17 | }); 18 | }; 19 | 20 | var workflowsPutGraphs = function(call) { 21 | return Promise.try(function() { 22 | return workflowApiService.defineTaskGraph(JSON.parse(call.request.body)); 23 | }); 24 | }; 25 | 26 | var workflowsDeleteGraphsByName = function(call) { 27 | return workflowApiService.destroyGraphDefinition(call.request.injectableName); 28 | }; 29 | 30 | module.exports = { 31 | workflowsGetGraphs: workflowsGetGraphs, 32 | workflowsGetGraphsByName: workflowsGetGraphsByName, 33 | workflowsPutGraphs: workflowsPutGraphs, 34 | workflowsDeleteGraphsByName: workflowsDeleteGraphsByName 35 | }; 36 | -------------------------------------------------------------------------------- /api/rpc/workflowTasks.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved 2 | 3 | 'use strict'; 4 | 5 | var injector = require('../../index.js').injector; 6 | var workflowApiService = injector.get('Http.Services.Api.Workflows'); 7 | var _ = injector.get('_'); // jshint ignore:line 8 | var Promise = injector.get('Promise'); 9 | 10 | var workflowsPutTask = function(call) { 11 | return Promise.try(function() { 12 | return workflowApiService.defineTask(JSON.parse(call.request.body)); 13 | }); 14 | }; 15 | 16 | var workflowsGetAllTasks = function() { 17 | return workflowApiService.getTaskDefinitions(); 18 | }; 19 | 20 | var workflowsGetTasksByName = function(call) { 21 | return Promise.try(function() { 22 | return workflowApiService.getWorkflowsTasksByName(call.request.injectableName); 23 | }); 24 | }; 25 | 26 | var workflowsDeleteTasksByName = function(call) { 27 | return workflowApiService.deleteWorkflowsTasksByName(call.request.injectableName); 28 | }; 29 | 30 | module.exports = { 31 | workflowsPutTask: workflowsPutTask, 32 | workflowsGetAllTasks: workflowsGetAllTasks, 33 | workflowsGetTasksByName: workflowsGetTasksByName, 34 | workflowsDeleteTasksByName: workflowsDeleteTasksByName 35 | }; 36 | -------------------------------------------------------------------------------- /data/profiles/boilerplate.ipxe: -------------------------------------------------------------------------------- 1 | #!ipxe 2 | set user-class MonoRail 3 | 4 | echo 5 | echo MonoRail Boilerplate iPXE... 6 | set syslog <%=server%> 7 | 8 | # Interface that requested an IP originally. 9 | set interface <%=macaddress%> 10 | 11 | # If macaddress is null, don't need to find boot interface 12 | isset ${interface} || goto ifConfigured 13 | 14 | # Reboot Interval 15 | set rebootInterval:int8 5 16 | 17 | # Interface Search Index. 18 | set ifIndex:int8 0 19 | set ifIndexMax:int8 10 20 | 21 | # Interface Boot Retries 22 | set ifBootAttempt:int8 0 23 | set ifBootAttemptMax:int8 5 24 | 25 | # Close all the interfaces to begin with. 26 | ifclose 27 | 28 | # Iterate the interfaces to find a match by MAC Address. 29 | :ifFind 30 | iseq ${ifIndex} ${ifIndexMax} && goto ifFindFailure || goto ifFindContinue 31 | :ifFindContinue 32 | iseq ${interface} ${net${ifIndex}/mac} && goto ifBoot || inc ifIndex && goto ifFind 33 | 34 | # Boot the found interface. 35 | :ifBoot 36 | iseq ${ifBootAttempt} ${ifBootAttemptMax} && goto ifBootFailure || goto ifBootContinue 37 | :ifBootContinue 38 | ifopen net${ifIndex} 39 | ifconf net${ifIndex} && goto ifConfigured || inc ifBootAttempt && goto ifBoot 40 | 41 | # Find Interface Failure 42 | :ifFindFailure 43 | echo Unable to locate interface ${interface}, restarting in ${rebootInterval} seconds. 44 | sleep ${rebootInterval} 45 | reboot 46 | 47 | # Boot Interface Failure 48 | :ifBootFailure 49 | echo Unable to boot interface ${interface}, restarting in ${rebootInterval} seconds. 50 | sleep ${rebootInterval} 51 | reboot 52 | 53 | # Configure the booted interface 54 | :ifConfigured 55 | route 56 | echo MonoRail Boilerplate iPXE Completed. 57 | echo 58 | -------------------------------------------------------------------------------- /data/profiles/boot-livecd.ipxe: -------------------------------------------------------------------------------- 1 | kernel <%=repo%>/vmlinuz0 2 | initrd <%=repo%>/initrd.img 3 | imgargs vmlinuz0 rootflags=loop initrd=initrd.img root=live:/<%=version%>.iso rootfstype=iso9660 !text !lang !ksdevice 4 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 5 | -------------------------------------------------------------------------------- /data/profiles/bootdisk-firstdisk.ipxe: -------------------------------------------------------------------------------- 1 | echo Forcing boot to first disk 2 | sanboot --no-describe --drive 0x80 3 | -------------------------------------------------------------------------------- /data/profiles/defaultboot.ipxe: -------------------------------------------------------------------------------- 1 | kernel <%=url%>/<%=kernel%> 2 | initrd <%=url%>/<%=initrd%> 3 | imgargs <%=kernel%> <%=bootargs%> 4 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 5 | -------------------------------------------------------------------------------- /data/profiles/dos.ipxe: -------------------------------------------------------------------------------- 1 | initrd http://<%=server%>:<%=port%>/<%=image%> 2 | chain http://<%=server%>:<%=port%>/common/memdisk floppy <%=kargs%> 3 | -------------------------------------------------------------------------------- /data/profiles/end-ipxe.ipxe: -------------------------------------------------------------------------------- 1 | echo Exiting iPXE, falling through to BIOS boot order 2 | -------------------------------------------------------------------------------- /data/profiles/install-centos.ipxe: -------------------------------------------------------------------------------- 1 | echo Starting CentOS/RHEL <%=version%> installer for ${hostidentifier} 2 | 3 | # The progress notification is just something nice-to-have, so progress notification failure should 4 | # never impact the normal installation process 5 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 6 | # since there is no curl like http client in ipxe, so use imgfetch instead 7 | # note: the progress milestones uri must be wrapped in unescaped format, otherwise imgfetch will fail 8 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 9 | imgfree fakedimage || 10 | <% } %> 11 | 12 | set base-url <%=repo%>/images/pxeboot 13 | set params initrd=initrd.img ks=<%=installScriptUri%> hostname=<%=hostname%> ksdevice=bootif BOOTIF=01-${netX/mac} console=<%=comport%>,115200n8 console=tty0 14 | kernel ${base-url}/vmlinuz repo=<%=repo%> ${params} 15 | initrd ${base-url}/initrd.img 16 | 17 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 18 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 19 | imgfree fakedimage || 20 | <% } %> 21 | 22 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 23 | 24 | -------------------------------------------------------------------------------- /data/profiles/install-coreos.ipxe: -------------------------------------------------------------------------------- 1 | # Copyright 2017, Dell EMC, Inc. 2 | echo Starting CoreOS Stable installer 3 | 4 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 5 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 6 | imgfree fakedimage || 7 | <% } %> 8 | 9 | set base-url <%=repo%> 10 | # coreos.autologin <-- enable as kernel param to autologin for easier debugging 11 | # reference: https://coreos.com/os/docs/latest/booting-with-ipxe.html 12 | # JUST BOOT AND RUN COREOS 13 | # kernel ${base-url}/<%=version%>/coreos_production_pxe.vmlinuz coreos.autologin cloud-config-url=http://<%=server%>:<%=port%>/api/current/templates/pxe-cloud-config.yml?nodeId=<%=nodeId%> 14 | # 15 | kernel ${base-url}/<%=version%>/coreos_production_pxe.vmlinuz initrd=coreos_production_pxe_image.cpio.gz console=tty0 console=<%=comport%>,115200n8 coreos.autologin cloud-config-url=<%=installScriptUri%> 16 | initrd ${base-url}/<%=version%>/coreos_production_pxe_image.cpio.gz 17 | 18 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 19 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 20 | imgfree fakedimage || 21 | <% } %> 22 | 23 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 24 | -------------------------------------------------------------------------------- /data/profiles/install-debian.ipxe: -------------------------------------------------------------------------------- 1 | # Copyright 2017, Dell EMC, Inc. 2 | echo Starting Debian/Ubuntu x64 installer for ${hostidentifier} 3 | 4 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 5 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 6 | imgfree fakedimage || 7 | <% } %> 8 | 9 | set base-url <%=repo%>/<%=baseUrl%> 10 | kernel ${base-url}/linux 11 | initrd ${base-url}/initrd.gz 12 | imgargs linux initrd=initrd.gz auto=true nomodeset fb=false DEBIAN_FRONTEND=noninteractive url=<%=installScriptUri%> hostname=<%=hostname%> log_host=<%=server%> BOOTIF=01-<%=macaddress%> interface=<%=interface%> console=<%=comport%>,115200n8 console=tty0 raid=noautodetect <%=kargs%> 13 | 14 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 15 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 16 | imgfree fakedimage || 17 | <% } %> 18 | 19 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 20 | 21 | -------------------------------------------------------------------------------- /data/profiles/install-esx.ipxe: -------------------------------------------------------------------------------- 1 | # The progress notification is just something nice-to-have, so progress notification failure should 2 | # never impact the normal installation process 3 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 4 | # since there is no curl like http client in ipxe, so use imgfetch instead 5 | # note: the progress milestones uri must be wrapped in unescaped format, otherwise imgfetch will fail 6 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 7 | imgfree fakedimage || 8 | <% } %> 9 | 10 | iseq ${platform} efi && goto is_efi || goto not_efi 11 | 12 | :not_efi 13 | kernel <%=repo%>/<%=mbootFile%> -c <%=esxBootConfigTemplateUri%> BOOTIF=01-${netX/mac} 14 | goto boot_img 15 | 16 | :is_efi 17 | kernel <%=repo%>/efi/boot/bootx64.efi -c <%=esxBootConfigTemplateUri%> 18 | goto boot_img 19 | 20 | :boot_img 21 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 22 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 23 | imgfree fakedimage || 24 | <% } %> 25 | 26 | boot 27 | -------------------------------------------------------------------------------- /data/profiles/install-esx60.ipxe: -------------------------------------------------------------------------------- 1 | set 209:string http://<%=server%>:<%=port%>/api/current/templates/esx60-pxelinux-cfg?nodeId=<%=nodeId%> 2 | chain tftp://<%=server%>/undionly.kkpxe 3 | -------------------------------------------------------------------------------- /data/profiles/install-photon-os.ipxe: -------------------------------------------------------------------------------- 1 | echo Starting Photon OS <%=version%> installer for ${hostidentifier} 2 | 3 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 4 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 5 | imgfree fakedimage || 6 | <% } %> 7 | 8 | set base-url <%=repo%>/isolinux 9 | set params initrd=initrd.img ks=<%=installScriptUri%> hostname=<%=hostname%> ksdevice=bootif BOOTIF=01-${netX/mac} console=<%=comport%>,115200n8 console=tty0 10 | kernel ${base-url}/vmlinuz repo=<%=repo%>/RPMS/ ${params} 11 | initrd ${base-url}/initrd.img 12 | 13 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 14 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 15 | imgfree fakedimage || 16 | <% } %> 17 | 18 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 19 | 20 | -------------------------------------------------------------------------------- /data/profiles/install-suse.ipxe: -------------------------------------------------------------------------------- 1 | echo Starting SUSE <%=version%> installer > 2 | 3 | # The progress notification is just something nice-to-have, so progress notification failure should 4 | # never impact the normal installation process 5 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 6 | # since there is no curl like http client in ipxe, so use imgfetch instead 7 | # note: the progress milestones uri must be wrapped in unescaped format, otherwise imgfetch will fail 8 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 9 | imgfree fakedimage || 10 | <% } %> 11 | 12 | set base-url <%=repo%> 13 | set params linux install=${base-url} autoyast=<%=installScriptUri%> <%=kargs%> 14 | kernel ${base-url}/boot/x86_64/loader/linux 15 | initrd ${base-url}/boot/x86_64/loader/initrd 16 | imgargs linux ${params} 17 | 18 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 19 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 20 | imgfree fakedimage || 21 | <% } %> 22 | 23 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 24 | 25 | -------------------------------------------------------------------------------- /data/profiles/ipxe-info.ipxe: -------------------------------------------------------------------------------- 1 | echo RackHD: <%=message%> 2 | echo RackHD: Booting to disk in ${rebootInterval} seconds... 3 | sleep ${rebootInterval} 4 | exit 5 | -------------------------------------------------------------------------------- /data/profiles/linux-generic.ipxe: -------------------------------------------------------------------------------- 1 | kernel <%=kernelUri%> 2 | initrd <%=initrdUri%> 3 | imgargs <%=kernelFile%> initrd=<%=initrdFile%> ip=<%=ipaddress%>:<%=server%>:<%=gateway%>:<%=netmask%> rsyslog=<%=server%> cb_url=http://<%=server%>:<%=port%>/api/current/notification?nodeId=<%=nodeId%> BOOTIF=01-<%=macaddress%> console=tty0 console=<%=comport%>,115200n8 <%=bootargs%> 4 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 5 | -------------------------------------------------------------------------------- /data/profiles/linux.ipxe: -------------------------------------------------------------------------------- 1 | kernel <%=kernelUri%> 2 | initrd <%=initrdUri%> 3 | imgargs <%=kernelFile%> initrd=<%=initrdFile%> auto=true SYSLOGSERVER=<%=server%> API_CB=<%=server%>:<%=port%> BASEFS=<%=basefsUri%> OVERLAYFS=<%=overlayfsUri%> BOOTIF=01-<%=macaddress%> console=tty0 console=<%=comport%>,115200n8 <%=kargs%> 4 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 5 | -------------------------------------------------------------------------------- /data/profiles/rancherOS.ipxe: -------------------------------------------------------------------------------- 1 | # Copyright 2018, Dell EMC, Inc. 2 | kernel <%=kernelUri%> 3 | initrd <%=initrdUri%> 4 | imgargs <%=kernelFile%> initrd=<%=initrdFile%> console=tty0 netconsole=+@/,514@<%=server%>/ rancher.password=monorail rancher.cloud_init.datasources=['url:http://<%=server%>:<%=port%>/api/current/templates/cloud-config.yaml?nodeId=<%=nodeId%>'] 5 | boot || prompt --key 0x197e --timeout 2000 Press F12 to investigate || exit shell 6 | 7 | -------------------------------------------------------------------------------- /data/profiles/redirect.ipxe: -------------------------------------------------------------------------------- 1 | set i:int8 0 2 | 3 | :loop 4 | set CurrentIp ${net${i}/ip} 5 | isset ${CurrentIp} || goto noipqueryset 6 | set CurrentIpQuery ips=${CurrentIp} 7 | goto ipquerysetdone 8 | :noipqueryset 9 | set CurrentIpQuery ips= 10 | :ipquerysetdone 11 | 12 | set CurrentMac ${net${i}/mac:hex} 13 | isset ${CurrentMac} || goto done 14 | set CurrentMacQuery macs=${CurrentMac} 15 | 16 | iseq ${i} 0 || goto notnic0queryset 17 | set IpsQuery ${CurrentIpQuery} 18 | set MacsQuery ${CurrentMacQuery} 19 | goto querysetdone 20 | 21 | :notnic0queryset 22 | set IpsQuery ${IpsQuery}&${CurrentIpQuery} 23 | set MacsQuery ${MacsQuery}&${CurrentMacQuery} 24 | :querysetdone 25 | 26 | echo RackHD: NIC${i} MAC: ${CurrentMac} 27 | echo RackHD: NIC${i} IP: ${CurrentIp} 28 | 29 | inc i 30 | iseq ${i} 100 || goto loop 31 | :done 32 | 33 | # Profile request retries 34 | set getProfileAttempt:int8 0 35 | set getProfileAttemptMax:int8 5 36 | set getProfileRetryDelay:int8 3 37 | 38 | goto getProfile 39 | 40 | :getProfileRetry 41 | inc getProfileAttempt 42 | iseq ${getProfileAttempt} ${getProfileAttemptMax} || goto getProfileRetryContinue 43 | 44 | echo Exceeded max retries chainloading boot profile 45 | echo Exiting in ${rebootInterval} seconds... 46 | # rebootInterval defined in boilerplate.ipxe 47 | sleep ${rebootInterval} 48 | goto complete 49 | 50 | :getProfileRetryContinue 51 | echo Failed to download profile, retrying in ${getProfileRetryDelay} seconds 52 | sleep ${getProfileRetryDelay} 53 | 54 | :getProfile 55 | echo RackHD: Chainloading next profile 56 | chain http://<%=server%>:<%=port%>/api/current/profiles?${MacsQuery}&${IpsQuery} || goto getProfileRetry 57 | 58 | :complete 59 | exit 60 | -------------------------------------------------------------------------------- /data/profiles/run-uefi.ipxe: -------------------------------------------------------------------------------- 1 | #!ipxe 2 | 3 | chain <%=repo%>/<%=uefitool%> <%=args%> 4 | 5 | -------------------------------------------------------------------------------- /data/profiles/windows.ipxe: -------------------------------------------------------------------------------- 1 | # The progress notification is just something nice-to-have, so progress notification failure should 2 | # never impact the normal installation process 3 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.enterProfileUri ) { %> 4 | # since there is no curl like http client in ipxe, so use imgfetch instead 5 | # note: the progress milestones uri must be wrapped in unescaped format, otherwise imgfetch will fail 6 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.enterProfileUri%> || 7 | imgfree fakedimage || 8 | <% } %> 9 | 10 | cpuid --ext 29 && set arch amd64 || set arch x86 11 | set base-url <%=repo%> 12 | kernel ${base-url}/wimboot 13 | initrd ${base-url}/bootmgr bootmgr 14 | initrd ${base-url}/Boot/BCD BCD 15 | initrd ${base-url}/Boot/Fonts/segmono_boot.ttf segmono_boot.ttf 16 | initrd ${base-url}/Boot/Fonts/segoe_slboot.ttf segoe_slboot.ttf 17 | initrd ${base-url}/Boot/Fonts/segoen_slboot.ttf segoen_slboot.ttf 18 | initrd ${base-url}/Boot/Fonts/wgl4_boot.ttf wgl4_boot.ttf 19 | initrd ${base-url}/Boot/boot.sdi boot.sdi 20 | initrd ${base-url}/${arch}/media/sources/boot.wim boot.wim 21 | 22 | <% if( typeof progressMilestones !== 'undefined' && progressMilestones.startInstallerUri ) { %> 23 | imgfetch --name fakedimage http://<%=server%>:<%=port%><%-progressMilestones.startInstallerUri%> || 24 | imgfree fakedimage || 25 | <% } %> 26 | 27 | boot 28 | 29 | -------------------------------------------------------------------------------- /data/profiles/zerotouch-configure.zt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/Cli -p2 2 | enable 3 | echo "STARTING RENASAR ZEROTOUCH" 4 | copy http://<%=server%>:<%=port%>/api/current/templates/<%=startupConfig%>?nodeId=<%=nodeId%> flash:startup-config 5 | copy http://<%=server%>:<%=port%>/api/current/templates/<%=bootConfig%>?nodeId=<%=nodeId%> flash:boot-config 6 | copy http://<%=server%>:<%=port%>/<%=eosImage%> flash: 7 | echo "RENASAR ZEROTOUCH FINISHED" 8 | exit 9 | -------------------------------------------------------------------------------- /data/profiles/zerotouch-default.zt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/Cli -p2 2 | enable 3 | echo "RENASAR ZEROTOUCH DEFAULT" 4 | exit 5 | -------------------------------------------------------------------------------- /data/templates/ansible-external-inventory.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/nodejs 2 | 3 | // Copyright 2015, EMC, Inc. 4 | 'use strict'; 5 | 6 | var command = process.argv[2]; 7 | 8 | switch (command) { 9 | case '--list': 10 | console.log( 11 | JSON.stringify( 12 | { 13 | '_meta': { 14 | 'hostvars': { 15 | '<%=ipaddress%>': { 16 | 'ansible_ssh_user': '<%=username%>', 17 | 'ansible_sudo_pass': '<%-password%>' 18 | } 19 | } 20 | }, 21 | '<%=identifier%>': { 22 | 'hosts': [ 23 | '<%=ipaddress%>' 24 | ] 25 | } 26 | } 27 | ) 28 | ); 29 | 30 | break; 31 | 32 | default: 33 | console.log('Missing required argument --host'); 34 | break; 35 | } 36 | -------------------------------------------------------------------------------- /data/templates/arista-boot-config: -------------------------------------------------------------------------------- 1 | SWI=flash:/<%=bootfile%> 2 | -------------------------------------------------------------------------------- /data/templates/arista-catalog-config.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | def main(): 4 | import subprocess 5 | data ={} 6 | 7 | try: 8 | cmd = "Cli -p2 -c 'show startup-config'" 9 | data['startup-config'] = subprocess.check_output(cmd, shell=True) 10 | except: 11 | pass 12 | 13 | try: 14 | cmd = "Cli -p2 -c 'show running-config'" 15 | data['running-config'] = subprocess.check_output(cmd, shell=True) 16 | except: 17 | pass 18 | 19 | return data 20 | -------------------------------------------------------------------------------- /data/templates/arista-catalog-ip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import os 4 | import subprocess 5 | 6 | def parse_ip(mgmt_ip): 7 | parsedString = "" 8 | 9 | mgmt_ip = os.linesep.join([s for s in mgmt_ip.splitlines() if s]) 10 | mgmt_ip = mgmt_ip.replace(" ", "") 11 | 12 | for line in mgmt_ip.splitlines(): 13 | if (line.find('Internetaddress') != -1): 14 | line = line.replace('Internetaddress', 'internetAddress') 15 | line = line.replace('is', '": "') 16 | line = '{"' + line + '"}' 17 | parsedString = line 18 | 19 | return parsedString 20 | 21 | def main(): 22 | data = {} 23 | 24 | try: 25 | cmd = "Cli -c 'show ip interface'" 26 | mgmt_ip = subprocess.check_output(cmd, shell=True) 27 | data = parse_ip(mgmt_ip) 28 | except: 29 | pass 30 | 31 | return data 32 | -------------------------------------------------------------------------------- /data/templates/arista-deploy-startup-config.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | def main(): 4 | import subprocess 5 | 6 | cmd = "Cli -p2 -c 'copy <%=startupConfigUri%> flash:startup-config'" 7 | subprocess.check_output(cmd, shell=True) 8 | 9 | -------------------------------------------------------------------------------- /data/templates/arista-startup-config: -------------------------------------------------------------------------------- 1 | hostname rackhd-arista 2 | 3 | enable 4 | config 5 | username rackhd secret 0 rackhd 6 | 7 | management api http-commands 8 | no shut 9 | 10 | snmp-server community rackhd 11 | snmp-server group network-admin v2c 12 | 13 | end 14 | -------------------------------------------------------------------------------- /data/templates/brocade-catalog-version.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/python/3.3.2/bin/python3 2 | 3 | import json 4 | from CLI import CLI 5 | 6 | def main(): 7 | data = {} 8 | 9 | try: 10 | output = CLI('show system', do_print=False).get_output() 11 | data = output[5] 12 | except: 13 | pass 14 | 15 | return data 16 | -------------------------------------------------------------------------------- /data/templates/brocade-vdx-deploy-config.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/python/3.3.2/bin/python3 2 | import requests 3 | import json 4 | from CLI import CLI 5 | import imp 6 | import traceback 7 | import sys 8 | 9 | 10 | def download_brocade_config(): 11 | session = requests.Session() 12 | response = requests.Response() 13 | response = session.get('<%=startupConfigUri%>', auth=("", "")) 14 | session.close() 15 | with open('/var/config/vcs/scripts/rackhd_brocade_config', 'w') as rackhd_brocade_script: 16 | rackhd_brocade_script.write(response.text) 17 | 18 | def main(): 19 | try: 20 | download_brocade_config() 21 | CLI('copy flash://rackhd_brocade_config running-config', do_print=False) 22 | except: 23 | pass 24 | 25 | -------------------------------------------------------------------------------- /data/templates/centos.rackhdcallback: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # centos.rackhdcallback callback to rackhd post installation API hook 4 | # 5 | # description: calls back to rackhd post installation API hook 6 | # 7 | ### BEGIN INIT INFO 8 | # Provides: centos.rackhdcallback 9 | # Required-Start: $network 10 | # Default-Start: 3 4 5 11 | # Short-Description: Callback to rackhd post installation API hook 12 | # Description: Callback to rackhd post installation API hook 13 | ### END INIT INFO 14 | 15 | 16 | # We can't really know when networking is actually up and running from 17 | # a simple "Required-Start: $network", so instead just use curl with 18 | # a bunch of retries and hope it works. We could use more sophisticated 19 | # dependency mechanisms provided by systemd, but ideally we can just use 20 | # a single script to service both CentOS 6.5 and CentOS 7 installs, hence 21 | # reasoning for using `wget --retry-connrefused` below. Using `curl --retry` 22 | # fails immediately because it only handles connection timeouts, not connection 23 | # refused cases. 24 | # See https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ 25 | 26 | # Nothing wrong with set -e here since we're not doing anything complex 27 | set -e 28 | echo "Attempting to call back to RackHD CentOS installer" 29 | wget --retry-connrefused --waitretry=1 -t 300 --post-data '{"nodeId":"<%=nodeId%>"}' --header='Content-Type:application/json' http://<%=server%>:<%=port%>/api/current/notification 30 | # Only run this once to verify the OS was installed, then disable it forever 31 | chkconfig centos.rackhdcallback off 32 | -------------------------------------------------------------------------------- /data/templates/cisco-catalog-config.py: -------------------------------------------------------------------------------- 1 | def main(): 2 | import json 3 | # Python module names vary depending on nxos version 4 | try: 5 | from cli import cli 6 | except: 7 | from cisco import cli 8 | data = {} 9 | 10 | try: 11 | data['startup-config'] = cli('show startup-config') 12 | data['running-config'] = cli('show running-config') 13 | except: 14 | pass 15 | 16 | return data 17 | -------------------------------------------------------------------------------- /data/templates/cisco-catalog-snmp-settings.py: -------------------------------------------------------------------------------- 1 | def main(): 2 | import json 3 | # Python module names vary depending on nxos version 4 | try: 5 | from cli import clid 6 | except: 7 | from cisco import clid 8 | data = {} 9 | 10 | try: 11 | all = json.loads(clid('show snmp')) 12 | data['snmp'] = all 13 | except: 14 | pass 15 | 16 | try: 17 | community = json.loads(clid('show snmp community')) 18 | data['community'] = community 19 | except: 20 | pass 21 | 22 | try: 23 | host = json.loads(clid('show snmp host')) 24 | data['host'] = host 25 | except: 26 | pass 27 | 28 | try: 29 | group = json.loads(clid('show snmp group')) 30 | data['group'] = group 31 | except: 32 | pass 33 | 34 | return data 35 | -------------------------------------------------------------------------------- /data/templates/cisco-catalog-version.py: -------------------------------------------------------------------------------- 1 | def main(): 2 | import json 3 | # Python module names vary depending on nxos version 4 | try: 5 | from cli import clid 6 | except: 7 | from cisco import clid 8 | data = {} 9 | 10 | try: 11 | # get the version in json form in a temporary string so we can manipulate it 12 | dataString = clid('show version') 13 | # The "as is" in the license header string from 'show version' 14 | # will cause json.dumps within taskrunner.py to produce an invalid json string 15 | # This is resolved by replacing the additional escapes (\) with a raw string 16 | dataString = dataString.replace("\\\"as is,\\\"", "as is") 17 | data = json.loads(dataString) 18 | except: 19 | pass 20 | 21 | return data 22 | -------------------------------------------------------------------------------- /data/templates/cloud-config.yaml: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | # Copyright 2017, Dell EMC, Inc. 3 | write_files: 4 | - path: /etc/rc.local 5 | permissions: "0755" 6 | owner: root 7 | content: | 8 | #!/bin/bash 9 | modprobe ipmi_devintf 10 | modprobe ipmi_si 11 | wget -O /tmp/micro.tar.xz <%= dockerUri %> 12 | while [ $(docker images | grep -c micro) == "0" ]; do 13 | xz -cd /tmp/micro.tar.xz | docker load 14 | done 15 | # Run the script in background to enable sshd, 16 | # because sshd is enabled after /etc/rc.local is finished. 17 | /etc/rackhd-micro.sh & 18 | 19 | - path: /etc/rackhd-micro.sh 20 | permissions: "0755" 21 | owner: root 22 | content: | 23 | #!/bin/bash 24 | wait-for-docker 25 | docker run \ 26 | -e SERVER='<%= server %>' \ 27 | -e PORT='<%= port %>' \ 28 | -e MAC='<%= macaddress %>' \ 29 | --privileged --net=host -v=/dev:/dev rackhd/micro 30 | case $? in 31 | 1 ) 32 | echo 1 | sudo tee /proc/sys/kernel/sysrq 33 | echo b | sudo tee /proc/sysrq-trigger 34 | ;; 35 | 2 ) 36 | ipmitool -I open chassis power cycle ;; 37 | 127 ) 38 | exit 0 ;; 39 | * ) 40 | echo 1 | sudo tee /proc/sys/kernel/sysrq 41 | echo b | sudo tee /proc/sysrq-trigger 42 | ;; 43 | esac 44 | -------------------------------------------------------------------------------- /data/templates/dell-switch-catalog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright 2018, DELL EMC, Inc. 4 | OPEN_CURLY='{' 5 | CLOSE_CURLY='}' 6 | LOGFILE="/tmp/rackhd.log" 7 | 8 | OS_VERSION=$( f10do "show system" | grep 'Dell EMC Networking OS Version' | awk -F: '{print $NF}' | tr -d '[:space:]') 9 | STACK_MAC=$( f10do "show system" | grep 'Stack MAC' | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}') 10 | MODUL_TYPE=$( f10do "show system" | grep 'Module Type' | awk -F: '{print $NF}' | tr -d '[:space:]') 11 | 12 | # build the stdout data in json format 13 | STDOUT='"'$OPEN_CURLY' 14 | \\\\\\"osVersion\\\\\\":\\\\\\"'$OS_VERSION'\\\\\\", 15 | \\\\\\"stackMack\\\\\\":\\\\\\"'$STACK_MAC'\\\\\\", 16 | \\\\\\"moduleType\\\\\\":\\\\\\"'$MODUL_TYPE'\\\\\\" 17 | '$CLOSE_CURLY'"' 18 | 19 | #remove white space from stdout 20 | STDOUT=$( echo $STDOUT | tr -d ' ') 21 | echo $STDOUT >> $LOGFILE 22 | # Finally, Add stdout to the pulled task 23 | sed -e '$s/}/,"stdout":'${STDOUT}'}/' /tmp/mytask.json | tee /tmp/mytask.json -------------------------------------------------------------------------------- /data/templates/dell-switch-nos-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright 2018, DELL EMC, Inc. 4 | set -e 5 | onie-nos-install <%=nosImageUri%> 6 | -------------------------------------------------------------------------------- /data/templates/esx-boot-cfg: -------------------------------------------------------------------------------- 1 | bootstate=0 2 | title=Loading ESXi installer 3 | prefix=<%=repo%> 4 | kernel=<%=tbootFile%> 5 | kernelopt=runweasel formatwithmbr com1_baud=115200 com1_Port=<%=comportaddress%> tty2Port=<%=comport%> gdbPort=<%=gdbPort%> debugLogToSerial=<%=debugLogToSerial%> logPort=<%=logPort%> ks=<%=installScriptUri%> 6 | modules=<%=moduleFiles%> <%=kargs%> 7 | build= 8 | updated=0 9 | -------------------------------------------------------------------------------- /data/templates/esx-pxelinux-cfg: -------------------------------------------------------------------------------- 1 | DEFAULT install 2 | NOHALT 1 3 | PROMPT 0 4 | TIMEOUT 80 5 | LABEL install 6 | KERNEL <%=repo%>/<%=mbootFile%> 7 | APPEND -c http://<%=server%>:<%=port%>/api/current/templates/<%=esxBootConfigTemplate%>?nodeId=<%=nodeId%> 8 | -------------------------------------------------------------------------------- /data/templates/ignition.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignition": { "version": "2.0.0" }, 3 | "storage": { 4 | "files": [{ 5 | "filesystem": "root", 6 | "path": "/root/ignition-RackHD.txt", 7 | "mode":400, 8 | "contents": { 9 | <%# The source is encoded with base64. To encode/decode, you can use the CLI tool base64(1). The current decoded text reads as follows: %> 10 | <%# You may customize your CoreOS installation using Ignition by configuring the ignitionScriptUri variable to point to a custom Ignition file prior to executing the RackHD Task.Os.Install.CoreOS task. %> 11 | "source": "data:text/plain;charset=utf-8;base64,WW91IG1heSBjdXN0b21pemUgeW91ciBDb3JlT1MgaW5zdGFsbGF0aW9uIHVzaW5nIElnbml0aW9uIGJ5IGNvbmZpZ3VyaW5nIHRoZSBpZ25pdGlvblNjcmlwdFVyaSB2YXJpYWJsZSB0byBwb2ludCB0byBhIGN1c3RvbSBJZ25pdGlvbiBmaWxlIHByaW9yIHRvIGV4ZWN1dGluZyB0aGUgUmFja0hEIFRhc2suT3MuSW5zdGFsbC5Db3JlT1MgdGFzay4=" } 12 | }] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /data/templates/install-debian/debian.rackhdcallback: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # Copyright 2015-2017, Dell EMC, Inc. 3 | 4 | ### BEGIN INIT INFO 5 | # Provides: RackHDCallback 6 | # Required-Start: $all 7 | # Required-Stop: 8 | # Default-Start: 2 3 4 5 9 | # Default-Stop: 0 1 6 10 | # Short-Description: RackHD callback 11 | # Description: RackHD callback to give RackHD feedback that reboot is done. 12 | ### END INIT INFO 13 | 14 | echo "Attempting to call back to RackHD Debian/Ubuntu installer" 15 | wget --retry-connrefused --waitretry=1 -t 300 --post-data '{"nodeId":"<%=nodeId%>"}' --header='Content-Type:application/json' http://<%=server%>:<%=port%>/api/current/notification 16 | 17 | # remove file 18 | rm /etc/init.d/RackHDCallback 19 | update-rc.d RackHDCallback remove 20 | -------------------------------------------------------------------------------- /data/templates/install-debian/post-install-debian.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2015-2017, Dell EMC, Inc. 3 | # create SSH key for root 4 | <% if ('undefined' !== typeof rootSshKey && null !== rootSshKey) { -%> 5 | mkdir /root/.ssh 6 | echo <%=rootSshKey%> > /root/.ssh/authorized_keys 7 | chown -R root:root /root/.ssh 8 | <% } -%> 9 | 10 | # create users and SSH key for users 11 | <% if (typeof users !== 'undefined') { -%> 12 | <% users.forEach(function(user) { -%> 13 | <%_ if (undefined !== user.uid) { _%> 14 | useradd -u <%=user.uid%> -m -p '<%-user.encryptedPassword%>' <%=user.name%> 15 | <%_ } else {_%> 16 | useradd -m -p '<%-user.encryptedPassword%>' <%=user.name%> 17 | <%_ } _%> 18 | <%_ if (undefined !== user.sshKey) { _%> 19 | mkdir /home/<%=user.name%>/.ssh 20 | echo <%=user.sshKey%> > /home/<%=user.name%>/.ssh/authorized_keys 21 | chown -R <%=user.name%>:<%=user.name%> /home/<%=user.name%>/.ssh 22 | <%_ } _%> 23 | <% }); -%> 24 | <% } -%> 25 | 26 | -------------------------------------------------------------------------------- /data/templates/remove_bmc_credentials.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright 2016-2018, Dell EMC, Inc. 3 | 4 | usernames=(<%= users.join(" ") %>) 5 | 6 | channel='' 7 | function set_channel() 8 | { 9 | for i in {1..15}; do 10 | ipmitool user list $i &>/dev/null 11 | status=$? 12 | if [ "$status" -eq "0" ] ; then 13 | channel=$i 14 | break 15 | fi 16 | done 17 | } 18 | set_channel 19 | echo "channel number is" $channel 20 | if [ -z "${channel}" ]; then 21 | echo "Channel number was not set correctly, exiting script" 22 | exit 1 23 | fi 24 | 25 | mapfile -t userlist < <(ipmitool user list $channel) 26 | 27 | array_len=${#userlist[@]} 28 | if [ "$array_len" -gt "1" ]; then 29 | array_len=$(expr $array_len - 1) 30 | fi 31 | for user in ${usernames[@]}; do 32 | for i in $(seq 1 $array_len); do 33 | if [ `echo ${userlist[i]} | grep -c $user ` -gt 0 ] ; then 34 | userid=(${userlist[i]//$'\n'/ }) 35 | #Delete BMC User 36 | for i in {1..15}; do 37 | ipmitool channel setaccess $i ${userid} callin=off ipmi=off link=off privilege=15 38 | done 39 | ipmitool user disable $userid 40 | ipmitool user set password $userid "" 41 | ipmitool user set name ${userid} "" 42 | fi 43 | done 44 | done 45 | #succesfull 46 | exit 0 47 | 48 | -------------------------------------------------------------------------------- /data/templates/renasar-ansible.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEh48tb2BGtLILBhs9TygDqzLrGTZjnWn4ag336p5InXVOa4kIoifwh+jplXrqdoyFkMtWg6hYhh52cdyIkoNtbLcTitQe7LMPT2OQ19bSWjM5PEJj8yT9IspFyVVqbFfS4PC2lj10a7ZF8zPsk2SIkqrCWUP87gEf8nDQbaMuYryzGqiVHMpCmFIn2CzijzLIOOJ8jusfmIM0oB+sE5piPtKCBLUWlTE2CGR1auaOACt0Z9o6u22N4KHEFPRCp0CkP4VX7LJ41X0zlyLnk8PZSDh8y2Kp7KKHYxzCJ1qKSQv9jK3DUbubm8jptM30QM8ehhFTZq40FEBKXVqe5eDq90ib0NKPcUn/IZWU/a4/Cg+aq4z1lyUHBC05tbIQOiG/szl5xrA8PcGP80cfvHpv4Zig7OE5XYW143LiVSHSS3SwLkSwKLpZLnwoHvX2keYKC32cpCWDNgeiFpbh9iws6vxBnBX9uJwaxzP3eXQX1b3sE8wggj9DxvimWMds8G2B3OZFg680Y987wfa/z0LSTSxF2q1kSLA7yELN1HGl7Ij6t12kkzJtqycLe8DKAmnO7D9Rbhm3+D+rKNNX/v6OjtDeXn0RwYLgkyyKRrf0KC5xL1pt7/ietMAnUXwjpuk5pw/XvK8vu3mIugAfKHlRvTDdZqIoYb7z7c2KAoyZZw== example RackHD 2 | -------------------------------------------------------------------------------- /data/templates/set_interfaces.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | count = 0 4 | string= "" 5 | interfaces=[] 6 | for dirname, dirnames, filenames in os.walk('/sys/class/net/'): 7 | iflist = [(d,os.path.realpath(dirname+d)) for d in os.listdir(dirname) ] 8 | for (ifname, ifpath) in iflist: 9 | #avoid checking virtual interfaces 10 | if ifname != "lo" and 'virtual' not in ifpath: 11 | #Here we are assigning an arbitrary IP which could be a different one. This is just to get the interface up 12 | interfaces.append(ifname) 13 | ip= 100+count 14 | string += "auto " + ifname 15 | string += "\niface " + ifname +" inet static" 16 | string += "\naddress 10.0.0." + str(ip) 17 | if count == 0: 18 | string += "\ngateway 10.0.0.1" 19 | string += "\nnetmask 255.255.255.0\n\n" 20 | count=count+1 21 | 22 | 23 | with open("/etc/network/interfaces", "w") as text_file: 24 | text_file.write(string) 25 | 26 | for item in interfaces: 27 | os.system("sudo ifup "+ item) 28 | f= os.popen("sudo ethtool "+ item + " | grep -i \"Link detected\"") 29 | result = f.read() 30 | count = 0 31 | while result.find("yes") == -1: 32 | time.sleep(5) 33 | f= os.popen("sudo ethtool "+ item + " | grep -i \"Link detected\"" ) 34 | result = f.read() 35 | count = count + 1 36 | print result 37 | if count > 20: 38 | break 39 | -------------------------------------------------------------------------------- /data/views/renderable.2.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "<%=id%>", 3 | "hash": <%- JSON.stringify(hash) %>, 4 | "name": "<%=name%>", 5 | "scope": "<%=scope%>" 6 | } -------------------------------------------------------------------------------- /data/views/tasks.2.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "identifier": "<%= identifier %>", 3 | <% if (hasOwnProperty("exit")) { %> 4 | "exit": "<%= exit %>", 5 | <% } %> 6 | "tasks": <%- JSON.stringify(tasks) %> 7 | } 8 | -------------------------------------------------------------------------------- /data/views/workflowGraphs.2.0.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "friendlyName": "<%=friendlyName%>", 4 | "injectableName": "<%=injectableName%>", 5 | <% if (hasOwnProperty("options")) { %> 6 | "options": <%- JSON.stringify(options) %>, 7 | <% }%> 8 | "tasks":[ 9 | <% tasks.forEach(function (value, i, arr){ %> 10 | { 11 | "label": "<%=value.label%>", 12 | <% if ( value.waitOn) { %> 13 | "waitOn": <%- JSON.stringify(value.waitOn) %>, 14 | <% } %> 15 | 16 | <% if ( value.taskDefinition ) { %> 17 | "taskDefinition": 18 | 19 | <% var friendlyName = value.taskDefinition.friendlyName 20 | var injectableName = value.taskDefinition.injectableName 21 | var implementsTask = value.taskDefinition.implementsTask 22 | var options = value.taskDefinition.options 23 | var properties = value.taskDefinition.properties %> 24 | <% include views/workflowTasks.2.0.json %> 25 | <% } %> 26 | <% if ( value.taskName ) { %> 27 | "taskName": "<%=basepath%>/workflows/tasks/<%=value.taskName%>" 28 | <% } %> 29 | } 30 | <%= ( arr.length > 0 && i < arr.length-1 ) ? ',': '' %> 31 | <% }); %> 32 | ] 33 | 34 | } 35 | -------------------------------------------------------------------------------- /data/views/workflowTasks.2.0.json: -------------------------------------------------------------------------------- 1 | { 2 | <% if (friendlyName !== null) { %> 3 | "friendlyName": "<%=friendlyName%>", 4 | <% }%> 5 | <% if (injectableName !== null ) { %> 6 | "injectableName": "<%=injectableName%>", 7 | <% }%> 8 | <% if (implementsTask !== null) { %> 9 | "implementsTask" : "<%=implementsTask%>", 10 | <% }%> 11 | <% if (hasOwnProperty("schemaRef")) { %> 12 | "schemaRef" : "<%=schemaRef%>", 13 | <% }%> 14 | <% if (options !== null) { %> 15 | "options": <%- JSON.stringify(options) %>, 16 | <% } else {%> 17 | "options": {}, 18 | <% } %> 19 | <% if (properties !== null) { %> 20 | "properties": <%- JSON.stringify(properties) %> 21 | <% } else {%> 22 | "properties": {} 23 | <% } %> 24 | 25 | } 26 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: on-taskgraph 2 | Section: utilties 3 | Priority: optional 4 | Maintainer: Joe Heck 5 | Build-Depends: debhelper (>= 8.0.0) 6 | Standards-Version: 3.9.4 7 | 8 | Package: on-taskgraph 9 | Architecture: any 10 | Depends: ${shlibs:Depends}, ${misc:Depends}, nodejs (>= 4.4.5-1nodesource1~), mongodb, snmp, ipmitool 11 | Suggests: python-pywbem, ansible, apt-mirror, amtterm 12 | Description: RackHD Imaging workflow taskgraph engine 13 | -------------------------------------------------------------------------------- /debian/on-taskgraph.dirs: -------------------------------------------------------------------------------- 1 | /var/renasar 2 | -------------------------------------------------------------------------------- /debian/on-taskgraph.install: -------------------------------------------------------------------------------- 1 | node_modules /var/renasar/on-taskgraph 2 | lib /var/renasar/on-taskgraph 3 | api /var/renasar/on-taskgraph 4 | data /var/renasar/on-taskgraph 5 | scheduler.proto /var/renasar/on-taskgraph 6 | static /var/renasar/on-taskgraph 7 | index.js /var/renasar/on-taskgraph 8 | commitstring.txt /var/renasar/on-taskgraph 9 | app.js /var/renasar/on-taskgraph 10 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # -*- makefile -*- 3 | 4 | # Uncomment this to turn on verbose mode. 5 | export DH_VERBOSE=1 6 | 7 | %: 8 | dh $@ 9 | 10 | override_dh_auto_configure: 11 | # do nothing 12 | 13 | override_dh_auto_build: 14 | # do nothing 15 | 16 | override_dh_usrlocal: 17 | # do nothing 18 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /extra/make-cicd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This creates a package in a manner similar to 4 | # HWIMO-BUILD: datestring package version, apidoc 5 | # no coveralls. But it also utilizes build-package.bash 6 | # similar to how travis-ci does. 7 | 8 | # Ensure we're always in the right directory. 9 | SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" 10 | cd $SCRIPT_DIR/.. 11 | 12 | export DEBEMAIL="hwimo robots " 13 | export DEBFULLNAME="The HWIMO Robots" 14 | 15 | GITCOMMITDATE=$(git show -s --pretty="format:%ci") 16 | DATESTRING=$(date -d "$GITCOMMITDATE" -u +"%Y-%m-%d-%H%M%SZ") 17 | 18 | export DEBPKGVER="$DATESTRING" 19 | if [ -n "$BUILD_NUMBER" ] 20 | then 21 | export DEBPKGVER="${DEBPKGVER}-${BUILD_NUMBER}" 22 | fi 23 | 24 | export DCHOPTS="-v ${DEBPKGVER} autobuild" 25 | 26 | ./extra/make-npmdeps.sh 27 | ./extra/make-deb.sh 28 | 29 | -------------------------------------------------------------------------------- /extra/make-clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Ensure we're always in the right directory. 4 | SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" 5 | cd $SCRIPT_DIR/.. 6 | 7 | rm -rf *.deb deb/ 8 | rm -rf node_modules/ 9 | rm -rf test/ 10 | rm commitstring.txt 11 | rm -rf on-taskgraph*.tar.gz* 12 | rm -rf *.build 13 | rm -rf packagebuild/ 14 | -------------------------------------------------------------------------------- /extra/make-npmdeps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Ensure we're always in the right directory. 4 | SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" 5 | cd $SCRIPT_DIR/.. 6 | 7 | npm install 8 | -------------------------------------------------------------------------------- /extra/make-npmtest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Ensure we're always in the right directory. 4 | SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" 5 | cd $SCRIPT_DIR/.. 6 | 7 | npm test 8 | -------------------------------------------------------------------------------- /extra/make-sysdeps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This has to be kept in sync with .travis.yml packages to 4 | # be effective. 5 | 6 | echo "Installing system dependencies" 7 | sudo apt-get update 8 | sudo apt-get install -y \ 9 | debhelper \ 10 | default-jdk \ 11 | devscripts \ 12 | dh-make \ 13 | git \ 14 | libkrb5-dev \ 15 | nodejs \ 16 | nodejs-legacy \ 17 | npm \ 18 | rabbitmq-server \ 19 | pbuilder \ 20 | ubuntu-dev-tools 21 | -------------------------------------------------------------------------------- /extra/make-testcoveralls.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Ensure we're always in the right directory. 4 | SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" 5 | cd $SCRIPT_DIR/.. 6 | 7 | ./node_modules/.bin/istanbul cover -x "**/spec/**" ./node_modules/.bin/_mocha --report lcovonly -- $(find spec -name '*-spec.js') -R spec --require spec/helper.js 8 | cat ./coverage/lcov.info | node_modules/.bin/coveralls 9 | 10 | -------------------------------------------------------------------------------- /lib/graphs/add-hotspare-graph.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | friendlyName: 'Add Hot Spare', 5 | injectableName: 'Graph.Add.Hotspare', 6 | options: { 7 | defaults: { 8 | username: null, 9 | password: null, 10 | volumeId: null, 11 | driveId: null, 12 | hotspareType: 'ghs', 13 | ipAddress: null 14 | } 15 | }, 16 | tasks: [ 17 | { 18 | label: 'add-hotspare', 19 | taskName: 'Task.Add.Hotspare' 20 | }, 21 | { 22 | label: 'dell-wsman-get-inventory', 23 | taskName: 'Task.Dell.Wsman.GetInventory', 24 | waitOn: { 25 | 'add-hotspare': 'finished' 26 | }, 27 | ignoreFailure: true 28 | } 29 | 30 | ] 31 | }; 32 | -------------------------------------------------------------------------------- /lib/graphs/add-volume-graph.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | friendlyName: 'Add Volume', 5 | injectableName: 'Graph.Add.Volume', 6 | options: { 7 | defaults: { 8 | username: null, 9 | password: null, 10 | drives: null, 11 | raidLevel: null, 12 | name: null, 13 | sizeInBytes: null, 14 | ipAddress: null 15 | } 16 | }, 17 | tasks: [ 18 | { 19 | label: 'add-volume', 20 | taskName: 'Task.Add.Volume' 21 | }, 22 | { 23 | label: 'dell-wsman-get-inventory', 24 | taskName: 'Task.Dell.Wsman.GetInventory', 25 | waitOn: { 26 | 'add-volume': 'finished' 27 | }, 28 | ignoreFailure: true 29 | } 30 | 31 | ] 32 | }; 33 | -------------------------------------------------------------------------------- /lib/graphs/arista-switch-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Arista Switch ZTP Discovery", 7 | "injectableName": "Graph.Switch.Discovery.Arista.Ztp", 8 | "tasks": [ 9 | { 10 | "label": "catalog-switch", 11 | "taskDefinition": { 12 | "friendlyName": "Catalog Arista Switch", 13 | "injectableName": "Task.Inline.Catalog.Switch.Arista", 14 | "implementsTask": "Task.Base.Linux.Commands", 15 | "options": { 16 | "commands": [ 17 | { 18 | "downloadUrl": "{{ api.templates }}/arista-catalog-version.py?nodeId={{ task.nodeId }}", 19 | "catalog": { "format": "json", "source": "version" } 20 | } 21 | ] 22 | }, 23 | "properties": {} 24 | } 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/boot-livecd-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Boot LiveCD', 7 | injectableName: 'Graph.BootLiveCD', 8 | options: { 9 | 'install-os': { 10 | _taskTimeout: 3600000 //1 hour 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'set-boot-pxe', 16 | taskName: 'Task.Obm.Node.PxeBoot', 17 | ignoreFailure: true 18 | }, 19 | { 20 | label: 'reboot', 21 | taskName: 'Task.Obm.Node.Reboot', 22 | waitOn: { 23 | 'set-boot-pxe': 'finished' 24 | } 25 | }, 26 | { 27 | label: 'install-os', 28 | taskName: 'Task.Os.Boot.LiveCD', 29 | waitOn: { 30 | 'reboot': 'succeeded' 31 | } 32 | } 33 | ] 34 | }; 35 | -------------------------------------------------------------------------------- /lib/graphs/bootstrap-rancher-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'DEBUG Bootstrap Rancher', 7 | injectableName: 'Graph.BootstrapRancher', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'bootstrap-rancher', 23 | taskName: 'Task.Linux.Bootstrap.Rancher', 24 | waitOn: { 25 | 'reboot': 'succeeded' 26 | } 27 | } 28 | ] 29 | }; 30 | -------------------------------------------------------------------------------- /lib/graphs/bootstrap-ubuntu-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'DEBUG Bootstrap Ubuntu', 7 | injectableName: 'Graph.BootstrapUbuntu', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'bootstrap-ubuntu', 23 | taskName: 'Task.Linux.Bootstrap.Ubuntu', 24 | waitOn: { 25 | 'reboot': 'succeeded' 26 | } 27 | } 28 | ] 29 | }; 30 | -------------------------------------------------------------------------------- /lib/graphs/brocade-switch-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2016 Brocade Communications Systems, Inc. 2 | // Copyright © 2018 Dell Inc. or its subsidiaries. All Rights Reserved. 3 | 4 | "use strict"; 5 | 6 | module.exports = { 7 | "friendlyName": "Brocade Switch Discovery", 8 | "injectableName": "Graph.Switch.Discovery.Brocade.Ztp", 9 | "tasks": [ 10 | { 11 | "label": "catalog-brocade-switch", 12 | "taskDefinition": { 13 | "friendlyName": "Catalog Brocade Switch", 14 | "injectableName": "Task.Inline.Catalog.Switch.Brocade", 15 | "implementsTask": "Task.Base.Linux.Commands", 16 | "options": { 17 | "commands": [ 18 | { 19 | "downloadUrl": "{{ api.templates }}/brocade-catalog-version.py?nodeId={{ task.nodeId }}", 20 | "catalog": { "format": "json", "source": "version" } 21 | } 22 | ] 23 | }, 24 | "properties": {} 25 | } 26 | } 27 | ] 28 | }; 29 | -------------------------------------------------------------------------------- /lib/graphs/cisco-switch-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Cisco Switch POAP Discovery", 7 | "injectableName": "Graph.Switch.Discovery.Cisco.Poap", 8 | "tasks": [ 9 | { 10 | "label": "catalog-switch", 11 | "taskDefinition": { 12 | "friendlyName": "Catalog Cisco Switch", 13 | "injectableName": "Task.Inline.Catalog.Switch.Cisco", 14 | "implementsTask": "Task.Base.Linux.Commands", 15 | "options": { 16 | "commands": [ 17 | { 18 | "downloadUrl": "{{ api.templates }}/cisco-catalog-version.py?nodeId={{ task.nodeId }}", 19 | "catalog": { "format": "json", "source": "version" } 20 | } 21 | ] 22 | }, 23 | "properties": {} 24 | } 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/clear-sel-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Clear the System Event Log', 7 | injectableName: 'Graph.ClearSEL.Node', 8 | tasks: [ 9 | { 10 | label: 'clearsel', 11 | taskName: 'Task.Obm.Node.ClearSEL' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/create-emc-fabric-service-poller-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create Emc FabricService Pollers', 7 | injectableName: 'Graph.Emc.Redfish.FabricService.Poller.Create', 8 | options: { 9 | defaults: { 10 | nodeId: null, 11 | pollers: [ 12 | { 13 | "type": "redfish", 14 | "pollInterval": 10000, 15 | "config": { 16 | "command": "fabricservice" 17 | } 18 | } 19 | ] 20 | } 21 | }, 22 | tasks: [ 23 | { 24 | label: 'create-redfish-pollers', 25 | taskName: 'Task.Pollers.CreateDefault' 26 | } 27 | ] 28 | }; 29 | -------------------------------------------------------------------------------- /lib/graphs/create-ipmi-obm-settings-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create IPMI OBM Settings', 7 | injectableName: 'Graph.Obm.Ipmi.CreateSettings', 8 | tasks: [ 9 | { 10 | label: 'create-ipmi-obm-settings', 11 | taskDefinition: { 12 | friendlyName: 'Create IPMI OBM settings', 13 | injectableName: 'Task.Obm.Ipmi.CreateSettings', 14 | implementsTask: 'Task.Base.Obm.Ipmi.CreateSettings', 15 | options: { 16 | ipmichannel: null, 17 | user: null, 18 | password: null 19 | }, 20 | properties: { } 21 | } 22 | } 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /lib/graphs/create-megaraid-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create RAID via Storcli', 7 | injectableName: 'Graph.Raid.Create.MegaRAID', 8 | options: { 9 | "bootstrap-rancher": { 10 | dockerFile: 'secure.erase.docker.tar.xz' 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'set-boot-pxe', 16 | taskName: 'Task.Obm.Node.PxeBoot', 17 | ignoreFailure: true 18 | }, 19 | { 20 | label: 'reboot', 21 | taskName: 'Task.Obm.Node.Reboot', 22 | waitOn: { 23 | 'set-boot-pxe': 'finished' 24 | } 25 | }, 26 | { 27 | label: 'bootstrap-rancher', 28 | taskName: 'Task.Linux.Bootstrap.Rancher', 29 | waitOn: { 30 | 'reboot': 'succeeded' 31 | } 32 | }, 33 | { 34 | label: 'create-raid', 35 | taskName: 'Task.Raid.Create.MegaRAID', 36 | waitOn: { 37 | 'bootstrap-rancher': 'succeeded' 38 | } 39 | }, 40 | { 41 | label: 'refresh-catalog-megaraid', 42 | taskName: 'Task.Catalog.megaraid', 43 | waitOn: { 44 | 'create-raid': 'succeeded' 45 | } 46 | }, 47 | { 48 | label: 'final-reboot', 49 | taskName: 'Task.Obm.Node.Reboot', 50 | waitOn: { 51 | 'refresh-catalog-megaraid': 'finished' 52 | } 53 | } 54 | ] 55 | }; 56 | -------------------------------------------------------------------------------- /lib/graphs/create-redfish-chassis-poller-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create Redfish Chassis Pollers', 7 | injectableName: 'Graph.Redfish.Chassis.Poller.Create', 8 | options: { 9 | defaults: { 10 | nodeId: null, 11 | pollers: [ 12 | { 13 | "type": "redfish", 14 | "pollInterval": 10000, 15 | "config": { 16 | "command": "thermal" 17 | } 18 | }, 19 | { 20 | "type": "redfish", 21 | "pollInterval": 10000, 22 | "config": { 23 | "command": "power" 24 | } 25 | } 26 | ] 27 | } 28 | }, 29 | tasks: [ 30 | { 31 | label: 'create-redfish-pollers', 32 | taskName: 'Task.Pollers.Redfish.CreateDefault' 33 | } 34 | ] 35 | }; 36 | -------------------------------------------------------------------------------- /lib/graphs/create-redfish-managers-poller-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create Redfish Managers Pollers', 7 | injectableName: 'Graph.Redfish.Managers.Poller.Create', 8 | options: { 9 | defaults: { 10 | nodeId: null, 11 | pollers: [ 12 | { 13 | "type": "redfish", 14 | "pollInterval": 10000, 15 | "config": { 16 | "command": "managers.logservices" 17 | } 18 | } 19 | ] 20 | } 21 | }, 22 | tasks: [ 23 | { 24 | label: 'create-redfish-pollers', 25 | taskName: 'Task.Pollers.CreateDefault' 26 | } 27 | ] 28 | }; 29 | -------------------------------------------------------------------------------- /lib/graphs/create-redfish-systems-poller-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create Redfish Systems Pollers', 7 | injectableName: 'Graph.Redfish.Systems.Poller.Create', 8 | options: { 9 | defaults: { 10 | nodeId: null, 11 | pollers: [ 12 | { 13 | "type": "redfish", 14 | "pollInterval": 10000, 15 | "config": { 16 | "command": "systems.logservices" 17 | } 18 | } 19 | ] 20 | } 21 | }, 22 | tasks: [ 23 | { 24 | label: 'create-redfish-pollers', 25 | taskName: 'Task.Pollers.CreateDefault' 26 | } 27 | ] 28 | }; 29 | -------------------------------------------------------------------------------- /lib/graphs/create-vbox-obm-settings-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Create VirtualBox OBM Settings', 7 | injectableName: 'Graph.Obm.Vbox.CreateSettings', 8 | tasks: [ 9 | { 10 | label: 'create-vbox-obm-settings', 11 | taskDefinition: { 12 | friendlyName: 'Create VirtualBox OBM settings', 13 | injectableName: 'Task.Obm.Vbox.CreateSettings', 14 | implementsTask: 'Task.Base.Obm.CreateSettings', 15 | options: { 16 | service: 'vbox-obm-service', 17 | config: {} 18 | }, 19 | properties: { 20 | obm: { 21 | type: 'virtualbox' 22 | } 23 | } 24 | } 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/delete-megaraid-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Delete RAID via Storcli', 7 | injectableName: 'Graph.Raid.Delete.MegaRAID', 8 | options: { 9 | "bootstrap-rancher": { 10 | dockerFile: 'secure.erase.docker.tar.xz' 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'set-boot-pxe', 16 | taskName: 'Task.Obm.Node.PxeBoot', 17 | ignoreFailure: true 18 | }, 19 | { 20 | label: 'reboot', 21 | taskName: 'Task.Obm.Node.Reboot', 22 | waitOn: { 23 | 'set-boot-pxe': 'finished' 24 | } 25 | }, 26 | { 27 | label: 'bootstrap-rancher', 28 | taskName: 'Task.Linux.Bootstrap.Rancher', 29 | waitOn: { 30 | 'reboot': 'succeeded' 31 | } 32 | }, 33 | { 34 | label: 'delete-raid', 35 | taskName: 'Task.Raid.Delete.MegaRAID', 36 | waitOn: { 37 | 'bootstrap-rancher': 'succeeded' 38 | } 39 | }, 40 | { 41 | label: 'refresh-catalog-megaraid', 42 | taskName: 'Task.Catalog.megaraid', 43 | waitOn: { 44 | 'delete-raid': 'succeeded' 45 | } 46 | }, 47 | { 48 | label: 'final-reboot', 49 | taskName: 'Task.Obm.Node.Reboot', 50 | waitOn: { 51 | 'refresh-catalog-megaraid': 'finished' 52 | } 53 | } 54 | ] 55 | }; 56 | -------------------------------------------------------------------------------- /lib/graphs/delete-volume-graph.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | friendlyName: 'Delete Volume', 5 | injectableName: 'Graph.Delete.Volume', 6 | options: { 7 | defaults: { 8 | username: null, 9 | password: null, 10 | volumeId: null, 11 | ipAddress: null 12 | } 13 | }, 14 | tasks: [ 15 | { 16 | label: 'delete-volume', 17 | taskName: 'Task.Delete.Volume' 18 | }, 19 | { 20 | label: 'dell-wsman-get-inventory', 21 | taskName: 'Task.Dell.Wsman.GetInventory', 22 | waitOn: { 23 | 'delete-volume': 'finished' 24 | }, 25 | ignoreFailure: true 26 | } 27 | ] 28 | }; 29 | -------------------------------------------------------------------------------- /lib/graphs/dell-configure-idrac-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Configure Dell Idrac", 7 | "injectableName": "Graph.Dell.Configure.Idrac", 8 | "options": { 9 | "set-iDRAC-ip": { 10 | action: 'setIdracIP', 11 | ip : null, 12 | netMask: null, 13 | gateway: null 14 | } 15 | }, 16 | "tasks": [ 17 | { 18 | "label": "set-iDRAC-ip", 19 | taskName: 'Task.Dell.Racadm.Control' 20 | } 21 | ] 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /lib/graphs/dell-onie-switch-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018, Dell EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Dell Switch Onie Discovery", 7 | "injectableName": "Graph.Switch.Discovery.Dell.Onie", 8 | "tasks": [ 9 | { 10 | "label": "catalog-switch", 11 | "taskDefinition": { 12 | "friendlyName": "Catalog Dell Switch", 13 | "injectableName": "Task.Inline.Catalog.Switch.Dell", 14 | "implementsTask": "Task.Base.Linux.Commands", 15 | "options": { 16 | "commands": [ 17 | { 18 | "downloadUrl": "{{ api.templates }}/dell-switch-onie-catalog.sh?nodeId={{ task.nodeId }}", 19 | "catalog": { "format": "json", "source": "onieSysinfo" } 20 | } 21 | ] 22 | }, 23 | "properties": {} 24 | } 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/dell-perccli-megaraid-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Dell perccli Catalog", 7 | "injectableName": "Graph.Dell.perccli.Catalog", 8 | "options": { 9 | "bootstrap-rancher": { 10 | dockerFile: 'secure.erase.docker.tar.xz' 11 | } 12 | }, 13 | "tasks": [ 14 | { 15 | "ignoreFailure": true, 16 | "label": "set-boot-pxe", 17 | "taskName": "Task.Obm.Node.PxeBoot" 18 | }, 19 | { 20 | "label": "reboot-start", 21 | "taskName": "Task.Obm.Node.Reboot", 22 | "waitOn": { 23 | "set-boot-pxe": "finished" 24 | } 25 | }, 26 | { 27 | "label": "bootstrap-rancher", 28 | "taskName": "Task.Linux.Bootstrap.Rancher", 29 | "waitOn": { 30 | "reboot-start": "succeeded" 31 | } 32 | }, 33 | { 34 | "ignoreFailure": true, 35 | "label": "catalog-perccli", 36 | "taskName": "Task.Catalog.perccli", 37 | "waitOn": { 38 | "bootstrap-rancher": "succeeded" 39 | } 40 | }, 41 | { 42 | "label": "shell-reboot", 43 | "taskName": "Task.ProcShellReboot", 44 | "waitOn": { 45 | "catalog-perccli": "finished" 46 | } 47 | } 48 | ] 49 | }; 50 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-disable-vtx-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Racadm Disable VTx Graph', 7 | injectableName: 'Graph.Dell.Disable.VTx', 8 | options: { 9 | 'dell-racadm-disable-VTx': { 10 | forceReboot: true, 11 | serverUsername: null, 12 | serverPassword: null, 13 | serverFilePath: null, 14 | action: 'disableVTx' 15 | }, 16 | 'when-require-refresh-catalog':{ 17 | refresh: "true", 18 | when: '{{options.refresh}}' 19 | } 20 | }, 21 | tasks: [ 22 | { 23 | label: 'dell-racadm-disable-VTx', 24 | taskName: 'Task.Dell.Racadm.Control' 25 | }, 26 | { 27 | label: 'when-require-refresh-catalog', 28 | taskName: 'Task.Evaluate.Condition', 29 | waitOn: { 30 | 'dell-racadm-disable-VTx': 'succeeded' 31 | } 32 | }, 33 | { 34 | label: 'refresh-racadm-catalog', 35 | taskName: 'Task.Dell.Racadm.GetConfigCatalog', 36 | waitOn: { 37 | 'when-require-refresh-catalog': 'succeeded' 38 | } 39 | }, 40 | { 41 | label: 'noop', 42 | taskName: 'Task.noop', 43 | waitOn: { 44 | 'when-require-refresh-catalog': 'failed' 45 | } 46 | } 47 | ] 48 | }; 49 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-enable-vtx-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Racadm Enable VTx Graph', 7 | injectableName: 'Graph.Dell.Enable.VTx', 8 | options: { 9 | 'dell-racadm-enable-VTx': { 10 | forceReboot: true, 11 | serverUsername: null, 12 | serverPassword: null, 13 | serverFilePath: null, 14 | action: 'enableVTx' 15 | }, 16 | 'when-require-refresh-catalog':{ 17 | refresh: "true", 18 | when: '{{options.refresh}}' 19 | } 20 | }, 21 | tasks: [ 22 | { 23 | label: 'dell-racadm-enable-VTx', 24 | taskName: 'Task.Dell.Racadm.Control' 25 | }, 26 | { 27 | label: 'when-require-refresh-catalog', 28 | taskName: 'Task.Evaluate.Condition', 29 | waitOn: { 30 | 'dell-racadm-enable-VTx': 'succeeded' 31 | } 32 | }, 33 | { 34 | label: 'refresh-racadm-catalog', 35 | taskName: 'Task.Dell.Racadm.GetConfigCatalog', 36 | waitOn: { 37 | 'when-require-refresh-catalog': 'succeeded' 38 | } 39 | }, 40 | { 41 | label: 'noop', 42 | taskName: 'Task.noop', 43 | waitOn: { 44 | 'when-require-refresh-catalog': 'failed' 45 | } 46 | } 47 | ] 48 | }; 49 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-get-bios-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Racadm Get BIOS Graph', 7 | injectableName: 'Graph.Dell.Racadm.GetBIOS', 8 | options: { 9 | defaults: { 10 | serverUsername: null, 11 | serverPassword: null, 12 | serverFilePath: null 13 | } 14 | }, 15 | tasks: [ 16 | { 17 | label: 'dell-racadm-get-bios', 18 | taskName: 'Task.Dell.Racadm.GetBIOS' 19 | } 20 | ] 21 | }; 22 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-get-config-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Racadm Get Config Catalog Graph', 7 | injectableName: 'Graph.Dell.Racadm.GetConfigCatalog', 8 | option: {}, 9 | tasks: [ 10 | { 11 | label: 'dell-racadm-get-config-catalog', 12 | taskName: 'Task.Dell.Racadm.GetConfigCatalog' 13 | } 14 | ] 15 | }; 16 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-get-firmware-list-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc 2 | 'use strict'; 3 | 4 | module.exports = { 5 | friendlyName: 'Dell Racadm Get Firmware List Catalog Graph', 6 | injectableName: 'Graph.Dell.Racadm.GetFirmwareListCatalog', 7 | options: { 8 | "dell-racadm-get-firmware-list-catalog": { 9 | "updateExistingCatalog": true 10 | } 11 | }, 12 | tasks: [ 13 | { 14 | label: 'dell-racadm-get-firmware-list-catalog', 15 | taskName: 'Task.Dell.Racadm.GetFirmwareListCatalog' 16 | } 17 | ] 18 | }; 19 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-reset-components-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, DELL EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Racadm Reset Components Graph', 7 | injectableName: 'Graph.Dell.Racadm.ResetComponents', 8 | options: { 9 | defaults: { 10 | components: [] 11 | } 12 | }, 13 | tasks: [{ 14 | label: 'dell-racadm-Reset-Components', 15 | taskDefinition: { 16 | friendlyName: 'dell racadm reset components', 17 | injectableName: 'Task.Dell.Racadm.ResetComponents', 18 | implementsTask: 'Task.Base.Dell.Racadm.Control', 19 | optionsSchema: 'dell-racadm-control.json', 20 | options: { 21 | action: 'resetComponents' 22 | }, 23 | properties: {} 24 | } 25 | }] 26 | }; 27 | 28 | -------------------------------------------------------------------------------- /lib/graphs/dell-racadm-set-bios-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Racadm Set BIOS Graph', 7 | injectableName: 'Graph.Dell.Racadm.SetBIOS', 8 | options: { 9 | defaults: { 10 | serverUsername: null, 11 | serverPassword: null, 12 | serverFilePath: null 13 | } 14 | }, 15 | tasks: [ 16 | { 17 | label: 'dell-racadm-set-bios', 18 | taskName: 'Task.Dell.Racadm.SetBIOS' 19 | } 20 | ] 21 | }; 22 | -------------------------------------------------------------------------------- /lib/graphs/dell-switch-config-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018, Dell EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Dell Switch configuration", 7 | "injectableName": "Graph.Switch.Dell.Configuration", 8 | "tasks": [ 9 | { 10 | "label": "config-switch", 11 | "taskDefinition": { 12 | "friendlyName": "Dell Switch configuration", 13 | "injectableName": "Task.Inline.Switch.Dell.Configuration", 14 | "implementsTask": "Task.Base.Linux.Commands", 15 | "options": { 16 | "mgmtPort": "1/1", 17 | "username": "rackhd", 18 | "userPassword": "RackHDRocks1!", 19 | "adminPassword": "RackHDRocks1!", 20 | "hostname": "rackhd", 21 | "ipAddr": "dhcp", 22 | "commands": [ 23 | { 24 | "downloadUrl": "{{ api.templates }}/dell-switch-basic-config.exp?nodeId={{ task.nodeId }}", 25 | } 26 | ] 27 | }, 28 | "properties": {} 29 | } 30 | } 31 | ] 32 | }; 33 | -------------------------------------------------------------------------------- /lib/graphs/dell-switch-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018, Dell EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Dell Switch Bmp Discovery", 7 | "injectableName": "Graph.Switch.Discovery.Dell.Bmp", 8 | "tasks": [ 9 | { 10 | "label": "catalog-switch", 11 | "taskDefinition": { 12 | "friendlyName": "Catalog Dell Switch", 13 | "injectableName": "Task.Inline.Catalog.Switch.Dell", 14 | "implementsTask": "Task.Base.Linux.Commands", 15 | "options": { 16 | "commands": [ 17 | { 18 | "downloadUrl": "{{ api.templates }}/dell-switch-catalog.sh?nodeId={{ task.nodeId }}", 19 | "catalog": { "format": "json", "source": "sysinfo" } 20 | } 21 | ] 22 | }, 23 | "properties": {} 24 | } 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/dell-switch-nos-install-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018, Dell EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Dell Switch Nos installation", 7 | "injectableName": "Graph.Switch.Dell.Nos.Install", 8 | "tasks": [ 9 | { 10 | "label": "install-os", 11 | "taskDefinition": { 12 | "friendlyName": "Dell Switch Nos install", 13 | "injectableName": "Task.Inline.Switch.Dell.Nos.Install", 14 | "implementsTask": "Task.Base.Linux.Commands", 15 | "options": { 16 | "nosImageUri": "{{ file.server }}/PKGS_OS10-Enterprise-10.3.1E.121-installer-x86_64.bin", 17 | "commands": [ 18 | { 19 | "downloadUrl": "{{ api.templates }}/dell-switch-nos-install.sh?nodeId={{ task.nodeId }}", 20 | } 21 | ] 22 | }, 23 | "properties": {} 24 | } 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-add-hotspare-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Add Hotspare', 7 | injectableName: 'Graph.Dell.Wsman.Add.Hotspare', 8 | options: { 9 | defaults: { 10 | username: null, 11 | password: null, 12 | volumeId: null, 13 | hotspareType: 'ghs', 14 | ipAddress: null 15 | } 16 | }, 17 | tasks: [ 18 | { 19 | label: 'dell-wsman-add-hotspare-getXml', 20 | taskName: 'Task.Dell.Wsman.Add.Hotspare.GetXml' 21 | }, 22 | { 23 | label: 'dell-wsman-add-hotspare-updateXml', 24 | taskName: 'Task.Dell.Wsman.Add.Hotspare.UpdateXml', 25 | waitOn: { 26 | 'dell-wsman-add-hotspare-getXml': 'succeeded' 27 | } 28 | }, 29 | { 30 | label: 'dell-wsman-RAID', 31 | taskName: 'Task.Dell.Wsman.RAID', 32 | waitOn: { 33 | 'dell-wsman-add-hotspare-updateXml': 'succeeded' 34 | } 35 | }, 36 | { 37 | label: 'dell-wsman-get-inventory', 38 | taskName: 'Task.Dell.Wsman.GetInventory', 39 | waitOn: { 40 | 'dell-wsman-RAID': 'succeeded' 41 | }, 42 | ignoreFailure: true 43 | } 44 | ] 45 | }; 46 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-add-volume-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Add Volume', 7 | injectableName: 'Graph.Dell.Wsman.Add.Volume', 8 | options: { 9 | defaults: { 10 | enable: null, 11 | raidLevel: 0, 12 | stripeSize: 128, 13 | writePolicy: "WriteBack", 14 | shutdownType: 0, 15 | verifySSL: false, 16 | _taskTimeout: 900000, 17 | domain: 'wsman', 18 | removeXmlFile: true, 19 | ipAddress: "", 20 | username: "", 21 | password: "", 22 | } 23 | }, 24 | tasks: [ 25 | { 26 | label: 'dell-wsman-add-volume-getXml', 27 | taskName: 'Task.Dell.Wsman.Add.Volume.getXml' 28 | }, 29 | { 30 | label: 'dell-wsman-add-volume-updateXml', 31 | taskName: 'Task.Dell.Wsman.Add.Volume.UpdateXml', 32 | waitOn: { 33 | 'dell-wsman-add-volume-getXml': 'finished' 34 | } 35 | }, 36 | { 37 | label: 'dell-wsman-RAID', 38 | taskName: 'Task.Dell.Wsman.RAID', 39 | waitOn: { 40 | 'dell-wsman-add-volume-updateXml': 'finished' 41 | } 42 | }, 43 | { 44 | label: 'dell-wsman-get-inventory', 45 | taskName: 'Task.Dell.Wsman.GetInventory', 46 | waitOn: { 47 | 'dell-wsman-RAID': 'finished' 48 | }, 49 | ignoreFailure: true 50 | } 51 | ] 52 | }; 53 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-config-services-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Config Services', 7 | injectableName: 'Graph.Dell.Wsman.ConfigServices', 8 | options: { 9 | defaults: { 10 | configServer: 'http://127.0.0.1:9600' 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'dell-wsman-config-services', 16 | taskName: 'Task.Dell.Wsman.Config.Services' 17 | } 18 | ] 19 | }; 20 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-configure-bios-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell WSMAN Configure BIOS', 7 | injectableName: 'Graph.Dell.Wsman.ConfigureBios', 8 | options: { 9 | defaults: { 10 | attributes: null, 11 | biosBootSequenceOrder: [''], 12 | hddSequenceOrder: [''], 13 | enableBootDevices: [''], 14 | disableBootDevices: [''], 15 | rebootJobType: 1 16 | } 17 | }, 18 | tasks: [ 19 | { 20 | label: 'dell-wsman-configure-bios', 21 | taskName: 'Task.Dell.Wsman.ConfigureBios' 22 | }, 23 | { 24 | label: 'dell-wsman-get-bios', 25 | taskName: 'Task.Dell.Wsman.GetBios', 26 | waitOn: { 27 | 'dell-wsman-configure-bios': 'succeeded' 28 | } 29 | } 30 | ] 31 | }; 32 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-create-repo-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell WSMAN Create Firmware Repo Graph', 7 | injectableName: 'Graph.Dell.Wsman.Create.Repo', 8 | options: { 9 | defaults: { 10 | catalogFilePath : null, 11 | targetFilePath : null, 12 | updates: null 13 | } 14 | }, 15 | tasks: [ 16 | { 17 | label: 'dell-wsman-create-repo', 18 | taskName: 'Task.Dell.Wsman.Create.Repo' 19 | } 20 | ] 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-delete-volume-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Delete Volume', 7 | injectableName: 'Graph.Dell.Wsman.Delete.Volume', 8 | options: { 9 | defaults: { 10 | enable: null, 11 | shutdownType: 0, 12 | verifySSL: false, 13 | _taskTimeout: 900000, 14 | domain: 'wsman', 15 | removeXmlFile: true, 16 | ipAddress: "", 17 | username: "", 18 | password: "" 19 | } 20 | }, 21 | tasks: [ 22 | { 23 | label: 'dell-wsman-delete-volume-getXml', 24 | taskName: 'Task.Dell.Wsman.Delete.Volume.GetXml' 25 | }, 26 | { 27 | label: 'dell-wsman-delete-volume-updateXml', 28 | taskName: 'Task.Dell.Wsman.Delete.Volume.UpdateXml', 29 | waitOn: { 30 | 'dell-wsman-delete-volume-getXml': 'finished' 31 | } 32 | }, 33 | { 34 | label: 'dell-wsman-RAID', 35 | taskName: 'Task.Dell.Wsman.RAID', 36 | waitOn: { 37 | 'dell-wsman-delete-volume-updateXml': 'finished' 38 | } 39 | }, 40 | { 41 | label: 'dell-wsman-get-inventory', 42 | taskName: 'Task.Dell.Wsman.GetInventory', 43 | waitOn: { 44 | 'dell-wsman-RAID': 'finished' 45 | }, 46 | ignoreFailure: true 47 | } 48 | ] 49 | }; 50 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, DELL, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Discovery', 7 | injectableName: 'Graph.Dell.Wsman.Discovery', 8 | options: { 9 | defaults: { 10 | ranges:[], 11 | inventory: false, 12 | deviceTypesToDiscover: [] 13 | } 14 | }, 15 | tasks: [ 16 | { 17 | label: 'dell-wsman-discovery', 18 | taskName: 'Task.Dell.Wsman.Discovery' 19 | } 20 | ] 21 | }; 22 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-download-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell WSMAN Downlaod Catalog Graph', 7 | injectableName: 'Graph.Dell.Wsman.Download.Catalog', 8 | options: { 9 | defaults: { 10 | fileName: null, 11 | fileURL: null, 12 | targetLocation: null 13 | } 14 | }, 15 | tasks: [ 16 | { 17 | label: 'dell-wsman-downaload-catalog', 18 | taskName: 'Task.Dell.Wsman.Download.Catalog' 19 | } 20 | ] 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-export-scp-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell WSMAN Export SCP', 7 | injectableName: 'Graph.Dell.Wsman.Export.SCP', 8 | options: { 9 | defaults: { 10 | serverIP: null, 11 | serverUsername: null, 12 | serverPassword: null, 13 | shareType: null, 14 | shareAddress: null, 15 | shareName: null, 16 | fileName: null 17 | } 18 | }, 19 | tasks: [ 20 | { 21 | label: 'dell-wsman-export-scp', 22 | taskName: 'Task.Dell.Wsman.Export.SCP' 23 | } 24 | ] 25 | }; 26 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-get-bios-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, DELL, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Get Bios', 7 | injectableName: 'Graph.Dell.Wsman.GetBios', 8 | "options": {}, 9 | tasks: [ 10 | { 11 | label: 'dell-wsman-get-bios', 12 | taskName: 'Task.Dell.Wsman.GetBios' 13 | } 14 | ] 15 | }; 16 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-get-inventory-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, DELL, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Get Inventory', 7 | injectableName: 'Graph.Dell.Wsman.GetInventory', 8 | options: { 9 | defaults: { 10 | callback: true 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'dell-wsman-get-inventory', 16 | taskName: 'Task.Dell.Wsman.GetInventory' 17 | } 18 | ] 19 | }; 20 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-get-systemcomponents-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell WSMAN Get System Configuration Components Catalog Graph', 7 | injectableName: 'Graph.Dell.Wsman.GetSystemComponentsCatalog', 8 | options: { 9 | defaults: { 10 | shutdownType: 0, 11 | componentNames: [], 12 | } 13 | }, 14 | tasks: [ 15 | { 16 | label: 'dell-wsman-get-systemcomponents', 17 | taskName: 'Task.Dell.Wsman.GetSystemConfigComponents' 18 | } 19 | ] 20 | }; 21 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-get-trap-config-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, DELL, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Get Trap Config', 7 | injectableName: 'Graph.Dell.Wsman.GetTrapConfig', 8 | options: { 9 | defaults: { 10 | target: null 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'dell-wsman-get-trap-config', 16 | taskName: 'Task.Dell.Wsman.GetTrapConfig' 17 | } 18 | ] 19 | }; 20 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-import-scp-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell WSMAN Import SCP', 7 | injectableName: 'Graph.Dell.Wsman.Import.SCP', 8 | options: { 9 | defaults: { 10 | serverIP: null, 11 | serverUsername: null, 12 | serverPassword: null, 13 | shareType: null, 14 | shareAddress: null, 15 | shareName: null, 16 | fileName: null, 17 | shutdownType: null, 18 | componentNames: null 19 | } 20 | }, 21 | tasks: [ 22 | { 23 | label: 'dell-wsman-import-scp', 24 | taskName: 'Task.Dell.Wsman.Import.SCP' 25 | } 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-os-deployment-create-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell wsman OS Deployment Create ISO Graph', 7 | injectableName: 'Graph.Dell.Wsman.Os.Create', 8 | options: { 9 | defaults: { 10 | destinationDir: null, 11 | destinationFileName: null, 12 | fileName: null, 13 | kickStartFileName: null, 14 | ksLocation: null, 15 | shareAddress: null, 16 | sourceDir: null 17 | } 18 | }, 19 | tasks: [ 20 | { 21 | label: 'dell-wsman-os-create', 22 | taskName: 'Task.Dell.Wsman.Os.Create' 23 | } 24 | ] 25 | }; 26 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-os-deployment-deploy-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell wsman OS Deploy ISO Graph', 7 | injectableName: 'Graph.Dell.Wsman.Os.Deploy', 8 | options: { 9 | defaults: { 10 | 11 | hypervisorType: null, 12 | hypervisorVersion: null, 13 | 14 | isoFileShare: { 15 | address: null, 16 | description: null, 17 | fileName: null, 18 | name: null, 19 | path: null, 20 | scriptDirectory: null, 21 | scriptName: null, 22 | type: null, 23 | passwordCredential: { 24 | domain: null, 25 | password: null, 26 | username: null 27 | }, 28 | }, 29 | serverAddress: null, 30 | userName: null, 31 | password: null 32 | } 33 | }, 34 | tasks: [ 35 | { 36 | label: 'dell-wsman-os-deploy', 37 | taskName: 'Task.Dell.Wsman.Os.Deploy' 38 | } 39 | ] 40 | 41 | }; 42 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-powerthermal-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell wsman PowerThermal Graph', 7 | injectableName: 'Graph.Dell.Wsman.Powerthermal', 8 | options: { 9 | defaults: { 10 | 11 | powerCap : null, 12 | enableCapping : null 13 | 14 | } 15 | }, 16 | tasks: [ 17 | { 18 | label: 'dell-wsman-powerthermal-capping', 19 | taskName: 'Task.Dell.Wsman.Powerthermal' 20 | } 21 | ] 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-reset-components-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Reset Components Graph', 7 | injectableName: 'Graph.Dell.Wsman.Reset.Components', 8 | options: { 9 | defaults: { 10 | components: null 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'dell-wsman-reset-components', 16 | taskName: 'Task.Dell.Wsman.Reset.Components' 17 | } 18 | ] 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-simple-update-firmware-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell Wsman Simple Update Firmware Graph', 7 | injectableName: 'Graph.Dell.Wsman.Simple.Update.Firmware', 8 | options: { 9 | defaults: { 10 | imageURI: null 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'dell-wsman-simple-update-firmware', 16 | taskName: 'Task.Dell.Wsman.Simple.Update.Firmware' 17 | } 18 | ] 19 | }; 20 | -------------------------------------------------------------------------------- /lib/graphs/dell-wsman-update-firmware-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Dell wsman Update Firmware Graph', 7 | injectableName: 'Graph.Dell.Wsman.Update.Firmware', 8 | options: { 9 | 'dell-wsman-update-firmware': { 10 | shareFolderAddress: null 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'dell-wsman-update-firmware', 16 | taskName: 'Task.Dell.Wsman.Update.Firmware' 17 | } 18 | ] 19 | }; 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /lib/graphs/discovery-mgmt-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Mgmt Discovery', 7 | injectableName: 'Graph.Mgmt.Discovery', 8 | tasks: [ 9 | { 10 | label: 'catalog-mgmt-bmc', 11 | taskName: 'Task.Catalog.Mgmt.bmc', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'catalog-mgmt-lldp', 16 | taskName: 'Task.Catalog.Local.LLDP', 17 | waitOn: { 18 | 'catalog-mgmt-bmc': 'finished' 19 | }, 20 | ignoreFailure: true 21 | }, 22 | { 23 | label: 'catalog-mgmt-dmi', 24 | taskName: 'Task.Catalog.Local.DMI', 25 | waitOn: { 26 | 'catalog-mgmt-lldp': 'finished' 27 | }, 28 | ignoreFailure: true 29 | }, 30 | { 31 | label: 'node-discovered-alert', 32 | taskName: 'Task.Alert.Node.Discovered', 33 | waitOn: { 34 | 'catalog-mgmt-dmi': 'finished' 35 | } 36 | } 37 | 38 | ] 39 | }; 40 | -------------------------------------------------------------------------------- /lib/graphs/docker-ps-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Docker Container List", 7 | "injectableName": "Graph.Docker.ListContainers", 8 | "options": { 9 | "docker-list": { 10 | "exec": [ 11 | {"method": "list", "args": [{"all": 1}], 12 | "emit": {"docker-reconciler": {"type": "containers", "ref": 0}}} 13 | ] 14 | } 15 | }, 16 | "tasks": [ 17 | { 18 | "label": "docker-list", 19 | "taskName": 'Task.Docker', 20 | } 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /lib/graphs/docker-restart-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Docker Restart", 7 | "injectableName": "Graph.Docker.Restart", 8 | "options": { 9 | "docker-restart": { 10 | "exec": [ 11 | {"method": "restart", "args": ["{{options.containerId}}", {}]} 12 | ], 13 | "containerId": "$containerId" 14 | } 15 | }, 16 | "tasks": [ 17 | { 18 | "label": "docker-restart", 19 | "taskName": "Task.Docker" 20 | } 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /lib/graphs/docker-run-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Docker Run", 7 | "injectableName": "Graph.Docker.Run", 8 | "options": { 9 | "docker-run": { 10 | "exec": [ 11 | {"method": "pull", "args": ["{{options.image}}", {}], "then": [ 12 | {"method": "run", "args": ["{{options.image}}", {}]} 13 | ]} 14 | ], 15 | "image": "ubuntu:latest" 16 | } 17 | }, 18 | "tasks": [ 19 | { 20 | "label": "docker-run", 21 | "taskName": "Task.Docker" 22 | } 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /lib/graphs/docker-service-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Docker Service", 7 | "injectableName": "Graph.Service.Docker", 8 | "serviceGraph": true, 9 | "options": { 10 | "docker-reconciler": { 11 | schedulerOverrides: { 12 | timeout: -1 13 | } 14 | } 15 | }, 16 | "tasks": [ 17 | { 18 | "label": "docker-reconciler", 19 | "taskName": "Task.Docker.Reconciler" 20 | } 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /lib/graphs/docker-start-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Docker Start", 7 | "injectableName": "Graph.Docker.Start", 8 | "options": { 9 | "docker-start": { 10 | "exec": [ 11 | {"method": "start", "args": ["{{options.containerId}}", {}]} 12 | ], 13 | "containerId": "$containerId" 14 | } 15 | }, 16 | "tasks": [ 17 | { 18 | "label": "docker-start", 19 | "taskName": "Task.Docker" 20 | } 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /lib/graphs/docker-stop-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Docker Stop", 7 | "injectableName": "Graph.Docker.Stop", 8 | "options": { 9 | "docker-stop": { 10 | "exec": [ 11 | {"method": "stop", "args": ["{{options.containerId}}", {}]} 12 | ], 13 | "containerId": "$containerId" 14 | } 15 | }, 16 | "tasks": [ 17 | { 18 | "label": "docker-stop", 19 | "taskName": "Task.Docker" 20 | } 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /lib/graphs/emc-compose-system-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'EMC Compose System Graph', 7 | injectableName: 'Graph.Emc.Compose.System', 8 | options: { 9 | defaults: { 10 | endpoints: null, 11 | name: null, 12 | action: 'compose' // 'compose', 'recompose', 'destroy' 13 | } 14 | }, 15 | tasks: [ 16 | { 17 | label: 'emc-compose-system', 18 | taskName: 'Task.Emc.Compose.System' 19 | }, 20 | { 21 | label: 'create-redfish-pollers', 22 | taskDefinition: { 23 | friendlyName: 'Create Default Pollers', 24 | injectableName: 'Task.Inline.Pollers.Redfish.CreateDefault', 25 | implementsTask: 'Task.Base.Pollers.Redfish.CreateDefault', 26 | properties: {}, 27 | options: { 28 | pollers: [ 29 | { 30 | "type": "redfish", 31 | "pollInterval": 10000, 32 | "config": { 33 | "command": "systems.logservices" 34 | } 35 | } 36 | ] 37 | } 38 | }, 39 | waitOn: { 40 | 'emc-compose-system': 'succeeded' 41 | } 42 | } 43 | ] 44 | }; 45 | -------------------------------------------------------------------------------- /lib/graphs/emc-redfish-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'EMC Redfish Catalog', 7 | injectableName: 'Graph.Emc.Redfish.Catalog', 8 | options: {}, 9 | tasks: [ 10 | { 11 | label: 'emc-redfish-catalog', 12 | taskName: 'Task.Emc.Redfish.Catalog' 13 | } 14 | ] 15 | }; 16 | -------------------------------------------------------------------------------- /lib/graphs/esxcli-driver-version-commands-graph.js: -------------------------------------------------------------------------------- 1 | //Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'ESXi Driver Version Retrieval', 7 | injectableName: 'Graph.ESXi.Driver.Version.Retrieval', 8 | options: { 9 | "versionRetrieval": { 10 | "updateExistingCatalog": true 11 | }, 12 | defaults: { 13 | commands: null 14 | } 15 | }, 16 | tasks: [ 17 | { 18 | label: 'versionRetrieval', 19 | taskDefinition: { 20 | injectableName: "Task.Run.Ssh", 21 | friendlyName: "Ssh and run Esxi commands", 22 | implementsTask: 'Task.Base.Ssh.Catalog', 23 | options: { 24 | commands: null 25 | }, 26 | properties: {} 27 | } 28 | } 29 | ] 30 | }; 31 | -------------------------------------------------------------------------------- /lib/graphs/examples/bootstrap-ubuntu-mocks-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'DEBUG Bootstrap Ubuntu Mocks', 7 | injectableName: 'Graph.BootstrapUbuntuMocks', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'bootstrap-ubuntu', 23 | taskName: 'Task.Linux.Bootstrap.Ubuntu', 24 | waitOn: { 25 | 'reboot': 'succeeded' 26 | }, 27 | optionOverrides: { 28 | overlayfsFile: 'overlayfs_all_files.trusty.MOCKS.cpio.gz' 29 | } 30 | } 31 | ] 32 | }; 33 | -------------------------------------------------------------------------------- /lib/graphs/examples/bootstrap-ubuntu-overrides-graph-example.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Bootstrap Ubuntu', 7 | injectableName: 'Graph.BootstrapUbuntu', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'bootstrap-ubuntu', 23 | taskName: 'Task.Linux.Bootstrap.Ubuntu', 24 | waitOn: { 25 | 'reboot': 'succeeded' 26 | }, 27 | optionOverrides: { 28 | overlayfsFile: 'overlayfs_all_files.trusty.MOCKS.cpio.gz' 29 | } 30 | } 31 | ] 32 | }; 33 | -------------------------------------------------------------------------------- /lib/graphs/examples/iPDU-firmware-update-by-sftp-graph.js: -------------------------------------------------------------------------------- 1 | //Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | friendlyName: "iPDU firmware update by Sftp", 7 | injectableName: "Graph.FirmwareUpdateIPDU", 8 | tasks: [ 9 | { 10 | label: 'sftp-upload-firmware', 11 | taskDefinition: { 12 | injectableName: "Task.SftpFile", 13 | friendlyName: "sftp upload firmware of iPDU", 14 | implementsTask: "Task.Base.Sftp", 15 | options: { 16 | isPDU: "true", 17 | fileSource: null, 18 | fileDestination: null 19 | }, 20 | properties: {} 21 | } 22 | } 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /lib/graphs/generate-sku-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Generate SKU', 7 | injectableName: 'Graph.GenerateSku', 8 | tasks: [ 9 | { 10 | label: 'generate-sku', 11 | taskName: 'Task.Catalog.GenerateSku' 12 | } 13 | ] 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/graphs/generate-tag-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Generate Tag', 7 | injectableName: 'Graph.GenerateTags', 8 | options: { 9 | "generate-tag": { 10 | nodeIds: null 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'generate-tag', 16 | taskName: 'Task.Catalog.GenerateTag' 17 | } 18 | ] 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /lib/graphs/get-switch-config-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 'use strict'; 3 | 4 | module.exports = { 5 | friendlyName: 'Get Switch Config Graph', 6 | injectableName: 'Graph.Get.Switch.Config', 7 | options: { 8 | defaults: { 9 | endpoint: { 10 | ipaddress: null, 11 | username: null, 12 | password: null, 13 | switchType: null 14 | } 15 | }, 16 | 'Get-switch-config': { 17 | loginToken : 'Bearer {{ context.outputs["On-network-login"].restData.body.token }}' 18 | } 19 | }, 20 | tasks: [ 21 | { 22 | label: 'On-network-login', 23 | taskName: 'Task.Post.Login.On-network' 24 | }, 25 | { 26 | label: 'Get-switch-config', 27 | taskName: 'Task.Get.Switch.Config', 28 | waitOn: { 29 | 'On-network-login': 'succeeded' 30 | } 31 | } 32 | ] 33 | }; 34 | -------------------------------------------------------------------------------- /lib/graphs/get-switch-version-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 'use strict'; 3 | 4 | module.exports = { 5 | friendlyName: 'Get Switch Version Graph', 6 | injectableName: 'Graph.Get.Switch.Version', 7 | options: { 8 | defaults: { 9 | endpoint: { 10 | ipaddress: null, 11 | username: null, 12 | password: null, 13 | switchType: null 14 | } 15 | }, 16 | 'Get-switch-version': { 17 | loginToken : 'Bearer {{ context.outputs["On-network-login"].restData.body.token }}' 18 | } 19 | 20 | }, 21 | tasks: [ 22 | { 23 | label: 'On-network-login', 24 | taskName: 'Task.Post.Login.On-network' 25 | }, 26 | { 27 | label: 'Get-switch-version', 28 | taskName: 'Task.Get.Switch.Version' , 29 | waitOn: { 30 | 'On-network-login': 'succeeded' 31 | } 32 | } 33 | ] 34 | }; 35 | -------------------------------------------------------------------------------- /lib/graphs/install-centos-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015-2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install CentOS', 7 | injectableName: 'Graph.InstallCentOS', 8 | options: { 9 | 'install-os': { 10 | version: null, 11 | _taskTimeout: 3600000 // 1hour 12 | }, 13 | 'rackhd-callback-notification-wait': { 14 | _taskTimeout: 1200000 //20 minutes 15 | } 16 | }, 17 | tasks: [ 18 | { 19 | label: 'set-boot-pxe', 20 | taskName: 'Task.Obm.Node.PxeBoot', 21 | ignoreFailure: true 22 | }, 23 | { 24 | label: 'reboot', 25 | taskName: 'Task.Obm.Node.Reboot', 26 | waitOn: { 27 | 'set-boot-pxe': 'finished' 28 | } 29 | }, 30 | { 31 | label: 'install-os', 32 | taskName: 'Task.Os.Install.CentOS', 33 | waitOn: { 34 | 'reboot': 'succeeded' 35 | } 36 | }, 37 | { 38 | label: 'rackhd-callback-notification-wait', 39 | taskName: 'Task.Wait.Notification', 40 | waitOn: { 41 | 'install-os': 'succeeded' 42 | } 43 | } 44 | ] 45 | }; 46 | -------------------------------------------------------------------------------- /lib/graphs/install-coreos-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install CoreOS', 7 | injectableName: 'Graph.InstallCoreOS', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'install-coreos', 23 | taskName: 'Task.Os.Install.CoreOS', 24 | waitOn: { 25 | 'reboot': 'succeeded' 26 | } 27 | } 28 | ] 29 | }; 30 | -------------------------------------------------------------------------------- /lib/graphs/install-debian-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015-2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install Debian/Ubuntu', 7 | injectableName: 'Graph.InstallDebian', 8 | options: { 9 | }, 10 | tasks: [ 11 | { 12 | label: 'set-boot-pxe', 13 | taskName: 'Task.Obm.Node.PxeBoot', 14 | ignoreFailure: true 15 | }, 16 | { 17 | label: 'reboot', 18 | taskName: 'Task.Obm.Node.Reboot', 19 | waitOn: { 20 | 'set-boot-pxe': 'finished' 21 | } 22 | }, 23 | { 24 | label: 'install-debian', 25 | taskName: 'Task.Os.Install.Debian', 26 | waitOn: { 27 | 'reboot': 'succeeded' 28 | } 29 | }, 30 | { 31 | label: 'rackhd-callback-notification-wait', 32 | taskName: 'Task.Wait.Notification', 33 | waitOn: { 34 | 'install-debian': 'succeeded' 35 | } 36 | } 37 | ] 38 | }; 39 | 40 | -------------------------------------------------------------------------------- /lib/graphs/install-photon-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015-2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install Photon OS', 7 | injectableName: 'Graph.InstallPhotonOS', 8 | options: { 9 | 'install-os': { 10 | version: null, 11 | schedulerOverrides: { 12 | timeout: 3600000 // 1 hour 13 | } 14 | }, 15 | 'rackhd-callback-notification-wait': { 16 | schedulerOverrides: { 17 | timeout: 1200000 // 20 minutes 18 | } 19 | } 20 | }, 21 | tasks: [ 22 | { 23 | label: 'set-boot-pxe', 24 | taskName: 'Task.Obm.Node.PxeBoot', 25 | ignoreFailure: true 26 | }, 27 | { 28 | label: 'reboot', 29 | taskName: 'Task.Obm.Node.Reboot', 30 | waitOn: { 31 | 'set-boot-pxe': 'finished' 32 | } 33 | }, 34 | { 35 | label: 'install-os', 36 | taskName: 'Task.Os.Install.PhotonOS', 37 | waitOn: { 38 | 'reboot': 'succeeded' 39 | } 40 | }, 41 | { 42 | label: 'rackhd-callback-notification-wait', 43 | taskName: 'Task.Wait.Notification', 44 | waitOn: { 45 | 'install-os': 'succeeded' 46 | } 47 | } 48 | ] 49 | }; 50 | -------------------------------------------------------------------------------- /lib/graphs/install-rhel-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install RHEL', 7 | injectableName: 'Graph.InstallRHEL', 8 | options: { 9 | 'install-os': { 10 | version: null, 11 | _taskTimeout: 3600000 // 1hour 12 | }, 13 | 'rackhd-callback-notification-wait': { 14 | _taskTimeout: 1200000 //20 minutes 15 | } 16 | }, 17 | tasks: [ 18 | { 19 | label: 'set-boot-pxe', 20 | taskName: 'Task.Obm.Node.PxeBoot', 21 | ignoreFailure: true 22 | }, 23 | { 24 | label: 'reboot', 25 | taskName: 'Task.Obm.Node.Reboot', 26 | waitOn: { 27 | 'set-boot-pxe': 'finished' 28 | } 29 | }, 30 | { 31 | label: 'install-os', 32 | taskName: 'Task.Os.Install.CentOS', //RHEL installation shares the same task of CentOS 33 | waitOn: { 34 | 'reboot': 'succeeded' 35 | } 36 | }, 37 | { 38 | label: 'rackhd-callback-notification-wait', 39 | taskName: 'Task.Wait.Notification', 40 | waitOn: { 41 | 'install-os': 'succeeded' 42 | } 43 | } 44 | ] 45 | }; 46 | -------------------------------------------------------------------------------- /lib/graphs/install-suse-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install SUSE', 7 | injectableName: 'Graph.InstallSUSE', 8 | options: { 9 | 'install-os': { 10 | version: null, 11 | _taskTimeout: 3600000, //1 hour 12 | } 13 | }, 14 | tasks: [ 15 | { 16 | label: 'set-boot-pxe', 17 | taskName: 'Task.Obm.Node.PxeBoot', 18 | ignoreFailure: true 19 | }, 20 | { 21 | label: 'reboot', 22 | taskName: 'Task.Obm.Node.Reboot', 23 | waitOn: { 24 | 'set-boot-pxe': 'finished' 25 | } 26 | }, 27 | { 28 | label: 'install-os', 29 | taskName: 'Task.Os.Install.SUSE', 30 | waitOn: { 31 | 'reboot': 'succeeded' 32 | } 33 | }, 34 | { 35 | label: 'rackhd-callback-notification-wait', 36 | taskName: 'Task.Wait.Notification', 37 | waitOn: { 38 | 'install-os': 'succeeded' 39 | } 40 | }] 41 | }; 42 | -------------------------------------------------------------------------------- /lib/graphs/install-ubuntu-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015-2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install Ubuntu', 7 | injectableName: 'Graph.InstallUbuntu', 8 | options: { 9 | 'install-ubuntu': { 10 | osName: 'ubuntu', 11 | version: 'trusty' 12 | } 13 | }, 14 | tasks: [ 15 | { 16 | label: 'set-boot-pxe', 17 | taskName: 'Task.Obm.Node.PxeBoot', 18 | ignoreFailure: true 19 | }, 20 | { 21 | label: 'reboot', 22 | taskName: 'Task.Obm.Node.Reboot', 23 | waitOn: { 24 | 'set-boot-pxe': 'finished' 25 | } 26 | }, 27 | { 28 | label: 'install-ubuntu', //Ubuntu installation shares the same task of Debian 29 | taskName: 'Task.Os.Install.Debian', 30 | waitOn: { 31 | 'reboot': 'succeeded' 32 | } 33 | }, 34 | { 35 | label: 'rackhd-callback-notification-wait', 36 | taskName: 'Task.Wait.Notification', 37 | waitOn: { 38 | 'install-ubuntu': 'succeeded' 39 | } 40 | } 41 | ] 42 | }; 43 | -------------------------------------------------------------------------------- /lib/graphs/install-windows-server2012-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Install Windows Server 2012', 7 | injectableName: 'Graph.InstallWindowsServer', 8 | options: { 9 | defaults: { 10 | smbUser: null, 11 | smbPassword: null 12 | } 13 | }, 14 | tasks: [ 15 | { 16 | label: 'set-boot-pxe', 17 | taskName: 'Task.Obm.Node.PxeBoot', 18 | ignoreFailure: true 19 | }, 20 | { 21 | label: 'reboot', 22 | taskName: 'Task.Obm.Node.Reboot', 23 | waitOn: { 24 | 'set-boot-pxe': 'finished' 25 | } 26 | }, 27 | { 28 | label: 'install-os', 29 | taskName: 'Task.Os.Install.Win', 30 | waitOn: { 31 | 'reboot': 'succeeded' 32 | } 33 | }, 34 | { 35 | label: 'firstboot-callback-notification-wait', 36 | taskName: 'Task.Wait.Notification', 37 | waitOn: { 38 | 'install-os': 'succeeded' 39 | } 40 | } 41 | 42 | ] 43 | 44 | }; 45 | 46 | -------------------------------------------------------------------------------- /lib/graphs/intel-flashupdt-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Intel Flashupdt Info', 7 | injectableName: 'Graph.Catalog.Intel.Flashupdt', 8 | options: { 9 | 'bootstrap-rancher': { 10 | dockerFile: 'intel.flash.docker.tar.xz' 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'set-boot-pxe', 16 | taskName: 'Task.Obm.Node.PxeBoot', 17 | ignoreFailure: true 18 | }, 19 | { 20 | label: 'reboot-start', 21 | taskName: 'Task.Obm.Node.Reboot', 22 | waitOn: { 23 | 'set-boot-pxe': 'finished' 24 | } 25 | }, 26 | { 27 | label: 'bootstrap-rancher', 28 | taskName: 'Task.Linux.Bootstrap.Rancher', 29 | waitOn: { 30 | 'reboot-start': 'succeeded' 31 | } 32 | }, 33 | { 34 | label: 'catalog-flashupdt', 35 | taskName: 'Task.Catalog.flashupdt', 36 | waitOn: { 37 | 'bootstrap-rancher': 'succeeded' 38 | }, 39 | ignoreFailure: true 40 | }, 41 | { 42 | label: 'shell-reboot', 43 | taskName: 'Task.ProcShellReboot', 44 | waitOn: { 45 | 'catalog-flashupdt': 'finished' 46 | } 47 | } 48 | ] 49 | }; 50 | -------------------------------------------------------------------------------- /lib/graphs/mc-reset-cold-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Cold Reset BMC', 7 | injectableName: 'Graph.McReset', 8 | tasks: [ 9 | { 10 | label: 'mc-reset', 11 | taskName: 'Task.Obm.Node.McResetCold' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/noop-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'noop-graph', 7 | injectableName: 'Graph.noop-example', 8 | tasks: [ 9 | { 10 | label: 'noop-1', 11 | taskName: 'Task.noop' 12 | }, 13 | { 14 | label: 'noop-2', 15 | taskName: 'Task.noop', 16 | waitOn: { 17 | 'noop-1': 'finished' 18 | } 19 | }, 20 | { 21 | label: 'parallel-noop-1', 22 | taskName: 'Task.noop', 23 | waitOn: { 24 | 'noop-2': 'finished' 25 | } 26 | }, 27 | { 28 | label: 'parallel-noop-2', 29 | taskName: 'Task.noop', 30 | waitOn: { 31 | 'noop-2': 'finished' 32 | } 33 | }, 34 | ] 35 | }; 36 | -------------------------------------------------------------------------------- /lib/graphs/persist-poller-data-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, DELL EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Persist Poller Data', 7 | injectableName: 'Graph.Persist.Poller.Data', 8 | options: { 9 | defaults: { 10 | pollerId: null, 11 | nodeId: null, 12 | interval: null, 13 | duration: null, 14 | catalogName: null, 15 | path: null 16 | } 17 | }, 18 | tasks: [ 19 | { 20 | label: 'persist-poller-data', 21 | taskName: 'Task.Persist.Poller.Data' 22 | } 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /lib/graphs/poweroff-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'PowerOff Node', 7 | injectableName: 'Graph.PowerOff.Node', 8 | tasks: [ 9 | { 10 | label: 'poweroff', 11 | taskName: 'Task.Obm.Node.PowerOff' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/poweron-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'PowerOn Node', 7 | injectableName: 'Graph.PowerOn.Node', 8 | tasks: [ 9 | { 10 | label: 'poweron', 11 | taskName: 'Task.Obm.Node.PowerOn' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/quanta-storcli-megaraid-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | "friendlyName": "Quanta storcli Catalog", 7 | "injectableName": "Graph.Quanta.storcli.Catalog", 8 | "options": { 9 | "bootstrap-rancher": { 10 | dockerFile: 'secure.erase.docker.tar.xz' 11 | } 12 | }, 13 | "tasks": [ 14 | { 15 | "ignoreFailure": true, 16 | "label": "set-boot-pxe", 17 | "taskName": "Task.Obm.Node.PxeBoot" 18 | }, 19 | { 20 | "label": "reboot-start", 21 | "taskName": "Task.Obm.Node.Reboot", 22 | "waitOn": { 23 | "set-boot-pxe": "finished" 24 | } 25 | }, 26 | { 27 | "label": "bootstrap-rancher", 28 | "taskName": "Task.Linux.Bootstrap.Rancher", 29 | "waitOn": { 30 | "reboot-start": "succeeded" 31 | } 32 | }, 33 | { 34 | "ignoreFailure": true, 35 | "label": "catalog-storcli", 36 | "taskName": "Task.Catalog.megaraid", 37 | "waitOn": { 38 | "bootstrap-rancher": "succeeded" 39 | } 40 | }, 41 | { 42 | "label": "shell-reboot", 43 | "taskName": "Task.ProcShellReboot", 44 | "waitOn": { 45 | "catalog-storcli": "finished" 46 | } 47 | } 48 | ] 49 | }; 50 | -------------------------------------------------------------------------------- /lib/graphs/reboot-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Reboot Node', 7 | injectableName: 'Graph.Reboot.Node', 8 | tasks: [ 9 | { 10 | label: 'reboot', 11 | taskName: 'Task.Obm.Node.Reboot' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/redfish-discovery-ip-range-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, DELL, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Redfish Ip Range Discovery', 7 | injectableName: 'Graph.Redfish.Ip.Range.Discovery', 8 | options: { 9 | defaults: { 10 | ranges:[{ 11 | startIp: null, 12 | endIp: null, 13 | credentials:{ 14 | userName: null, 15 | password: null 16 | } 17 | }] 18 | } 19 | }, 20 | tasks: [ 21 | { 22 | label: 'redfish-ip-range-discovery', 23 | taskName: 'Task.Redfish.Ip.Range.Discovery', 24 | 25 | }, 26 | { 27 | label: 'redfish-discovery-list', 28 | taskName: 'Task.Redfish.Discovery.List', 29 | waitOn: { 30 | 'redfish-ip-range-discovery': 'succeeded' 31 | } 32 | }, 33 | { 34 | label: 'redfish-catalog-discovered', 35 | taskName: 'Task.General.Redfish.Catalog', 36 | waitOn: { 37 | 'redfish-discovery-list': 'succeeded' 38 | } 39 | }, 40 | { 41 | label: 'redfish-update-lookups', 42 | taskName: 'Task.Redfish.Update.Lookups', 43 | waitOn: { 44 | 'redfish-catalog-discovered': 'succeeded' 45 | } 46 | } 47 | ] 48 | }; 49 | -------------------------------------------------------------------------------- /lib/graphs/redfish-reset-actions-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Redfish Reset Actions', 7 | injectableName: 'Graph.Redfish.Actions.Reset', 8 | options: { 9 | defaults: { 10 | target: null, 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'actions-reset', 16 | taskName: 'Task.Obm.Redfish.Actions.Reset' 17 | } 18 | ] 19 | }; 20 | -------------------------------------------------------------------------------- /lib/graphs/remove-bmc-credentials-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Remove BMC Credentials', 7 | injectableName: 'Graph.Remove.Bmc.Credentials', 8 | options: { 9 | 'remove-bmc-credentials': { 10 | users: null 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: 'remove-bmc-credentials', 16 | taskName: 'Task.Remove.BMC.Credentials', 17 | }, 18 | { 19 | label: 'catalog-bmc', 20 | taskName: 'Task.Catalog.bmc', 21 | waitOn: { 22 | 'remove-bmc-credentials': 'succeeded' 23 | }, 24 | ignoreFailure: true 25 | }, 26 | { 27 | label: 'shell-reboot', 28 | taskName: 'Task.ProcShellReboot', 29 | waitOn: { 30 | 'catalog-bmc': 'finished' 31 | } 32 | }, 33 | { 34 | label: 'finish-bootstrap-trigger', 35 | taskName: 'Task.Trigger.Send.Finish', 36 | waitOn: { 37 | 'catalog-bmc': 'finished' 38 | } 39 | } 40 | ] 41 | }; 42 | -------------------------------------------------------------------------------- /lib/graphs/reset-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Reset Node', 7 | injectableName: 'Graph.Reset.Node', 8 | tasks: [ 9 | { 10 | label: 'reset', 11 | taskName: 'Task.Obm.Node.Reset' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/run-emc-diag-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Run EMC Diagnostics', 7 | injectableName: 'Graph.Run.Emc.Diag', 8 | options: { 9 | 'set-boot-pxe': { 10 | "delay": 1000, 11 | "retries": 10 12 | }, 13 | 'reboot-start': { 14 | "delay": 1000, 15 | "retries": 10 16 | } 17 | }, 18 | tasks: [ 19 | { 20 | label: 'set-boot-pxe', 21 | taskName: 'Task.Obm.Force.Pxe.Boot', 22 | ignoreFailure: true 23 | }, 24 | { 25 | label: 'reboot-start', 26 | taskName: 'Task.Obm.Node.Reset', 27 | waitOn: { 28 | 'set-boot-pxe': 'finished' 29 | } 30 | }, 31 | { 32 | label: 'bootstrap-emc-diag', 33 | taskName: 'Task.Os.Run.Emc.Diag', 34 | waitOn: { 35 | 'reboot-start': 'succeeded' 36 | } 37 | } 38 | ] 39 | }; 40 | -------------------------------------------------------------------------------- /lib/graphs/run-rest-command-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Run rest command', 7 | injectableName: 'Graph.Run.Rest.Command', 8 | options: { 9 | defaults: { 10 | url: null, 11 | credential: null, 12 | method: null, 13 | headers: null, 14 | data: null, 15 | verifySSL: null, 16 | recvTimeoutMs: null 17 | } 18 | }, 19 | tasks: [ 20 | { 21 | label: 'run-rest-command', 22 | taskName: 'Task.run.rest.command' 23 | } 24 | ] 25 | }; 26 | 27 | -------------------------------------------------------------------------------- /lib/graphs/set-idrac-ipaddress-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | friendlyName: "Set Idrac Ipaddress", 7 | injectableName: "Graph.SetIdracIp", 8 | options: { 9 | "defaults":{ 10 | commands: [] 11 | } 12 | }, 13 | tasks: [ 14 | { 15 | label: "ssh-to-microkernel", 16 | taskName: "Task.Ssh.Exec" 17 | } 18 | ] 19 | }; 20 | -------------------------------------------------------------------------------- /lib/graphs/shell-command-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Shell Commands', 7 | injectableName: 'Graph.ShellCommands', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot-start', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'bootstrap-rancher', 23 | taskName: 'Task.Linux.Bootstrap.Rancher', 24 | waitOn: { 25 | 'reboot-start': 'succeeded' 26 | } 27 | }, 28 | { 29 | label: 'shell-commands', 30 | taskName: 'Task.Linux.Commands', 31 | waitOn: { 32 | 'bootstrap-rancher': 'succeeded' 33 | } 34 | }, 35 | { 36 | label: 'reboot-end', 37 | taskName: 'Task.Obm.Node.Reboot', 38 | waitOn: { 39 | 'shell-commands': 'finished' 40 | } 41 | } 42 | ] 43 | }; 44 | -------------------------------------------------------------------------------- /lib/graphs/soft-reset-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Soft Reset Node', 7 | injectableName: 'Graph.Reset.Soft.Node', 8 | tasks: [ 9 | { 10 | label: 'soft-reset', 11 | taskName: 'Task.Obm.Node.Reset.Soft' 12 | } 13 | ] 14 | }; 15 | -------------------------------------------------------------------------------- /lib/graphs/switch-discovery-post-sku-hooks-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | "use strict"; 4 | 5 | module.exports = { 6 | "friendlyName": "Switch Discovery SKU Graph post-hooks", 7 | "injectableName": "Graph.Switch.SKU.Discovery.Hooks.Post", 8 | "tasks": [ 9 | { 10 | "label": "exit-switch-taskrunner-success", 11 | "taskDefinition": { 12 | "friendlyName": "Exit switch taskrunner with success", 13 | "injectableName": "Task.Inline.ExitSwitchTaskRunner.Succeeded", 14 | "implementsTask": "Task.Base.ShellReboot", 15 | "options": { 16 | "rebootCode": 0 17 | }, 18 | "properties": {} 19 | } 20 | }, 21 | { 22 | "label": "node-discovered-alert", 23 | "taskName": "Task.Alert.Node.Discovered", 24 | "waitOn": { 25 | "exit-switch-taskrunner-success": "succeeded" 26 | } 27 | } 28 | ] 29 | }; 30 | -------------------------------------------------------------------------------- /lib/graphs/ucs-catalog-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Ucs Catalog', 7 | injectableName: 'Graph.Ucs.Catalog', 8 | options: {}, 9 | tasks: [ 10 | { 11 | label: 'ucs-catalog', 12 | taskName: 'Task.Ucs.Catalog' 13 | } 14 | ] 15 | }; 16 | -------------------------------------------------------------------------------- /lib/graphs/uefi-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Run a UEFI Application', 7 | injectableName: 'Graph.RunUefi', 8 | options: { 9 | defaults: { 10 | repo: null, 11 | uefitool: null, 12 | args: '' 13 | }, 14 | }, 15 | tasks: [ 16 | { 17 | label: 'set-boot-pxe', 18 | taskName: 'Task.Obm.Node.PxeBoot', 19 | ignoreFailure: true 20 | }, 21 | { 22 | label: 'reboot', 23 | taskName: 'Task.Obm.Node.Reboot', 24 | waitOn: { 25 | 'set-boot-pxe': 'finished' 26 | } 27 | }, 28 | { 29 | label: 'runuefi', 30 | taskName: 'Task.Run.Uefi', 31 | waitOn: { 32 | 'reboot': 'succeeded' 33 | } 34 | } 35 | ] 36 | }; 37 | -------------------------------------------------------------------------------- /lib/graphs/update-switch-firmware-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 'use strict'; 3 | 4 | module.exports = { 5 | friendlyName: 'Update Switch Firmware', 6 | injectableName: 'Graph.Update.Switch.Firmware', 7 | options: { 8 | defaults: { 9 | endpoint: { 10 | ipaddress: null, 11 | username: null, 12 | password: null, 13 | switchType: null 14 | }, 15 | switchModel: null, 16 | firmwareImages: null 17 | }, 18 | 'Get-switch-config': { 19 | loginToken : 'Bearer {{ context.outputs["On-network-login"].restData.body.token }}' 20 | }, 21 | 'Post-update-switch-firmware': { 22 | loginToken : 'Bearer {{ context.outputs["On-network-login"].restData.body.token }}' 23 | }, 24 | 25 | }, 26 | tasks: [ 27 | { 28 | label: 'On-network-login', 29 | taskName: 'Task.Post.Login.On-network' 30 | }, 31 | { 32 | label: 'Get-switch-config', 33 | taskName: 'Task.Get.Switch.Config', 34 | waitOn: { 35 | 'On-network-login': 'succeeded' 36 | } 37 | }, 38 | { 39 | label: 'Post-update-switch-firmware', 40 | taskName: 'Task.Post.Update.Switch' , 41 | waitOn: { 42 | "On-network-login": "succeeded" 43 | } 44 | } 45 | 46 | ] 47 | }; -------------------------------------------------------------------------------- /lib/graphs/winpe-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Bootstrap WinPE', 7 | injectableName: 'Graph.BootstrapWinPE', 8 | tasks: [ 9 | { 10 | label: 'set-boot-pxe', 11 | taskName: 'Task.Obm.Node.PxeBoot', 12 | ignoreFailure: true 13 | }, 14 | { 15 | label: 'reboot', 16 | taskName: 'Task.Obm.Node.Reboot', 17 | waitOn: { 18 | 'set-boot-pxe': 'finished' 19 | } 20 | }, 21 | { 22 | label: 'bootstrap-winpe', 23 | taskName: 'Task.WinPE.Bootstrap', 24 | waitOn: { 25 | 'reboot': 'succeeded' 26 | } 27 | } 28 | ] 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /lib/graphs/wsman-poller-service-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'WSMAN Poller Service', 7 | injectableName: 'Graph.Service.Poller.Wsman', 8 | serviceGraph: true, 9 | 10 | options: { 11 | defaults: { 12 | serviceId: null, 13 | nodeId:null 14 | 15 | 16 | } 17 | }, 18 | 19 | 20 | tasks: [ 21 | { 22 | label: 'wsman', 23 | taskDefinition: { 24 | friendlyName: 'Wsman requester', 25 | injectableName: 'Task.Inline.Wsman', 26 | implementsTask: 'Task.Base.Wsman', 27 | options: { 28 | serviceId : null, 29 | nodeId: null 30 | }, 31 | properties: {} 32 | } 33 | }, 34 | ] 35 | }; 36 | -------------------------------------------------------------------------------- /lib/graphs/zerotouch-veos-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | friendlyName: 'Zerotouch vEOS Graph', 7 | injectableName: 'Graph.Arista.Zerotouch.vEOS', 8 | tasks: [ 9 | { 10 | label: 'zerotouch-veos', 11 | taskDefinition: { 12 | friendlyName: 'Arista Zerotouch vEOS', 13 | injectableName: 'Task.Inline.Arista.Zerotouch.vEOS', 14 | implementsTask: 'Task.Base.Arista.Zerotouch', 15 | options: { 16 | profile: 'zerotouch-configure.zt', 17 | bootConfig: 'arista-boot-config', 18 | startupConfig: 'arista-startup-config', 19 | eosImage: 'common/zerotouch-vEOS.swi', 20 | bootfile: 'zerotouch-vEOS.swi', 21 | hostname: 'RenasarVEOS' 22 | }, 23 | properties: { 24 | os: { 25 | switch: { 26 | type: 'vEOS', 27 | virtual: true 28 | } 29 | } 30 | } 31 | } 32 | } 33 | ] 34 | }; 35 | -------------------------------------------------------------------------------- /lib/services/nodes-api-service.js: -------------------------------------------------------------------------------- 1 | 2 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 3 | 4 | 'use strict'; 5 | 6 | var di = require('di'); 7 | 8 | module.exports = nodeApiServiceFactory; 9 | di.annotate(nodeApiServiceFactory, new di.Provide('Http.Services.Api.Nodes')); 10 | di.annotate(nodeApiServiceFactory, 11 | new di.Inject( 12 | 'Services.Waterline' 13 | ) 14 | ); 15 | function nodeApiServiceFactory( 16 | waterline 17 | ) { 18 | 19 | function NodeApiService() { 20 | } 21 | 22 | /** 23 | * Get a list of nodes with the tagName applied to them 24 | * @param {String} tagName 25 | * @return {Promise} Resolves to an array of nodes 26 | */ 27 | NodeApiService.prototype.getNodeByIdentifier = function(identifier) { 28 | return waterline.nodes.findByIdentifier(identifier); 29 | }; 30 | 31 | return new NodeApiService(); 32 | } 33 | -------------------------------------------------------------------------------- /scripts/post-install.sh: -------------------------------------------------------------------------------- 1 | cp scripts/index.html node_modules/swagger-tools/middleware/swagger-ui/ 2 | -------------------------------------------------------------------------------- /spec/helper.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | require('on-core/spec/helper'); 6 | 7 | // Mocha doesn't read the waterline validation errors because they 8 | // use rawStack instead of stack, so provide a convenience function to pass 9 | // all errors through where there is a chance they could be waterline ones 10 | helper.handleError = function(error) { 11 | if (error.code === 'E_VALIDATION') { 12 | throw new Error("Validation error\n" + error.details + "\n" + error.rawStack); 13 | } else { 14 | throw error; 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/base-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | module.exports = { 7 | 8 | before: function (callback) { 9 | before(function () { 10 | callback(this); 11 | }); 12 | }, 13 | 14 | examples: function () { 15 | before(function () { 16 | expect(this.taskdefinition).to.be.ok; 17 | expect(this.taskdefinition).to.be.an.Object; 18 | }); 19 | 20 | describe('expected properties', function() { 21 | 22 | it('should have a friendly name', function() { 23 | expect(this.taskdefinition).to.have.property('friendlyName'); 24 | expect(this.taskdefinition.friendlyName).to.be.a('string'); 25 | }); 26 | 27 | it('should have an injectableName', function() { 28 | expect(this.taskdefinition).to.have.property('injectableName'); 29 | expect(this.taskdefinition.injectableName).to.be.a('string'); 30 | }); 31 | 32 | it('should have tasks', function() { 33 | expect(this.taskdefinition).to.have.property('tasks'); 34 | expect(this.taskdefinition.tasks).to.be.instanceof(Array); 35 | }); 36 | 37 | }); 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /spec/lib/graphs/boot-livecd-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/boot-livecd-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/bootstrap-bmc-credentials-remove-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = 11 | helper.require('/lib/graphs/bootstrap-bmc-credentials-remove-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/bootstrap-bmc-credentials-setup-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/bootstrap-bmc-credentials-setup-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/bootstrap-decommission-node-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = 11 | helper.require('/lib/graphs/bootstrap-decommission-node-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/bootstrap-megaraid-config-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/bootstrap-megaraid-config-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/bootstrap-rancher-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2018, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/bootstrap-rancher-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/create-emc-fabric-service-poller-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/create-emc-fabric-service-poller-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/create-ipmi-obm-settings-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/create-ipmi-obm-settings-graph'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/create-megaraid-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/create-megaraid-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/create-redfish-chassis-poller-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/create-redfish-chassis-poller-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/create-redfish-systems-poller-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/create-redfish-systems-poller-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/create-vbox-obm-settings-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/create-vbox-obm-settings-graph'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/delete-megaraid-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/delete-megaraid-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-configure-idrac-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-configure-idrac-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-configure-redfish-alerting-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017git stat , EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require( 10 | '/lib/graphs/dell-configure-redfish-alerting-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-perccli-megaraid-catalog-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-perccli-megaraid-catalog-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-disable-vtx-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-racadm-disable-vtx-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-enable-vtx-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-racadm-enable-vtx-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-get-bios-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-racadm-get-bios-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-get-config-catalog-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require( 11 | '/lib/graphs/dell-racadm-get-config-catalog-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-get-firmware-list-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require( 11 | '/lib/graphs/dell-racadm-get-firmware-list-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-reset-components-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-racadm-reset-components-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-set-bios-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-racadm-set-bios-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-racadm-update-firmware-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-racadm-update-firmware-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-add-hotspare-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-add-hotspare-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-config-services-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-config-services-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-configure-bios-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-configure-bios-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-configure-idrac-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-configure-idrac-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-configure-redfish-alert-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017 Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require( 10 | '/lib/graphs/dell-wsman-configure-redfish-alert-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-discovery-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-discovery-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-get-bios-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-get-bios-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-get-inventory-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-get-inventory-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-os-deployment-create-graph-spec.js.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-os-deployment-create-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-os-deployment-deploy-graph-spec.js.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-os-deployment-deploy-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-reset-components-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-reset-components-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/dell-wsman-update-firmware-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/dell-wsman-update-firmware-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/discovery-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/discovery-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/discovery-mgmt-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/discovery-mgmt-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/discovery-mgmtsku-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/discovery-mgmtsku-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/emc-compose-system-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/emc-compose-system-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/emc-redfish-discovery-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/emc-redfish-discovery-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/esxcli-driver-verison-commands-graph-spec.js: -------------------------------------------------------------------------------- 1 | //Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require 11 | ('/lib/graphs/esxcli-driver-version-commands-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/generate-sku-graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(__filename, function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/generate-sku-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/generate-tag.graph.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(__filename, function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/generate-tag-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/get-switch-config-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/get-switch-config-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/get-switch-version-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/get-switch-version-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/iPDU-firmware-update-by-sftp-graph-spec.js: -------------------------------------------------------------------------------- 1 | //Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require( 11 | '/lib/graphs/examples/iPDU-firmware-update-by-sftp-graph.js' 12 | ); 13 | }); 14 | 15 | describe('graph', function () { 16 | base.examples(); 17 | }); 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-centos-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-centos-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/install-chef-graph-spec.js: -------------------------------------------------------------------------------- 1 | //Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/examples/install-chef-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-chef-server-graph-spec.js: -------------------------------------------------------------------------------- 1 | //Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require( 11 | '/lib/graphs/examples/install-chef-server-graph.js' 12 | ); 13 | }); 14 | 15 | describe('graph', function () { 16 | base.examples(); 17 | }); 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-coreos-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-coreos-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/install-debian-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-debian-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-esx-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-esx-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/install-photon-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-photon-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-rhel-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-rhel-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-suse-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-suse-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-ubuntu-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-ubuntu-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/install-windows-server2012-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/install-windows-server2012-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/intel-flashupdt-catalog-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/intel-flashupdt-catalog-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/mc-reset-cold-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | 3 | 'use strict'; 4 | 5 | describe('MC Reset Cold', function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/mc-reset-cold-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /spec/lib/graphs/noop-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/noop-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/pdu-discovery-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/pdu-discovery-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/poller-service-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = 11 | helper.require('/lib/graphs/poller-service-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/poweroff-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/poweroff-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/poweron-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/poweron-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/quanta-storcli-megaraid-catalog-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/quanta-storcli-megaraid-catalog-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/rancher-catalog-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright © 2018 Dell Inc. or its subsidiaries. All Rights Reserved. 2 | 3 | 'use strict'; 4 | 5 | describe(require('path').basename(__filename), function () { 6 | var base = require('./base-graph-spec'); 7 | 8 | base.before(function (context) { 9 | context.taskdefinition = helper.require('/lib/graphs/rancher-catalog-graph.js'); 10 | }); 11 | 12 | describe('graph', function () { 13 | base.examples(); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /spec/lib/graphs/reboot-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/reboot-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/redfish-discovery-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/redfish-discovery-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/redfish-reset-actions-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/redfish-reset-actions-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/remove-bmc-credentials-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/remove-bmc-credentials-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/run-emc-diag-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/run-emc-diag-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/secure-erase-drive-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/secure-erase-drive-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/set-bmc-credentials-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/set-bmc-credentials-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/set-idrac-ipaddress-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/set-idrac-ipaddress-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/shell-command-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/shell-command-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); -------------------------------------------------------------------------------- /spec/lib/graphs/switch-discovery-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/switch-discovery-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/ucs-catalog-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/ucs-catalog-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/ucs-discovery-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = 11 | helper.require('/lib/graphs/ucs-discovery-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/ucs-poller-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = 11 | helper.require('/lib/graphs/ucs-poller-graph.js'); 12 | }); 13 | 14 | describe('graph', function () { 15 | base.examples(); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /spec/lib/graphs/uefi-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2016, EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/uefi-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /spec/lib/graphs/update-switch-firmware-graph-spec.js: -------------------------------------------------------------------------------- 1 | // Copyright 2017, Dell EMC, Inc. 2 | /* jshint node:true */ 3 | 4 | 'use strict'; 5 | 6 | describe(require('path').basename(__filename), function () { 7 | var base = require('./base-graph-spec'); 8 | 9 | base.before(function (context) { 10 | context.taskdefinition = helper.require('/lib/graphs/update-switch-firmware-graph.js'); 11 | }); 12 | 13 | describe('graph', function () { 14 | base.examples(); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | ## Setup 2 | virtualenv .venv 3 | source .venv/bin/activate 4 | sudo pip install -r requirements.txt 5 | ## Running the tests 6 | #### To change the base URL (default 172.31.128.1:9030) 7 | export BASEURL="111.111.111.111:8000" 8 | #### Run tests 9 | nosetests -v --exe 10 | -------------------------------------------------------------------------------- /test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RackHD/on-taskgraph/81339fb2a8d3e103fdaa8b27c648bb9fbf7fa6fc/test/__init__.py -------------------------------------------------------------------------------- /test/requirements.txt: -------------------------------------------------------------------------------- 1 | amqp==1.4.8 2 | flake8==3.3.0 3 | gevent==1.1.2 4 | greenlet==0.4.10 5 | ipaddress==1.0.18 6 | jsonmerge==1.2.1 7 | jsonschema==2.4.0 8 | kombu==3.0.30 9 | nose==1.3.7 10 | nosedep>=0.6 11 | netifaces==0.10.5 12 | pexpect==3.3 13 | pika==0.10.0 14 | pymongo==3.4.0 15 | requests==2.9.0 16 | setuptools==33.1.1 17 | urllib3==1.19.1 18 | ucsmsdk==0.9.2.0 19 | exrex==0.10.4 20 | pyOpenSSL==17.0.0 21 | ndg-httpsclient==0.4.2 22 | pyasn1==0.2.3 23 | -------------------------------------------------------------------------------- /version: -------------------------------------------------------------------------------- 1 | 2.60.7 --------------------------------------------------------------------------------