예제 #1
0
파일: main.py 프로젝트: gonicus/fts
    def getBootParams(self, address):
        if not self.enabled:
            return None

        proxy = JSONServiceProxy(self.proxy_url, mode="GET")

        status = "localboot"
        kernel = "localboot"
        append = ""
        product = ""

        client_id = proxy.getClientIdByMac(address)
        if not client_id:
            return None

        # Find netboot product with actionRequest
        for product in proxy.getNetBootProductStates_hash(client_id)[client_id]:
            if "actionRequest" in product and not product["actionRequest"] in ["", "undefined", "none"]:
                status = "install"
                product = "product=%s" % product["productId"]
                break

        # Installation requested
        if status == "install":
            params = []

            # append short hostname
            if self.force_hostname:
                params.append("hn=%s" % client_id.split(".", 1)[0])

            # append domain
            if self.force_domain:
                params.append("dn=%s" % client_id.split(".", 1)[1])

            # Set product
            params.append(product)

            # Load pc key
            pc_key = proxy.getOpsiHostKey(client_id)
            if pc_key:
                params.append("pckey=%s" % pc_key)

            # Load depot server for this client
            depot_id = proxy.getDepotId(client_id)
            if depot_id:
                params.append("service=%s" % depot_id)

            # Set language
            params.append("lang=%s" % self.lang)

            # Set PXE parameters
            kernel = "opsi-install"
            append = " ".join([self.append] + params)

        return self.make_pxe_entry(kernel, append, label="OPSI boot - powered by FTS")
예제 #2
0
파일: main.py 프로젝트: anbe42/tmp-fts
    def __init__(self):
        super(ClacksBoot, self).__init__()
        proxy_url = self.config.get('clacks.proxy')
        if not proxy_url:
            syslog.syslog(syslog.LOG_ERR, "no clacks.proxy defined - disabling module")
            return

        if proxy_url.startswith('amqp'):
            if not has_amqp:
                syslog.syslog(syslog.LOG_ERR, "AMQP is configured, but there's no clacks.common available - disabling module")
                return
            self.proxy = AMQPServiceProxy(proxy_url)
        else:
            self.proxy = JSONServiceProxy(proxy_url)

        self.enabled = True
예제 #3
0
파일: main.py 프로젝트: anbe42/tmp-fts
class ClacksBoot(BootPlugin):

    enabled = False

    def __init__(self):
        super(ClacksBoot, self).__init__()
        proxy_url = self.config.get('clacks.proxy')
        if not proxy_url:
            syslog.syslog(syslog.LOG_ERR, "no clacks.proxy defined - disabling module")
            return

        if proxy_url.startswith('amqp'):
            if not has_amqp:
                syslog.syslog(syslog.LOG_ERR, "AMQP is configured, but there's no clacks.common available - disabling module")
                return
            self.proxy = AMQPServiceProxy(proxy_url)
        else:
            self.proxy = JSONServiceProxy(proxy_url)

        self.enabled = True

    def getBootParams(self, address):
        return self.proxy.systemGetBootString(None, address)

    def getInfo(self):
        return "Clacks - object remote boot"
예제 #4
0
class ClacksBoot(BootPlugin):

    enabled = False

    def __init__(self):
        super(ClacksBoot, self).__init__()
        proxy_url = self.config.get('clacks.proxy')
        if not proxy_url:
            syslog.syslog(syslog.LOG_ERR,
                          "no clacks.proxy defined - disabling module")
            return

        if proxy_url.startswith('amqp'):
            if not has_amqp:
                syslog.syslog(
                    syslog.LOG_ERR,
                    "AMQP is configured, but there's no clacks.common available - disabling module"
                )
                return
            self.proxy = AMQPServiceProxy(proxy_url)
        else:
            self.proxy = JSONServiceProxy(proxy_url)

        self.enabled = True

    def getBootParams(self, address):
        return self.proxy.systemGetBootString(None, address)

    def getInfo(self):
        return "Clacks - object remote boot"
예제 #5
0
    def __init__(self):
        super(ClacksBoot, self).__init__()
        proxy_url = self.config.get('clacks.proxy')
        if not proxy_url:
            syslog.syslog(syslog.LOG_ERR,
                          "no clacks.proxy defined - disabling module")
            return

        if proxy_url.startswith('amqp'):
            if not has_amqp:
                syslog.syslog(
                    syslog.LOG_ERR,
                    "AMQP is configured, but there's no clacks.common available - disabling module"
                )
                return
            self.proxy = AMQPServiceProxy(proxy_url)
        else:
            self.proxy = JSONServiceProxy(proxy_url)

        self.enabled = True
예제 #6
0
파일: main.py 프로젝트: gonicus/fts
    def getBootParams(self, address):
        if not self.enabled:
            return None

        proxy = JSONServiceProxy(self.proxy_url, mode='GET')

        status= "localboot"
        kernel = "localboot"
        append = ""
        product= ""

        client_id = proxy.getClientIdByMac(address)
        if not client_id:
            return None

        # Find netboot product with actionRequest
        for product in proxy.getNetBootProductStates_hash(client_id)[client_id]:
            if 'actionRequest' in product and not product['actionRequest'] in ['', 'undefined', 'none']:
                status = "install"
                product = "product=%s" % product['productId']
                break

        # Installation requested
        if status == "install":
            params = []

            # append short hostname
            if self.force_hostname:
                params.append("hn=%s" % client_id.split('.', 1)[0])

            # append domain
            if self.force_domain:
                params.append("dn=%s" % client_id.split('.', 1)[1])

            # Set product
            params.append(product)

            # Load pc key
            pc_key = proxy.getOpsiHostKey(client_id)
            if pc_key:
                params.append("pckey=%s" % pc_key)

            # Load depot server for this client
            depot_id = proxy.getDepotId(client_id)
            if depot_id:
                params.append("service=%s" % depot_id)

            # Set language
            params.append("lang=%s" % self.lang)

            # Set PXE parameters
            kernel = "opsi-install"
            append = " ".join([self.append] + params)

        return self.make_pxe_entry(kernel, append, label="OPSI boot - powered by FTS")