Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Name: Update Related Children
- Table: Configuration Item [cmdb_ci]
- Order: 100
- When: after
- Insert: true
- Update: true
- Condition: current.supported_by.changes() || current.support_group.changes() || current.install_status.changes() || current.u_substatus.changes() || current.u_used_for.changes()
- */
- //change related references to new status
- updateRelChildren();
- updateNetworkAdapters();
- updateWindowsService();
- //remove unneeded references
- if (current.install_status == 6 || current.install_status == 7) {
- removeSoftware();
- removeProcesses();
- removeTCPCon();
- removeTCPHalfCon();
- if (current.install_status == 6)
- removeWindowsService();
- }
- function updateRelChildren(){
- //Look for CMDB relations for the current CI
- var rel1 = new GlideRecord('cmdb_rel_ci');
- rel1.addQuery('child.sys_id', current.sys_id);
- rel1.query();
- while(rel1.next()) {
- //Find child CMDB relationships and update
- var child1 = new GlideRecord('cmdb_ci');
- child1.addQuery('sys_id', rel1.parent.sys_id);
- child1.addQuery('sys_class_name','IN','cmdb_ci_web_site,cmdb_ci_web_service,cmdb_ci_web_server,cmdb_ci_db_mssql_instance');
- child1.query();
- while(child1.next()) {
- child1.support_group = current.support_group;
- child1.supported_by = current.supported_by;
- child1.install_status = current.install_status;
- child1.u_substatus = current.u_substatus;
- child1.u_used_for = current.u_used_for;
- child1.update();
- //If class_name is a db instance, update children catalogs
- if (child1.sys_class_name == 'cmdb_ci_db_mssql_instance') {
- var rel2 = new GlideRecord('cmdb_ci_db_catalog');
- rel2.addQuery('database_instance', rel1.parent);
- rel2.query();
- while(rel2.next()) {
- rel2.support_group = current.support_group;
- rel2.supported_by = current.supported_by;
- rel2.install_status = current.install_status;
- rel2.u_substatus = current.u_substatus;
- rel2.u_used_for = current.u_used_for;
- rel2.update();
- //gs.addInfoMessage('Upstream relation updated in table ' + rel2.sys_class_name);
- }
- }
- }
- }
- //gs.addInfoMessage('Upstream relation updated in table ' + child1.sys_class_name);
- }
- function updateNetworkAdapters(){
- var net = new GlideRecord("cmdb_ci_network_adapter");
- net.addQuery("cmdb_ci.sys_id", current.sys_id);
- net.query();
- while (net.next()) {
- net.install_status = current.install_status;
- net.u_substatus = current.u_substatus;
- net.u_used_for = current.u_used_for;
- net.update();
- }
- }
- function updateWindowsService(){
- var gr = new GlideRecord("cmdb_ci_windows_service");
- gr.addQuery("cmdb_ci.sys_id", current.sys_id);
- gr.query();
- while (gr.next()) {
- gr.install_status = current.install_status;
- gr.u_substatus = current.u_substatus;
- gr.u_used_for = current.u_used_for;
- gr.update();
- }
- }
- function removeSoftware() {
- var gr = new GlideRecord("cmdb_software_instance");
- gr.addQuery("installed_on.sys_id", current.sys_id);
- gr.query();
- while(gr.next()) {
- gr.deleteRecord();
- }
- }
- function removeProcesses() {
- var gr = new GlideRecord("cmdb_running_process");
- gr.addQuery("computer.sys_id", current.sys_id);
- gr.query();
- while(gr.next()) {
- gr.deleteRecord();
- }
- }
- function removeTCPCon() {
- var gr = new GlideRecord("cmdb_tcp_connection");
- gr.addQuery("computer.sys_id", current.sys_id);
- gr.query();
- while(gr.next()) {
- gr.deleteRecord();
- }
- }
- function removeTCPHalfCon() {
- var gr = new GlideRecord("cmdb_tcp_half");
- gr.addQuery("computer.sys_id", current.sys_id);
- gr.query();
- while(gr.next()) {
- gr.deleteRecord();
- }
- }
- function removeWindowsService(){
- var gr = new GlideRecord("cmdb_ci_windows_service");
- gr.addQuery("cmdb_ci.sys_id", current.sys_id);
- gr.query();
- while (gr.next()) {
- gr.deleteRecord();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment