Class: Chef::ChefFS::FileSystem::ChefServer::ChefServerRootDir
- Inherits:
-
BaseFSDir
- Object
- BaseFSObject
- BaseFSDir
- Chef::ChefFS::FileSystem::ChefServer::ChefServerRootDir
- Defined in:
- lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb
Overview
Represents the root of a Chef server (or organization), under which nodes, roles, cookbooks, etc. can be found.
Instance Attribute Summary collapse
-
#chef_private_key ⇒ Object
readonly
Returns the value of attribute chef_private_key.
-
#chef_server_url ⇒ Object
readonly
Returns the value of attribute chef_server_url.
-
#chef_username ⇒ Object
readonly
Returns the value of attribute chef_username.
-
#cookbook_version ⇒ Object
readonly
Returns the value of attribute cookbook_version.
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
-
#repo_mode ⇒ Object
readonly
Returns the value of attribute repo_mode.
-
#versioned_cookbooks ⇒ Object
readonly
Returns the value of attribute versioned_cookbooks.
Attributes inherited from BaseFSObject
Instance Method Summary collapse
- #api_path ⇒ Object
- #can_have_child?(name, is_dir) ⇒ Boolean
- #chef_rest ⇒ Object
- #children ⇒ Object
- #fs_description ⇒ Object
- #get_json(path) ⇒ Object
-
#initialize(root_name, chef_config, options = {}) ⇒ ChefServerRootDir
constructor
Create a new Chef server root.
- #make_child_entry(name) ⇒ Object
- #org ⇒ Object
- #path_for_printing ⇒ Object
- #rest ⇒ Object
Methods inherited from BaseFSDir
Methods inherited from BaseFSObject
#chef_object, #child, #compare_to, #create_child, #delete, #dir?, #exists?, #read, #root, #write
Constructor Details
#initialize(root_name, chef_config, options = {}) ⇒ ChefServerRootDir
Create a new Chef server root.
Parameters
- root_name
-
A friendly name for the root, for printing–like “remote” or “chef_central”.
- chef_config
-
A hash with options that look suspiciously like Chef::Config, including the following keys:
- :chef_server_url
-
The URL to the Chef server or top of the organization
- :node_name
-
The username to authenticate to the Chef server with
- :client_key
-
The private key for the user for authentication
- :environment
-
The environment in which you are presently working
- :repo_mode
-
The repository mode, :hosted_everything, :everything or :static. This determines the set of subdirectories the Chef server will offer up.
- :versioned_cookbooks
-
whether or not to include versions in cookbook names
- options
-
Other options:
- :cookbook_version
-
when cookbooks are retrieved, grab this version for them.
- :freeze
-
freeze cookbooks on upload
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 77 def initialize(root_name, chef_config, = {}) super("", nil) @chef_server_url = chef_config[:chef_server_url] @chef_username = chef_config[:node_name] @chef_private_key = chef_config[:client_key] @environment = chef_config[:environment] @repo_mode = chef_config[:repo_mode] @versioned_cookbooks = chef_config[:versioned_cookbooks] @root_name = root_name @cookbook_version = [:cookbook_version] # Used in knife diff and download for server cookbook version end |
Instance Attribute Details
#chef_private_key ⇒ Object (readonly)
Returns the value of attribute chef_private_key.
91 92 93 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 91 def chef_private_key @chef_private_key end |
#chef_server_url ⇒ Object (readonly)
Returns the value of attribute chef_server_url.
89 90 91 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 89 def chef_server_url @chef_server_url end |
#chef_username ⇒ Object (readonly)
Returns the value of attribute chef_username.
90 91 92 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 90 def chef_username @chef_username end |
#cookbook_version ⇒ Object (readonly)
Returns the value of attribute cookbook_version.
94 95 96 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 94 def cookbook_version @cookbook_version end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
92 93 94 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 92 def environment @environment end |
#repo_mode ⇒ Object (readonly)
Returns the value of attribute repo_mode.
93 94 95 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 93 def repo_mode @repo_mode end |
#versioned_cookbooks ⇒ Object (readonly)
Returns the value of attribute versioned_cookbooks.
95 96 97 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 95 def versioned_cookbooks @versioned_cookbooks end |
Instance Method Details
#api_path ⇒ Object
113 114 115 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 113 def api_path "" end |
#can_have_child?(name, is_dir) ⇒ Boolean
121 122 123 124 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 121 def can_have_child?(name, is_dir) result = children.find { |child| child.name == name } result && !!result.dir? == !!is_dir end |
#chef_rest ⇒ Object
109 110 111 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 109 def chef_rest Chef::ServerAPI.new(chef_server_url, client_name: chef_username, signing_key_filename: chef_private_key, api_version: "0") end |
#children ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 142 def children @children ||= begin result = [ # /cookbooks versioned_cookbooks ? VersionedCookbooksDir.new("cookbooks", self) : CookbooksDir.new("cookbooks", self), # /data_bags DataBagsDir.new("data_bags", self, "data"), # /environments EnvironmentsDir.new("environments", self, nil, Chef::ChefFS::DataHandler::EnvironmentDataHandler.new), # /roles RestListDir.new("roles", self, nil, Chef::ChefFS::DataHandler::RoleDataHandler.new), ] if repo_mode == "hosted_everything" result += [ # /acls AclsDir.new("acls", self), # /clients RestListDir.new("clients", self, nil, Chef::ChefFS::DataHandler::ClientDataHandler.new), # /containers RestListDir.new("containers", self, nil, Chef::ChefFS::DataHandler::ContainerDataHandler.new), # /cookbook_artifacts CookbookArtifactsDir.new("cookbook_artifacts", self), # /groups RestListDir.new("groups", self, nil, Chef::ChefFS::DataHandler::GroupDataHandler.new), # /nodes NodesDir.new("nodes", self, nil, Chef::ChefFS::DataHandler::NodeDataHandler.new), # /org.json OrgEntry.new("org.json", self), # /members.json OrganizationMembersEntry.new("members.json", self), # /invitations.json OrganizationInvitesEntry.new("invitations.json", self), # /policies PoliciesDir.new("policies", self, nil, Chef::ChefFS::DataHandler::PolicyDataHandler.new), # /policy_groups PolicyGroupsDir.new("policy_groups", self, nil, Chef::ChefFS::DataHandler::PolicyGroupDataHandler.new), ] elsif repo_mode != "static" result += [ # /clients RestListDir.new("clients", self, nil, Chef::ChefFS::DataHandler::ClientDataHandler.new), # /nodes NodesDir.new("nodes", self, nil, Chef::ChefFS::DataHandler::NodeDataHandler.new), # /users RestListDir.new("users", self, nil, Chef::ChefFS::DataHandler::UserDataHandler.new), ] end result.sort_by(&:name) end end |
#fs_description ⇒ Object
97 98 99 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 97 def fs_description "Chef server at #{chef_server_url} (user #{chef_username}), repo_mode = #{repo_mode}" end |
#get_json(path) ⇒ Object
105 106 107 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 105 def get_json(path) chef_rest.get(path) end |
#make_child_entry(name) ⇒ Object
138 139 140 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 138 def make_child_entry(name) children.find { |child| child.name == name } end |
#org ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 126 def org @org ||= begin path = Pathname.new(URI.parse(chef_server_url).path).cleanpath if File.dirname(path) == "/organizations" File.basename(path) else # In Chef 12, everything is in an org. "chef" end end end |
#path_for_printing ⇒ Object
117 118 119 |
# File 'lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb', line 117 def path_for_printing "#{@root_name}/" end |