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)
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)
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)
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
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)
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)