X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/441e7cfd9cadc50ff7df27a98e1d5b2db169e15d..20e01edd2811c9914724936624a5ff0818ce9024:/lib/rapi/baserlib.py diff --git a/lib/rapi/baserlib.py b/lib/rapi/baserlib.py index 0de15c9..1409476 100644 --- a/lib/rapi/baserlib.py +++ b/lib/rapi/baserlib.py @@ -27,15 +27,15 @@ import ganeti.cli import ganeti.opcodes from ganeti import luxi +from ganeti import rapi def BuildUriList(ids, uri_format, uri_fields=("name", "uri")): """Builds a URI list as used by index resources. - Args: - - ids: List of ids as strings - - uri_format: Format to be applied for URI - - uri_fields: Optional parameter for field ids + @param ids: list of ids as strings + @param uri_format: format to be applied for URI + @param uri_fields: optional parameter for field IDs """ (field_id, field_uri) = uri_fields @@ -53,9 +53,8 @@ def BuildUriList(ids, uri_format, uri_fields=("name", "uri")): def ExtractField(sequence, index): """Creates a list containing one column out of a list of lists. - Args: - - sequence: Sequence of lists - - index: Index of field + @param sequence: sequence of lists + @param index: index of field """ return map(lambda item: item[index], sequence) @@ -64,13 +63,12 @@ def ExtractField(sequence, index): def MapFields(names, data): """Maps two lists into one dictionary. - Args: - - names: Field names (list of strings) - - data: Field data (list) + Example:: + >>> MapFields(["a", "b"], ["foo", 123]) + {'a': 'foo', 'b': 123} - Example: - >>> MapFields(["a", "b"], ["foo", 123]) - {'a': 'foo', 'b': 123} + @param names: field names (list of strings) + @param data: field data (list) """ if len(names) != len(data): @@ -78,41 +76,41 @@ def MapFields(names, data): return dict(zip(names, data)) -def _Tags_GET(kind, name=None): +def _Tags_GET(kind, name=""): """Helper function to retrieve tags. """ - if name is None: - # Do not cause "missing parameter" error, which happens if a parameter - # is None. - name = "" op = ganeti.opcodes.OpGetTags(kind=kind, name=name) tags = ganeti.cli.SubmitOpCode(op) return list(tags) -def _Tags_POST(kind, tags, name=None): +def _Tags_PUT(kind, tags, name=""): """Helper function to set tags. """ - if name is None: - # Do not cause "missing parameter" error, which happens if a parameter - # is None. - name = "" cl = luxi.Client() return cl.SubmitJob([ganeti.opcodes.OpAddTags(kind=kind, name=name, tags=tags)]) +def _Tags_DELETE(kind, tags, name=""): + """Helper function to delete tags. + + """ + cl = luxi.Client() + return cl.SubmitJob([ganeti.opcodes.OpDelTags(kind=kind, name=name, + tags=tags)]) + + def MapBulkFields(itemslist, fields): """Map value to field name in to one dictionary. - Args: - - itemslist: A list of items values - - instance: A list of items names + @param itemslist: a list of items values + @param fields: a list of items names + + @return: a list of mapped dictionaries - Returns: - A list of mapped dictionaries """ items_details = [] for item in itemslist: @@ -121,20 +119,57 @@ def MapBulkFields(itemslist, fields): return items_details +def MakeParamsDict(opts, params): + """Makes params dictionary out of a option set. + + This function returns a dictionary needed for hv or be parameters. But only + those fields which provided in the option set. Takes parameters frozensets + from constants. + + @type opts: dict + @param opts: selected options + @type params: frozenset + @param params: subset of options + @rtype: dict + @return: dictionary of options, filtered by given subset. + + """ + result = {} + + for p in params: + try: + value = opts[p] + except KeyError: + continue + result[p] = value + + return result + + class R_Generic(object): """Generic class for resources. """ - def __init__(self, request, items, queryargs, post_data): + # Default permission requirements + GET_ACCESS = [] + PUT_ACCESS = [rapi.RAPI_ACCESS_WRITE] + POST_ACCESS = [rapi.RAPI_ACCESS_WRITE] + DELETE_ACCESS = [rapi.RAPI_ACCESS_WRITE] + + def __init__(self, items, queryargs, req): """Generic resource constructor. - Args: - request: HTTPRequestHandler object - items: a list with variables encoded in the URL - queryargs: a dictionary with additional options from URL + @param items: a list with variables encoded in the URL + @param queryargs: a dictionary with additional options from URL """ - self.request = request self.items = items self.queryargs = queryargs - self.post_data = post_data + self.req = req + self.sn = None + + def getSerialNumber(self): + """Get Serial Number. + + """ + return self.sn