def run( self, reserved_ip, mac_addr, auth_key_name, auth_key, server_name, dhcp_host, dhcp_port=7911 ): try: # cast auths as bytes o = pypureomapi.Omapi( dhcp_host, dhcp_port, auth_key_name.encode(), auth_key.encode() ) response = o.add_host_supersede_name( reserved_ip, mac_addr, server_name ) print("reservation created for host:") print("%s: %s -> %s" % (server_name, reserved_ip, mac_addr)) return response except pypureomapi.OmapiError as err: print("error creating host: %s " % str(err)) return err
def _conn(): server_ip = __pillar__.get('omapi.server_ip', __opts__.get('omapi.server_ip', '127.0.0.1')) server_port = __pillar__.get('omapi.server_port', __opts__.get('omapi.server_port', 7991)) key = __pillar__.get('omapi.key', __opts__.get('omapi.key', None)) username = __pillar__.get('omapi.user', __opts__.get('omapi.user', None)) return omapi.Omapi(server_ip, server_port, username=username, key=key)
def list(): ip, = request.form.getlist('ip') print "listing", ip o = pypureomapi.Omapi("192.168.22.1",7911, 'sheatestkey', "OIag01OLUi8OSOSwX1hWzw==") try: mac = o.lookup_mac(ip) print "IP assigned ", ip, mac return render_template("list.html", ip = ip, mac = mac) except pypureomapi.OmapiErrorNotFound: print "%s is currently not assigned" % (ip,)
def dhcp_del_host(macaddress): try: o = pypureomapi.Omapi(dhcp_server_ip, port, str(loadconfig.get_dhcpkey_name()), loadconfig.get_dhcpkey()) o.del_host(str(macaddress).strip()) return True except: print "Something is going wrong on dhcp server , please check your config" return False
def add_host(self, ip_addr, mac, name): """ Add host as Foreman does """ try: oma = pypureomapi.Omapi(self.dhcp_server, self.omapi_port, self.omapi_key, self.omapi_secret) oma.add_host_supersede_name(ip_addr, mac, name) except pypureomapi.OmapiError, err: print "an error occured: %r" % (err, ) sys.exit(1)
def dhcp_add_host(macaddress, ipaddress, dpl_hostname): try: dpl_hostname = str(dpl_hostname.strip()) o = pypureomapi.Omapi(dhcp_server_ip, port, str(loadconfig.get_dhcpkey_name()), loadconfig.get_dhcpkey()) o.add_host_supersede_name(ipaddress, macaddress, dpl_hostname) return True except: print "Something is going wrong on dhcp server , please check your config" return False
def _conn(): server_ip = __pillar__.get('omapi.server_ip', __opts__.get('omapi.server_ip', '127.0.0.1')) server_port = __pillar__.get('omapi.server_port', __opts__.get('omapi.server_port', 7991)) key = __pillar__.get('omapi.key', __opts__.get('omapi.key', None)) username = __pillar__.get('omapi.user', __opts__.get('omapi.user', None)) if key: key = salt.utils.stringutils.to_bytes(key) if username: username = salt.utils.stringutils.to_bytes(username) return omapi.Omapi(server_ip, server_port, username=username, key=key)
def checkRange(ipsList, ip_type): ip_start = ipsList.split('-')[0] ip_end = ipsList.split('-')[1] ips = list(iter_iprange(ip_start, ip_end, step=1)) # man 8 dhcpd.conf leases_states = { 1: 'free', 2: 'active', 3: 'expired', 4: 'released', 5: 'abandoned', 6: 'reset', 7: 'backup', 8: 'reserved', 9: 'bootp' } results = { 'Total': len(ips), 'free': 0, 'active': 0, 'expired': 0, 'abandoned': 0, 'reset': 0, 'backup': 0, 'reserved': 0, 'bootp': 0, 'released': 0 } o = pypureomapi.Omapi(dhcp_server_ip, port, KEYNAME, BASE64_ENCODED_KEY) for ip in ips: msg = pypureomapi.OmapiMessage.open('lease') msg.obj.append(('ip-address', pypureomapi.pack_ip(str(ip)))) response = o.query_server(msg) if response.opcode != OMAPI_OP_UPDATE: print 'ZBX_NOTSUPPORTED' # Need to dig for the key error thingy try: state = ord(response.obj[0][1][-1:]) results[leases_states[state]] += 1 except KeyError: print 'ZBX_NOTSUPPORTED' print(results[ip_type])
def omapi(self): """ Note: This method establishes an omapi connection to isc-dhcp-server using settings in input during class initialization Args: self.SimplicifyConfig: A configuration dictionary that is stored as a JSON file. More documentation on individual configuration attirbutes is stored in the config.json file Returns: returns: On success this method returns an omapi client object """ keyname = self.SimplicifyConfig['omapi']['keyname'] secret = self.SimplicifyConfig['omapi']['secret'] server = self.SimplicifyConfig['omapi']['server'] port = self.SimplicifyConfig['omapi']['port'] try: self.client_omapi = pypureomapi.Omapi(server, port, keyname, secret) except pypureomapi.OmapiError, err: print "OMAPI error: %s" % (err, ) return
if len(node_data) == 0: print('New node found with mac address {}'.format(mac)) node_hostname = generate_hostname() node_data = {'function': None, 'hostname': node_hostname} add_node(node_data, mac) write_boot_file(mac) node_function = get_function(node_data) node_hostname = get_hostname(node_data) print('ip address {}, mac address {}, node function {}, hostname {}\n'. format(ip, mac, node_function, node_hostname)) ignition = generate_ignition(node_hostname, node_function) return ignition if __name__ == '__main__': KEYNAME = b"defomapi" BASE64_ENCODED_KEY = b"s0nIEoYP74zdh9OuPXcW0A==" node_file = "nodes.json" dhcp_server_ip = "127.0.0.1" port = 7911 # Port of the omapi service omapi = pypureomapi.Omapi(dhcp_server_ip, port, KEYNAME, BASE64_ENCODED_KEY) app.run(host='0.0.0.0')
import pypureomapi import sys keyname = "jpm_key" secret = "mfVtuvGj7M4QjTfRWHt5p0EoC4Yd6zruJDDgYyeJ6/Eguhx1ZUT6OAIw1C4B6HG92KwZAmxx0SLWN6PwN5Tsmw==" server = "127.0.0.1" port = 7911 try: oma = pypureomapi.Omapi(server, port, keyname, secret, debug=False) except pypureomapi.OmapiError, err: print "OMAPI error: %s" % (err, ) sys.exit(1) oma.add_host("10.0.12.1", "00:50:56:9a:00:2b", "pc009.mens.de") oma.del_host("00:50:56:9a:00:2b")
def getConnection(self): return pypureomapi.Omapi(self.dhcp_server_ip, self.port, self.KEYNAME, self.BASE64_ENCODED_KEY)