예제 #1
0
 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
예제 #2
0
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)
예제 #3
0
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,)
예제 #4
0
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
예제 #5
0
    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)
예제 #6
0
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
예제 #7
0
파일: omapi.py 프로젝트: morinap/salt-1
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])
예제 #9
0
    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
예제 #10
0
    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')
예제 #11
0
파일: t.py 프로젝트: ottacom/vaas
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")
예제 #12
0
 def getConnection(self):
     return pypureomapi.Omapi(self.dhcp_server_ip, self.port, self.KEYNAME, self.BASE64_ENCODED_KEY)