Skip to main content

Morpheus Data API Client

Project description

morpheus-data-client

Python client to Morpheus Data API

https://apidocs.morpheusdata.com/

Tests Codecov

Usage

import os
from morpheus_data_api import MorpheusDataApi

os.environ['MORPHEUS_HOST'] = 'somehost.com'
os.environ['MORPHEUS_TOKEN'] = 'foobar'

api = MorpheusDataApi()
type_data = {
    'optionType': {
        'name': 'foo',
        'type': 'text',
        'description': 'foo',
        'fieldLabel': 'foo',
        'fieldName': 'foo'
    }
}

def type_names():
    r = api.call(
        'library/option-types', transform='optionTypes[].name'
    )
    return r

assert 'foo' not in type_names()

api.upsert('library/option-types', 'foo', type_data)
assert 'foo' in type_names()

type_data['optionType']['description'] = 'FOO'
assert api.get('library/option-types', 'foo')['description'] == 'foo'

api.upsert('library/option-types', 'foo', type_data)
assert api.get('library/option-types', 'foo')['description'] == 'FOO'

api.delete('library/option-types', 'foo')
assert 'foo' not in type_names()

Deploy/Undeploy Config

Given a yaml config file tests/data/option_types/foo1.yaml:

$optionType:
  name: foo1
  fieldName: foo1
  type: select
  description: foo1
  fieldLabel: foo1
  optionList:
    id:
      $optionTypeList:
        name: foo1
        type: manual
        initialDataset:
          $dataset:
            - bar
            - baz

It can be deployed/undeployed like so:

import os
from morpheus_data_api import MorpheusDataApi

os.environ['MORPHEUS_HOST'] = 'somehost.com'
os.environ['MORPHEUS_TOKEN'] = 'foobar'

api = MorpheusDataApi()
api.deploy_files('option_types/foo1.yaml')
api.deploy_files('option_types/foo1.yaml', undeploy=True)

Or deployed through the morpheus-data-api console script

$ morpheus-data-api deploy tests/data/option_types/foo1.yaml
created optionTypeList foo1 [14]
created optionType foo1 [1766]
1/1] deployed foo1.yaml
deployed 1/1 file(s)

Then undeployed:

$ morpheus-data-api undeploy tests/data/option_types/foo1.yaml
deleted optionType foo1 [1766]
deleted optionTypeList foo1 [14]
1/1] undeployed foo1.yaml
undeployed 1/1 file(s)

This works by upserting or deleting nested entities in the expected order, and linking referential IDs to the parent object

See tests/data/catalog_items/item1.yaml for larger example

$ morpheus-data-api deploy tests/data/catalog_items/item1.yaml
created task task1 [9]
created optionType item1 [1767]
created optionTypeList item2 [15]
created optionType item2 [1768]
created taskSet item1 [5]
created catalogItemType item1 [3]
created schedule schedule1 [6]
created job job1 [11]
1/1] deployed item1.yaml
deployed 1/1 file(s)

Variables

The following variables are supported within the config file

variable description example
$createPath nested below an $api object, override the path used to create entity $createPath: /api/library/instance-types/${id:instanceTypes:blueprint1.instanceType1}/layouts
$dataset convert list of values to json optionType dataset $dataset: ['foo', 'bar']
$datasetCsv convert contents of local csv file to json optionType dataset $datasetCsv: data.csv
$deleteIds delete additional entities during undeploy $deleteIds: [${id:optionTypes:foo}]
$deletePath nested below an $api object, override the path used to delete entity $deletePath: /api/library/instance-types/${id:instanceTypes:blueprint1.instanceType1}/layouts
$entity nested below an $api object, override entity name $entity: instanceTypeLayout
$entityId nested below an $api object, override entity ID $entityId: key/128/foobar
$fileContent read contents of local file $fileContent: foo.py
$id lookup entity ID from ${id:path:name} expression id: ${id:optionTypes:foo}
$json convert value to JSON $json: [1,2,3]
$setName nested below an $api object, don't automatically set entity name if false $setName: false
$updatePath nested below an $api object, override the path used to update entity $updatePath: /api/library/instance-types/${id:instanceTypes:blueprint1.instanceType1}/layouts
$validate nested below an $api object, disable validation if false $validate: false

Console Script

The morpheus-data-api console script is installed as part of setup.py

usage: morpheus-data-api [-h] [--name NAME] [-q Q] [-y]
                         {deploy,undeploy,get,export} path

Query Morpheus data API and deploy config to it

positional arguments:
  {deploy,undeploy,get,export}
  path                  yaml file, dir of yaml files or api path

optional arguments:
  -h, --help            show this help message and exit
  --name NAME           export name
  -q Q                  jmespath query
  -y                    output in yaml format

MockMorpheusDataApi

Bundled into the package is mock.MockMorpheusDataApi() which provides full persistent mocking of Morpheus API. See tests/test_morpheus_data_api.py for examples how this is used.

License

The license is Apache 2.0, see LICENSE for the details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

morpheus_data_api-0.0.2-py2.py3-none-any.whl (18.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file morpheus_data_api-0.0.2-py2.py3-none-any.whl.

File metadata

  • Download URL: morpheus_data_api-0.0.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.2.0 pkginfo/1.7.1 requests/2.21.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.6.8

File hashes

Hashes for morpheus_data_api-0.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4210593fe8c3b8a8019c8f960006840c4dca0f9c92087ecadd8703d514647c17
MD5 de41fb59d939ed45321ad223df299a86
BLAKE2b-256 618cb3a7b534c9b9df1c7cbcb929a9e9c7ba73b195eb0368ed122a7da00dcfb8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page