Morpheus Data API Client
Project description
morpheus-data-client
Python client to Morpheus Data API
https://apidocs.morpheusdata.com/
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'
}
}
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 option_types/foo1.yaml
:
$optionType:
name: foo1
type: select
description: 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file morpheus_data_api-0.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: morpheus_data_api-0.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88f6120572d30aadf8803631de2eef808549841f5b5aa17e5c3b8143d5bab8cb |
|
MD5 | 497ee311935d4e5bb649c7a2d4a65966 |
|
BLAKE2b-256 | 854da5d1a3f391178f57e1705cedb5f62e366b233264ff3d53523569d0633bb4 |