class Chef::Knife::ClcGroupCreate

Public Instance Methods

execute() click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 71
def execute
  group = connection.create_group(prepare_group_params)
  parent_link = group['links'].detect { |link| link['rel'] == 'parentGroup' }
  group['parent'] = parent_link['id']

  context[:group] = group

  render
end
fields() click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 81
def fields
  %w(name id locationId description type status parent)
end
headers() click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 85
def headers
  {
    'name' => 'Name',
    'id' => 'ID',
    'locationId' => 'Location',
    'description' => 'Description',
    'type' => 'Type',
    'status' => 'Status',
    'parent' => 'Parent'
  }
end
parse_and_validate_parameters() click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 34
def parse_and_validate_parameters
  unless config[:clc_name]
    errors << 'Name is required'
  end

  unless config[:clc_parent]
    errors << 'Parent Group ID is required'
  end

  custom_fields = config[:clc_custom_fields]
  if custom_fields && custom_fields.any?
    parse_custom_fields(custom_fields)
  end
end
parse_custom_fields(custom_fields) click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 49
def parse_custom_fields(custom_fields)
  custom_fields.map! do |param|
    key, value = param.split('=', 2)

    unless key && value
      errors << "Custom field definition #{param} is malformed"
      next
    end

    { 'id' => key, 'value' => value }
  end
end
prepare_group_params() click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 62
def prepare_group_params
  {
    'name' => config[:clc_name],
    'description' => config[:clc_description],
    'parentGroupId' => config[:clc_parent],
    'customFields' => config[:clc_custom_fields]
  }.delete_if { |_, value| value.nil? || value.empty? }
end
render() click to toggle source
# File lib/chef/knife/clc_group_create.rb, line 97
def render
  group = context[:group]

  fields.each do |field|
    header = headers.fetch(field, field.capitalize)
    value = group.fetch(field, '-')

    if value
      ui.info ui.color(header, :bold) + ': ' + value.to_s
    end
  end
end