def add_object(self, cmdb_object, template_data): # get variables from object hostname = self.format_hostname(str(self._export_vars.get("hostname", ExportVariable("hostname", "default")).get_value(cmdb_object, template_data))) ip = self.format_ip(str(self._export_vars.get("ip", ExportVariable("ip", "")).get_value(cmdb_object, template_data))) # ignore CmdbObject, if ip == "" or hostname == "": self.set_msg('Ignore CmdbObject ID:%s. IP and/or hostname is invalid' % cmdb_object.object_information['object_id']) # check if a DNS record exist for object if hostname in self.__existing_records.keys(): # check if entry has changed if self.__existing_records[hostname]["data"] != ip: if hostname not in self.__created_records.keys(): # recreate entry self.delete_a_records(self.__domain_name, hostname) self.add_a_record(self.__domain_name, hostname, ip) # delete entry from exitsing records array del self.__existing_records[hostname] else: # if not create a new one if hostname not in self.__created_records.keys(): self.add_a_record(self.__domain_name, hostname, ip) # save to created records self.__created_records[hostname] = ip
def add_object(self, cmdb_object, template_data): # get hostname for ansible inventory hostname = self._export_vars.get("hostname", ExportVariable("hostname", "default")).get_value( cmdb_object, template_data) if hostname: self.host_list.append(hostname) # walk through all variables to get groups and hostvars groups = [] hostvars = {} for v_name in self.__variables: # check if it is a "group_" variable matches = re.search(r'group_(.*)$', v_name) if matches: group_name = matches.group(1) group_value = self._export_vars.get( v_name, ExportVariable(v_name, "")).get_value(cmdb_object, template_data) # check if the value is true if group_name != 'all' and group_value in ['true', 'True']: # write to ansible group store groups.append(group_name) # check if it is a "hostvar_" variable matches = re.search(r'hostvar_(.*)$', v_name) if matches: host_var_name = matches.group(1) host_var_value = self._export_vars.get( v_name, ExportVariable(v_name, "")).get_value(cmdb_object, template_data) hostvars.update({host_var_name: host_var_value}) # put all hosts into ansible group all groups.append('all') # write hostvars to ansible hostvars store self.ansible_hostvars.update({hostname: hostvars}) # update ansible groups for group in groups: if group not in self.ansible_groups: self.ansible_groups[group] = {} self.ansible_groups[group]['hosts'] = [] self.ansible_groups[group]['hosts'].append(hostname)
def add_object(self, cmdb_object, template_data): row = {} row["object_id"] = str(cmdb_object.object_information['object_id']) row["variables"] = {} for key in self._export_vars: row["variables"][key] = str(self._export_vars.get(key, ExportVariable(key, "")).get_value(cmdb_object, template_data)) self.__rows.append(row)
def add_object(self, cmdb_object, template_data): row = {} for key in self.__variables: if key not in self.header: self.header.append(key) row.update({key: str(self._export_vars.get(key, ExportVariable(key, "")).get_value(cmdb_object, template_data))}) self.rows.append(row)
def add_object(self, cmdb_object, template_data): # add data for insert statement for table in self.__tables: varname = "table_" + table self.__table_data[table].append( str( self._export_vars.get(varname, ExportVariable( varname, "")).get_value(cmdb_object, template_data)))
def add_object(self, cmdb_object, template_data): # init error handling warning = False # get node variables node_foreignid = cmdb_object.object_information['object_id'] node_label = self._export_vars.get("nodelabel", ExportVariable("nodelabel", "undefined")).get_value(cmdb_object, template_data) node_location = self._export_vars.get("location", ExportVariable("location", "default")).get_value(cmdb_object, template_data) # get interface information interfaces_in = [] interfaces_in.append(self._export_vars.get("ip", ExportVariable("ip", "127.0.0.1")).get_value(cmdb_object, template_data)) interfaces_in.extend(self._export_vars.get("furtherIps", ExportVariable("furtherIps", "[]")).get_value(cmdb_object, template_data).split(";")) # validate interfaces interfaces = [] for interface in interfaces_in: if self.__check_ip(interface): interfaces.append(interface) else: warning = True interfaces = list(set(interfaces)) # get category information categories = [] for export_var in self._export_vars: if export_var.startswith("category_"): categories.append(self._export_vars.get(export_var).get_value(cmdb_object, template_data)) # get asset information assets = {} for export_var in self._export_vars: if export_var.startswith("asset_"): asset_name = export_var.replace("asset_", "", 1) asset_value = self.__check_asset(asset_name, self._export_vars.get(export_var).get_value(cmdb_object, template_data)) if asset_value: assets[asset_name] = asset_value # create node XML structure # XML: node node_xml_attr = {} node_xml_attr["foreign-id"] = str(node_foreignid) node_xml_attr["node-label"] = str(node_label) if node_location != "default": node_xml_attr["location"] = str(node_location) node_xml = ET.Element("node", node_xml_attr) # XML: interface for interface in interfaces: interface_xml_attr = {} interface_xml_attr["ip-addr"] = str(interface) interface_xml = ET.SubElement(node_xml, "interface", interface_xml_attr) for service in self.__services: service_xml_attr = {} service_xml_attr["service-name"] = str(service) ET.SubElement(interface_xml, "monitored-service", service_xml_attr) # XML: categories for category in categories: if category: cat_xml_attr = {} cat_xml_attr["name"] = str(category) ET.SubElement(node_xml, "category", cat_xml_attr) # XML: assets for asset in assets: asset_xml_attr = {} asset_xml_attr["name"] = asset asset_xml_attr["value"] = assets[asset] ET.SubElement(node_xml, "asset", asset_xml_attr) # XML: append structure self.__xml.append(node_xml) # update SNMP config if option is set if self.__snmp_export: snmp_ip = str(self._export_vars.get("ip", ExportVariable("ip", "127.0.0.1")).get_value(cmdb_object, template_data)) snmp_community = str(self._export_vars.get("snmp_community", ExportVariable("snmp_community", "public")).get_value(cmdb_object, template_data)) snmp_version = str(self._export_vars.get("snmp_version", ExportVariable("snmp_version", "v2c")).get_value(cmdb_object, template_data)) self.__onms_update_snmpconf_v12(snmp_ip, snmp_community, snmp_version) # update error counter self.__obj_successful.append(cmdb_object.object_information['object_id']) if warning: self.__obj_warning.append(cmdb_object.object_information['object_id'])