<commit_before>from PLC.Faults import *
from PLC.Method import Method
from PLC.Parameter import Parameter, Mixed
from PLC.NodeGroups import NodeGroup, NodeGroups
from PLC.Auth import PasswordAuth

class AddNodeGroup(Method):
    """
    Adds a new node group. Any values specified in optional_vals are used,
    otherwise defaults are used.

    Returns the new nodegroup_id (> 0) if successful, faults otherwise.
    """

    roles = ['admin']

    accepts = [
        PasswordAuth(),
        NodeGroup.fields['name'],
        NodeGroup.fields['description']
        ]

    returns = Parameter(int, 'New nodegroup_id (> 0) if successful')

    def call(self, auth, name, description):
	# Create node group
        nodegroup = NodeGroup(self.api, {'name': name, 'description': description})
        nodegroup.sync()

        return nodegroup['nodegroup_id']
<commit_msg>make description an optional field<commit_after>from PLC.Faults import *
from PLC.Method import Method
from PLC.Parameter import Parameter, Mixed
from PLC.NodeGroups import NodeGroup, NodeGroups
from PLC.Auth import PasswordAuth

can_update = lambda (field, value): field in \
             ['description']

class AddNodeGroup(Method):
    """
    Adds a new node group. Any values specified in nodegroup_fields
    are used, otherwise defaults are used.

    Returns the new nodegroup_id (> 0) if successful, faults otherwise.
    """

    roles = ['admin']

    update_fields = dict(filter(can_update, NodeGroup.fields.items()))

    accepts = [
        PasswordAuth(),
        NodeGroup.fields['name'],
        update_fields
        ]

    returns = Parameter(int, 'New nodegroup_id (> 0) if successful')

    def call(self, auth, name, nodegroup_fields = {}):
        nodegroup_fields = dict(filter(can_update, nodegroup_fields.items()))
        nodegroup = NodeGroup(self.api, nodegroup_fields)
        nodegroup['name'] = name
        nodegroup.sync()

        return nodegroup['nodegroup_id']

{'fraction_non_alphanumeric': 0.09954291518537328, 'fraction_numerical': 0.002031488065007618, 'mean_word_length': 3.2733188720173536, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1653519', 'n_tokens_mistral': 565, 'n_tokens_neox': 529, 'n_words': 169}