-
Notifications
You must be signed in to change notification settings - Fork 129
Added cookbook support #21
base: master
Are you sure you want to change the base?
Changes from 1 commit
2d00b6d
7cf353e
734e886
5270648
a98b9a4
6851acb
169599c
5886b36
5e12451
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
from chef.base import ChefObject, ChefAPI | ||
from chef.exceptions import ChefServerNotFoundError | ||
|
||
class Cookbook(ChefObject): | ||
""" | ||
A Chef Cookbook object. | ||
""" | ||
|
||
url = '/cookbooks' | ||
|
||
attributes = { | ||
'definitions': list, | ||
'name': str, | ||
'attributetes': list, | ||
'files': list, | ||
'json_class': str, | ||
'providers': list, | ||
'metadata': dict, | ||
'libraries': list, | ||
'templates': list, | ||
'resources': list, | ||
'cookbook_name': str, | ||
'version': str, | ||
'recipes': list, | ||
'root_files': list, | ||
'chef_type': str | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Needs trailing comma. |
||
} | ||
|
||
|
||
@staticmethod | ||
def versions(name, api=None): | ||
""" | ||
Get a list of versions for the named cookbook | ||
""" | ||
api = api or ChefAPI.get_global() | ||
url = "{0}/{1}".format(Cookbook.url, name) | ||
try: | ||
data = api[url] | ||
except ChefServerNotFoundError: | ||
return list() | ||
return list([ rev['version'] for rev in data[name]['versions'] ]) | ||
|
||
|
||
def __getitem__(self, attr): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is neither a good idea nor particularly helpful. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for reviewing the pull request. It's been awhile since I wrote this, but I recall writing this for use in generating a tabular cookbook report in which the column headers were environments and there was a single row per cookbook, with the fields mapping cookbook versions to each of the environments. Working with several environments, it was a quick way to ascertain what the version differences were and to quickly identify a few version issues (e.g. catching not having tied the "production" environment to a specific version, potentially a bad thing if uploading a newer version of a cookbook...). I might have used the versions method as part of that, but don't recall exactly if it was useful for my purposes or if I just threw it in... |
||
return self.__dict__[attr] | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to get moved to a classmethod.