cookbook-openstack-object-s.../resources/mounts.rb

71 lines
2.1 KiB
Ruby

# encoding: UTF-8
#
# Cookbook Name:: openstack-object-storage
# Resource:: mounts
#
# Copyright 2012, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author: Ron Pedde <ron.pedde@rackspace.com>
#
# Ensure that swift mounts are strongly enforced. This
# will ensure specified drives are mounted, and unspecified
# drives are not mounted. In addition, if there is a stale
# mountpoint (from disk failure, maybe?), then that mountpoint
# will try to be unmounted
#
# Sample use:
#
# openstack_object_storage_mounts '/srv/node' do
# devices [ 'sdb1', 'sdc1' ]
# action :ensure_exists
# ip '10.1.1.1'
# end
# It will force mounts based on fs uuid (mangled to remove
# dashes) and return a structure that describes the disks
# mounted.
# As this is expected to be consumed for the purposes of
# swift, the ip address should be the address that gets
# embedded into the ring (i.e. the listen port of the storage server)
# Example return structure:
# { '2a9452c5-d929-43d9-9631-4340ace45279': {
# 'device': 'sdb1',
# 'ip': '10.1.1.1',
# 'mounted': 'true',
# 'mountpoint': '2a9452c5d92943d996314340ace45279',
# 'size': 1022 (in 1k increments)
# 'uuid': '2a9452c5-d929-43d9-9631-4340ace45279'
# },
# ...
# }
actions :ensure_exists
def initialize(*args)
super
@action = :ensure_exists
end
attribute :name, kind_of: String
attribute :devices, kind_of: Array
attribute :ip, kind_of: String, default: '127.0.0.1'
attribute :publish_attributes, kind_of: String, default: nil
attribute :format, kind_of: String, default: 'xfs'
attribute :pass, kind_of: Integer, default: 2