Exemple #1
0
    def handle_PUT(self):
        algorithm_name = self.get_param("algorithm")
        runtime_name = self.get_param("runtime")
        if algorithm_name:
            a = algorithm_api.get(self.splunk, algorithm_name)
            r = a.runtime

            def set_value(name, value):
                return a.set_param(name, value)
        elif runtime_name:
            r = runtime.get(self.splunk, runtime_name)

            def set_value(name, value):
                old = r.get_param(name)
                r.set_param(name, value)
        else:
            raise Exception("requires algorithm or runtime")
        changed_value = False
        for name in r.algorithm_param_names:
            value = self.get_param(name)
            if value is not None:
                set_value(name, value)
                changed_value = True
        if changed_value and algorithm_name:
            for d in a.deployments:
                d.trigger_deploying()
Exemple #2
0
    def handle_GET(self):
        algorithm_name = self.get_param("algorithm")
        runtime_name = self.get_param("runtime")
        include_deployments = is_truthy(self.get_param("include_deployments"))
        if include_deployments and not algorithm_name:
            raise Exception(
                "include_deployments only works with algorithm_name")
        if algorithm_name:
            a = algorithm_api.get(self.splunk, algorithm_name)
            r = a.runtime
            get_default = r.get_param

            def get_value(name):
                return a.get_param(name, inherit=False)
        elif runtime_name:
            r = runtime.get(self.splunk, runtime_name)
            get_default = r.get_param

            def get_value(_):
                return None
        else:
            raise Exception("requires algorithm or runtime")
        params = []
        params.extend([
            {
                "name": name,
                "label": get_label_for_name(name),
                "default": get_default(name),
                "value": get_value(name),
                "type": "text",  # "picker" "text",
                "mandatory": False,
                "important": True,
            } for name in r.algorithm_param_names
        ])
        if include_deployments:
            for d in deployment.get_all_for_algorithm(self.splunk,
                                                      algorithm_name):
                e = d.environment
                params.extend([
                    {
                        "environment":
                        e.name,
                        "name":
                        name,
                        "label":
                        get_label_for_name(name),
                        "default":
                        deployment.get_default_param(name, e, algorithm=a),
                        "value":
                        d.get_param(name, inherit=False),
                        "type":
                        "text",  # "picker" "text",
                        "mandatory":
                        False,
                        "important":
                        True,
                    } for name in r.deployment_param_names
                ])
        self.send_entries(params)
Exemple #3
0
 def handle_POST(self):
     algorithm_name = self.get_param("name")
     runtime_name = self.get_param("runtime")
     if not algorithm_name:
         raise Exception("missing name")
     if algorithm_api.exists(self.splunk, algorithm_name):
         raise Exception("algo already exist")
     r = runtime.get(self.splunk, runtime_name)
     a = algorithm_api.create(self.splunk, algorithm_name, r.name)
     source_code = self.get_param("source_code")
     if source_code:
         a.update_source_code(code=source_code, )
Exemple #4
0
def get(splunk, algorithm_name):
    if not exists(splunk, algorithm_name):
        raise Exception("algorithm with name %s doesn't exist" %
                        algorithm_name)
    algorithm_stanza = conf.get(splunk)[algorithm_name]
    runtime_name = algorithm_stanza["runtime"]
    if not runtime.exists(splunk, runtime_name):
        raise Exception(
            "algorithm '%s' refers to runtime '%s' which is unknown" % (
                algorithm_name,
                runtime_name,
            ))
    r = runtime.get(splunk, runtime_name)
    algorithm_handler = r.algorithm_handler
    AlgorithmClass = get_class(algorithm_handler)
    return AlgorithmClass(splunk, algorithm_stanza)
Exemple #5
0
def create(splunk, algorithm_name, runtime_name):
    if exists(splunk, algorithm_name):
        raise Exception("algorithm with name %s already exists" %
                        algorithm_name)
    r = runtime.get(splunk, runtime_name)
    stanza = conf.get(splunk).create(algorithm_name)
    stanza.submit({
        "runtime": runtime_name,
    })
    stanza.refresh()
    algorithm = get(splunk, algorithm_name)
    algorithm.update_source_code(
        code=r.source_code,
        version=1,
    )
    algorithm.update_deployment_code(
        code=r.deployment_code,
        version=1,
    )
    return algorithm
Exemple #6
0
    def handle_GET(self):
        algorithm_name = self.get_param("algorithm")
        runtime_name = self.get_param("runtime")
        environment_name = self.get_param("environment")
        if algorithm_name and environment_name:
            d = deployment.get(self.splunk, algorithm_name, environment_name)
            a = d.algorithm
            e = d.environment
            r = a.runtime

            def get_default(name):
                return get_default_param(name, e, algorithm=a)

            def get_value(name):
                return d.get_param(name, inherit=False)

        if runtime_name and environment_name:
            e = environment.get(self.splunk, environment_name)
            r = runtime.get(self.splunk, runtime_name)

            def get_default(name):
                return get_default_param(name, e, runtime=r)

            def get_value(_):
                return None

        params = [
            {
                "name": name,
                "label": get_label_for_name(name),
                "default": get_default(name),
                "value": get_value(name),
                "type": "text",  # "picker" "text",
                "mandatory": False,
                "important":
                True,  # True if name == "executor_instance_count" else False,
            } for name in r.deployment_param_names
        ]
        self.send_entries(params)
 def runtime(self):
     if not self._runtime:
         self._runtime = runtime.get(self._splunk, self.runtime_name)
     return self._runtime