Source code for saltext.vcf.clients.vcfa_vro_package

"""VCF Automation — vRO packages (``/vco/api/packages``).

vRealize Orchestrator packages are the unit of vRO content
distribution. They wrap workflows, actions, configuration elements,
resources, and other vRO objects.
"""

import requests

from saltext.vcf.utils import vcfa

_BASE = "/vco/api/packages"


def list_(opts, profile=None):
    resp = vcfa.api_get(opts, _BASE, profile=profile)
    return resp.get("link", []) or resp.get("content", []) or []


[docs] def get(opts, name, profile=None): """Return the package metadata for *name* (e.g. ``com.example.pkg``).""" return vcfa.api_get(opts, f"{_BASE}/{name}", profile=profile)
def get_or_none(opts, name, profile=None): try: return get(opts, name, profile=profile) except requests.HTTPError as exc: if exc.response is not None and exc.response.status_code == 404: return None raise
[docs] def import_(opts, name, package_bytes, *, overwrite=False, profile=None): """Import a ``.package`` file into vRO. *package_bytes* is the raw ``.package`` content. *name* is used as the multipart form field name only; the package's internal name comes from the file itself. """ files = {"file": (f"{name}.package", package_bytes, "application/octet-stream")} params = {"overwrite": "true"} if overwrite else None return vcfa.api_post_multipart(opts, _BASE, files=files, params=params, profile=profile)
[docs] def delete(opts, name, *, option=None, profile=None): """Delete a vRO package. *option* one of ``deletePackage`` (just the package), ``deletePackageWithContent`` (and its content), ``deletePackageKeepingShared`` (default behavior). """ params = {"option": option} if option else None return vcfa.api_delete(opts, f"{_BASE}/{name}", params=params, profile=profile)
[docs] def export_(opts, name, profile=None): """Return the raw ``.package`` bytes for *name*.""" resp = vcfa._request("GET", opts, f"{_BASE}/{name}", profile=profile) return resp.content