Пример #1
0
    def handle(self, request, context):
        try:
            savanna = savannaclient.Client(request)
            node_groups = []
            configs_dict = whelpers.parse_configs_from_context(context, self.defaults)

            ids = json.loads(context["ng_forms_ids"])
            for id in ids:
                name = context["ng_group_name_" + str(id)]
                template_id = context["ng_template_id_" + str(id)]
                count = context["ng_count_" + str(id)]
                ng = api_objects.NodeGroup(name, template_id, count=count)
                node_groups.append(ng)

            plugin, hadoop_version = whelpers.get_plugin_and_hadoop_version(request)

            # TODO(nkonovalov): Fix client to support default_image_id
            savanna.cluster_templates.create(
                context["general_cluster_template_name"],
                plugin,
                hadoop_version,
                context["general_description"],
                configs_dict,
                node_groups,
                context["anti_affinity_info"],
            )
            return True
        except api_base.APIException as e:
            self.error_description = str(e)
            return False
        except Exception:
            exceptions.handle(request)
Пример #2
0
    def __init__(self, request, *args, **kwargs):
        super(ConfigureNodegroupsAction, self).__init__(request, *args, **kwargs)

        savanna = savannaclient.Client(request)

        plugin, hadoop_version = whelpers.get_plugin_and_hadoop_version(request)

        self.templates = savanna.node_group_templates.find(plugin_name=plugin, hadoop_version=hadoop_version)

        deletable = request.REQUEST.get("deletable", dict())

        if "forms_ids" in request.POST:
            self.groups = []
            for id in json.loads(request.POST["forms_ids"]):
                group_name = "group_name_" + str(id)
                template_id = "template_id_" + str(id)
                count = "count_" + str(id)
                self.groups.append(
                    {
                        "name": request.POST[group_name],
                        "template_id": request.POST[template_id],
                        "count": request.POST[count],
                        "id": id,
                        "deletable": deletable.get(request.POST[group_name], "true"),
                    }
                )

                whelpers.build_node_group_fields(self, group_name, template_id, count)
Пример #3
0
    def get_help_text(self):
        extra = dict()
        plugin, hadoop_version = whelpers.get_plugin_and_hadoop_version(self.request)

        extra["plugin_name"] = plugin
        extra["hadoop_version"] = hadoop_version
        return super(GeneralConfigAction, self).get_help_text(extra)
Пример #4
0
def populate_anti_affinity_choices(self, request, context):
    savanna = savannaclient(request)
    plugin, version = whelpers.get_plugin_and_hadoop_version(request)

    version_details = savanna.plugins.get_version_details(plugin, version)
    process_choices = []
    for service, processes in version_details.node_processes.items():
        for process in processes:
            process_choices.append((process, process))

    cluster_template_id = request.REQUEST.get("cluster_template_id", None)
    if cluster_template_id is None:
        selected_processes = request.REQUEST.get("aa_groups", [])
    else:
        cluster_template = savanna.cluster_templates.get(cluster_template_id)
        selected_processes = cluster_template.anti_affinity

    checked_dict = dict()

    for process in selected_processes:
        checked_dict[process] = process

    self.fields['anti_affinity'].initial = checked_dict

    return process_choices
Пример #5
0
    def __init__(self, request, context_seed, entry_point, *args, **kwargs):
        ConfigureClusterTemplate._cls_registry = set([])

        savanna = savannaclient.Client(request)
        hlps = helpers.Helpers(savanna)

        plugin, hadoop_version = whelpers.get_plugin_and_hadoop_version(request)

        general_parameters = hlps.get_cluster_general_configs(plugin, hadoop_version)
        service_parameters = hlps.get_targeted_cluster_configs(plugin, hadoop_version)

        self._populate_tabs(general_parameters, service_parameters)

        super(ConfigureClusterTemplate, self).__init__(request, context_seed, entry_point, *args, **kwargs)
Пример #6
0
    def __init__(self, request, *args, **kwargs):
        super(GeneralConfigAction, self).__init__(request, *args, **kwargs)
        plugin, hadoop_version = whelpers.get_plugin_and_hadoop_version(request)

        self.fields["plugin_name"] = forms.CharField(widget=forms.HiddenInput(), initial=plugin)
        self.fields["hadoop_version"] = forms.CharField(widget=forms.HiddenInput(), initial=hadoop_version)