Git Product home page Git Product logo

matrix42sdk's Introduction

Python 3 Matrix42 SDK for Enterprise Service Management (ESM) tool

Quality gate

"ERP for Software Asset Management"

matrix42sdk package in my-feed feed in Azure Artifacts Quality Gate Status Build Status Code style: black GitHub Pull Requests LGTM Grade Requires.io Total alerts GitHub repo size

The background story

As of July 2020, Matrix42 AG, a German company is offering a Configuration Management Database (CMBD) - basically a competing product to ServiceNOW and many others like Microsoft Intune.

Their Angular based product can be installed on-prem and used as ITIL supporting tool for the company.

It provides a REST API which this Python3+ SDK tries to cover. Unfortunately, Swagger support is currently not available which has led me to write this client package myself - becoming my first python3 client SDK.

It shows - also due to learning Python OOP principles.

Documentation of Rest API

Setting up the Sphinx auto-generate documentation:

What works and what does not?

Works:

  • get and put (i.e. update) fragment

Use Cases:

  • updating CI version numbers

Semi/or not working:

  • creating fragment was not tested, but is implemented as a Rest API call
  • get and put object -> here not tested extensively and one must expect bugs

Testing

Without having a Matrix42 ESM portal which allows API access and is publicly available for unlimited use, the only option how to test this library is to use your own ESM portal installation (be it in public cloud or on prem). Hence the need to use your own API keys, etc.

From this follows that this library cannot - as of now - include more python tests, at least not publicly available. It is my recommendation to write your own, private tests and report issues here.

Sorry for inconvenience!

Usage

Python 3 - Simple Testing

Using requests you can call

import requests

url = "https://xxxx/m42Services/api/ApiToken/GenerateAccessTokenFromApiToken/"

payload = {}
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer the 'short' version of bearer token generated from Administration Panel in the GUI'
}

response = requests.request("POST", url, headers=headers, data = payload, verify = False)

print(response.text.encode('utf8'))

# only then start using proper API requests
import requests

url = "https://xxxx/m42Services/api/data/fragments/Ud_SoftwareproduktVersionClassBase/775c82cf-d243-4bfb-a1b2-f3edad93c826"

payload = {}
headers = {
  'Authorization': 'Bearer "output of the previous requests "RawToken" '
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

Matrix42 SDK for Python

To use Matrix42 SDK, first decide which authN approach you are going to use.

For a basic, create a Matrix42RestClient object by using your (or any other matrix42 CMBD) account:

import matrix42sdk
from matrix42sdk import Matrix42RestClient
from matrix42sdk.api_endpoints import *

For using Access/API Tokens, you can set your MATRIX42SDK_API_TOKEN via a shell (higher priority):

export MATRIX42_URL="xxx"
export MATRIX42SDK_API_TOKEN="xxx"

and then:

mat = api_endpoints.fragments.FragmentsDataService()

Then to get a fragment for a specific CI, insert correct parameters according to the documentation:

JUPYTERLAB_ID_FRAG = "8c51cfff-bf16-452e-8d2c-527cc25518c3"
SYS_ENTITY = "SPSSoftwareType"
full_ci_frg = mat.get_fragement(SYS_FRAGEMENT, JUPYTERLAB_ID_FRAG)

Documentation

We use https://sphinx-rtd-theme.readthedocs.io/ and https://www.sphinx-doc.org/en/master/

cd docs
sphinx-apidoc -o source ../matrix42sdk
make html

Building this package yourself

This package is being build on Azure DevOps services:

https://dev.azure.com/johnmalc/Matrix42SDK/_build

and further uses SonarCloud:

https://sonarcloud.io/dashboard?id=dmpe_matrix42sdk

Use to install package from non-PyPI feed (the azure one):

pip3 install --index https://pkgs.dev.azure.com/johnmalc/Matrix42SDK/_packaging/my-feed/pypi/simple/ matrix42sdk

PyPI

poetry build

matrix42sdk's People

Contributors

dmpe avatar

Stargazers

 avatar

Watchers

 avatar  avatar

matrix42sdk's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.