From 5bf97e5e5c250bc18dce9d833b8a198c55f1124a Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Wed, 15 Jun 2022 13:25:07 -0500 Subject: [PATCH] update workflow --- .../03_search_for_matching_VM_names.png | Bin 0 -> 40587 bytes .../04_generate_candidateVmName.js | 30 ++++++++++++++++++ .../05_check_for_VM_name_conflict.js | 15 +++++++++ .../06_check_for_DNS_conflict.js | 18 +++++++++++ .../07_check_for_AD_conflict.js | 20 ++++++++++++ .../08_return_nextVmName.js | 7 ++++ .../09_remove_lock.js | 7 ++++ .../a01_conflict_encountered.js | 13 ++++++++ .../Generate Unique Hostname/z01_errors.js | 7 ++++ .../z02_remove_lock.js | 7 ++++ 10 files changed, 124 insertions(+) create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/03_search_for_matching_VM_names.png create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/04_generate_candidateVmName.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/05_check_for_VM_name_conflict.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/06_check_for_DNS_conflict.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/07_check_for_AD_conflict.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/08_return_nextVmName.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/09_remove_lock.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/a01_conflict_encountered.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/z01_errors.js create mode 100644 Orchestrator/Workflows/Generate Unique Hostname/z02_remove_lock.js diff --git a/Orchestrator/Workflows/Generate Unique Hostname/03_search_for_matching_VM_names.png b/Orchestrator/Workflows/Generate Unique Hostname/03_search_for_matching_VM_names.png new file mode 100644 index 0000000000000000000000000000000000000000..f451e7704830886680ed3ea81f863b03f4043d70 GIT binary patch literal 40587 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 Fe*@Ab@{s@l literal 0 HcmV?d00001 diff --git a/Orchestrator/Workflows/Generate Unique Hostname/04_generate_candidateVmName.js b/Orchestrator/Workflows/Generate Unique Hostname/04_generate_candidateVmName.js new file mode 100644 index 0000000..ba83d97 --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/04_generate_candidateVmName.js @@ -0,0 +1,30 @@ +/* JavaScript: generate candidateVmName + Appends appropriate numbering sequence to nameBase + Inputs: digitCount (number), nameBase (string), digits (number), hostnameSequence (number), computerNames (ConfigurationElement) + Outputs: computerNames (ConfigurationElement), candidateVmName (string), hostnameSequence (number) + Exception binding: errMsg (string) +*/ +if (digits) { + hostnameSequence = digits; + System.log("Manually setting sequence to user-provided input: " + digits) +} else { + try { + hostnameSequence = computerNames.getAttributeWithKey(nameBase).value; + System.debug("Found hostname base " + nameBase + " with sequence " + hostnameSequence); + } catch (e) { + System.debug("Hostname base " + nameBase + " does not exist, it will be created."); + } finally { + hostnameSequence++; + if (hostnameSequence.toString().length > digitCount) { + errMsg = 'All out of potential VM names, aborting...'; + throw(errMsg); + } + System.debug("Adding " + nameBase + " with sequence " + hostnameSequence); + computerNames.setAttributeWithKey(nameBase,hostnameSequence); + } +} +var hostnameNum = hostnameSequence.toString(); +var leadingZeroes = new Array(digitCount - hostnameNum.length + 1).join("0"); +hostnameNum = leadingZeroes + hostnameNum; +candidateVmName = (nameBase + hostnameNum).toUpperCase(); +System.log("Proposed VM name: " + candidateVmName); \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/05_check_for_VM_name_conflict.js b/Orchestrator/Workflows/Generate Unique Hostname/05_check_for_VM_name_conflict.js new file mode 100644 index 0000000..5b539d3 --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/05_check_for_VM_name_conflict.js @@ -0,0 +1,15 @@ +/* JavaScript: check for VM name conflict + Iterates through an array of VM object to check for naming collisions. + Inputs: candidateVmName (string), vms (Array/VC:VirtualMachine) + Outputs: conflict (boolean) + Exception binding: errMsg (string) +*/ +vms.forEach(function(vm) { + if (vm.name.toUpperCase() === candidateVmName) { + conflict = true; + errMsg = "Found a conflicting VM name!"; + System.warn(errMsg); + throw(errMsg); + } +}); +System.log("No VM name conflicts found for " + candidateVmName); \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/06_check_for_DNS_conflict.js b/Orchestrator/Workflows/Generate Unique Hostname/06_check_for_DNS_conflict.js new file mode 100644 index 0000000..0c98bdb --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/06_check_for_DNS_conflict.js @@ -0,0 +1,18 @@ +/* JavaScript: check for DNS conflict + Checks for conflicting DNS records. + Inputs: candidateVmName (string), conflict (boolean), domain (string) + Outputs: conflict (boolean) + Exception binding: errMsg (string) +*/ +if (conflict) { + System.debug("Existing conflict found, skipping DNS check..."); +} else { + if (System.resolveHostName(candidateVmName + "." + domain)) { + conflict = true; + errMsg = "Conflicting DNS record found!"; + System.warn(errMsg); + throw(errMsg); + } else { + System.log("No DNS conflict for " + candidateVmName) + } +} \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/07_check_for_AD_conflict.js b/Orchestrator/Workflows/Generate Unique Hostname/07_check_for_AD_conflict.js new file mode 100644 index 0000000..4f65321 --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/07_check_for_AD_conflict.js @@ -0,0 +1,20 @@ +/* JavaScript: check for AD conflict + Checks for conflicting names in Active Directory + Inputs: candidateVmName (string), conflict (boolean), adHost (AD:AdHost) + Outputs: conflict (boolean) + Exception binding: errMsg (string) +*/ +if (conflict) { + System.debug("Existing conflict found, skipping AD check..."); +} else { + var computer = ActiveDirectory.getComputerAD(candidateVmName, adHost); + System.log("Searched AD for: " + candidateVmName); + if (computer) { + conflict = true; + errMsg = "Conflicting AD object found!" + System.warn(errMsg); + throw(errMsg); + } else { + System.log("No AD conflict found for " + candidateVmName); + } +} \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/08_return_nextVmName.js b/Orchestrator/Workflows/Generate Unique Hostname/08_return_nextVmName.js new file mode 100644 index 0000000..32bdfff --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/08_return_nextVmName.js @@ -0,0 +1,7 @@ +/* JavaScript: return nextVmName + Returns the selected nextVmName after passing all collision checks + Inputs: candidateVmName (string) + Outputs: nextVmName (string) +*/ +nextVmName = candidateVmName; +System.log(" ***** Selecting [" + nextVmName + "] as the next VM name ***** ") \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/09_remove_lock.js b/Orchestrator/Workflows/Generate Unique Hostname/09_remove_lock.js new file mode 100644 index 0000000..1af4b6b --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/09_remove_lock.js @@ -0,0 +1,7 @@ +/* JavaScript: remove lock + Removes the lock to re-allow subsequent workflow runs + Inputs: none + Outputs: none +*/ +System.debug("Releasing lock..."); +LockingSystem.unlock("namingLock","eventBroker"); \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/a01_conflict_encountered.js b/Orchestrator/Workflows/Generate Unique Hostname/a01_conflict_encountered.js new file mode 100644 index 0000000..2e63e6e --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/a01_conflict_encountered.js @@ -0,0 +1,13 @@ +/* JavaScript: conflict encountered + Resets the conflict flag and passes control back to the 'generate candidateVmName' + Inputs: digits (number) + Outputs: conflict (boolean) + Exception binding: errMsg (string) +*/ +if (digits) { + errMsg = 'User-specified name is not available, aborting...'; + throw(errMsg); +} else { + System.log("Conflict encountered, trying a new name...") + conflict = false +} \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/z01_errors.js b/Orchestrator/Workflows/Generate Unique Hostname/z01_errors.js new file mode 100644 index 0000000..b4393a5 --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/z01_errors.js @@ -0,0 +1,7 @@ +/* JavaScript: errors + Terminate the workflow in the event of an unrecoverable error + Inputs: errMsg (string) + Outputs: none +*/ +System.error("FATAL ERROR!"); +System.error(errMsg); \ No newline at end of file diff --git a/Orchestrator/Workflows/Generate Unique Hostname/z02_remove_lock.js b/Orchestrator/Workflows/Generate Unique Hostname/z02_remove_lock.js new file mode 100644 index 0000000..1af4b6b --- /dev/null +++ b/Orchestrator/Workflows/Generate Unique Hostname/z02_remove_lock.js @@ -0,0 +1,7 @@ +/* JavaScript: remove lock + Removes the lock to re-allow subsequent workflow runs + Inputs: none + Outputs: none +*/ +System.debug("Releasing lock..."); +LockingSystem.unlock("namingLock","eventBroker"); \ No newline at end of file