Represents an API resource type, containing the information required to build urls for requests
| 20 | |
| 21 | |
| 22 | class Resource: |
| 23 | """ Represents an API resource type, containing the information required to build urls for requests """ |
| 24 | |
| 25 | def __init__(self, prefix=None, group=None, api_version=None, kind=None, |
| 26 | namespaced=False, verbs=None, name=None, preferred=False, client=None, |
| 27 | singularName=None, shortNames=None, categories=None, subresources=None, **kwargs): |
| 28 | |
| 29 | if None in (api_version, kind, prefix): |
| 30 | raise ValueError("At least prefix, kind, and api_version must be provided") |
| 31 | |
| 32 | self.prefix = prefix |
| 33 | self.group = group |
| 34 | self.api_version = api_version |
| 35 | self.kind = kind |
| 36 | self.namespaced = namespaced |
| 37 | self.verbs = verbs |
| 38 | self.name = name |
| 39 | self.preferred = preferred |
| 40 | self.client = client |
| 41 | self.singular_name = singularName or (name[:-1] if name else "") |
| 42 | self.short_names = shortNames |
| 43 | self.categories = categories |
| 44 | self.subresources = { |
| 45 | k: Subresource(self, **v) for k, v in (subresources or {}).items() |
| 46 | } |
| 47 | |
| 48 | self.extra_args = kwargs |
| 49 | |
| 50 | def to_dict(self): |
| 51 | d = { |
| 52 | '_type': 'Resource', |
| 53 | 'prefix': self.prefix, |
| 54 | 'group': self.group, |
| 55 | 'api_version': self.api_version, |
| 56 | 'kind': self.kind, |
| 57 | 'namespaced': self.namespaced, |
| 58 | 'verbs': self.verbs, |
| 59 | 'name': self.name, |
| 60 | 'preferred': self.preferred, |
| 61 | 'singularName': self.singular_name, |
| 62 | 'shortNames': self.short_names, |
| 63 | 'categories': self.categories, |
| 64 | 'subresources': {k: sr.to_dict() for k, sr in self.subresources.items()}, |
| 65 | } |
| 66 | d.update(self.extra_args) |
| 67 | return d |
| 68 | |
| 69 | @property |
| 70 | def group_version(self): |
| 71 | if self.group: |
| 72 | return '{}/{}'.format(self.group, self.api_version) |
| 73 | return self.api_version |
| 74 | |
| 75 | def __repr__(self): |
| 76 | return '<{}({}/{})>'.format(self.__class__.__name__, self.group_version, self.name) |
| 77 | |
| 78 | @property |
| 79 | def urls(self): |
no outgoing calls
no test coverage detected