class Chef::Knife::NodePolicySet

def incomplete_policyfile_options?

True if one of policy_name or policy_group was given, but not both
def incomplete_policyfile_options?
  policy_group, policy_name = @name_args[1..]
  (policy_group.nil? || policy_name.nil? || @name_args[1..-1].size > 2)
end

def run

def run
  validate_node!
  validate_options!
  node = Chef::Node.load(@name_args[0])
  set_policy(node)
  if node.save
    ui.info "Successfully set the policy on node #{node.name}"
  else
    ui.info "Error in updating node #{node.name}"
  end
end

def set_policy(node)

Set policy name and group to node
def set_policy(node)
  policy_group, policy_name = @name_args[1..]
  node.policy_name  = policy_name
  node.policy_group = policy_group
end

def validate_node!

Validate node pass in CLI
def validate_node!
  if @name_args[0].nil?
    ui.error("You must specify a node name")
    show_usage
    exit 1
  end
end

def validate_options!

Validate policy name and policy group
def validate_options!
  if incomplete_policyfile_options?
    ui.error("Policy group and name must be specified together")
    exit 1
  end
  true
end