GithubHelp home page GithubHelp logo

amdx / md2cfl Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 1.0 241 KB

NoMagic / CATIA MagicDraw to Atlassian Confluence importer

License: GNU Affero General Public License v3.0

Python 91.10% HTML 8.90%
confluence magicdraw atlassian-confluence catia mbse nomagic

md2cfl's Introduction

MagicDraw importer for Confluence

This tool ingests a report output generated in MagicDraw and imports it into Confluence via its RESTful APIs.

It requires a stereotype (<<Publish>>), that defines a tag (CFL Page ID) where the Confluence's page ID can be stored. The ID is supposed to be defined for top-level SmartPackages, and it creates a relationship between containment tree and Confluence's tree.

Installation

Python package setup using virtualenv:

$ python -m venv .venv
$ source .venv/bin/activate
$ pip install .

If using poetry:

$ poetry install

MagicDraw setup

Import the report template. This operation is required only once:

  1. Select Tools->Report wizard
  2. Click on Import and select the file resources/md2cfl-report.mdzip
  3. The newly imported report will appear in the list as md2cfl

Include the provided resource into the current project. The resource contains the required stereotype (<<Publish>>) that offers a tag named CFL Page ID.

This procedure is required once for every project. It loads the profile containing the stereotype <<Publish>>:

  1. Load the project (either local or from TWC)
  2. File -> Use project -> Use local project
  3. Select From file system
  4. Click on the button with the three dots and select the file resources/md2cfl.mdzip
  5. Press Next, ensure that a shared package named md2cfl appears in the packages list
  6. Press Finish

Confluence setup

This step is required in order to set up a relationship between containment tree and confluence pages. The importer supports two levels:

  • Root pages: smart packages where a correspondent confluence page identifier is set
  • Sub-pages: smart packages contained within root pages (no confluence identifier is required)

The procedure is required for each root page required. There's no limit to the number of root pages that can be set up. A sample of this structure is contained in the resources/md2cfl.mdzip project.

  1. Create a page, the name is not important (it'll be set by the importer)
  2. Click on the three dots and select Page information
  3. Copy the pageId parameter appearing on the URL (pageId=XXXXX), only the number is required

Then, on the project in MagicDraw:

  1. Create a smart package (its location is not important) and apply the <<Publish>> stereotype to it
  2. Open the specifications window and find CFL Page ID in Tags
  3. Create a value and paste the ID of the page

The smart package can be now populated with diagrams or more smart packages containing diagrams.

Usage

Running the report generation in MagicDraw

  1. Right-mouse click on the top level Model in the containment tree
  2. Select Generate Report -> md2cfl
  3. Find a suitable location for the output file. Its path and name is not relevant
  4. Press Save and No to Would you like to view the report after generating?

Running the confluence importer

Note: the confluence user passed to the CLI arguments must be able to create and modify pages

Using virtualenv:

$ source importer/.venv/bin/activate
$ md2cfl --user <confluence username> --password <confluence password> run /path/to/report.xml

Using poetry:

$ poetry run md2cfl --user <confluence username> --password <confluence password> run /path/to/report.xml

Commands

usage: md2cfl [-h] {run,login,logout,validate} ...

optional arguments:
  -h, --help            show this help message and exit

commands:
  {run,login,logout,validate}
    run                 Run the import to confluence
    login               Add a credential set to the keyring
    logout              Remove savd login information
    validate            Validate report against schema

Note: further documentation regarding each command can be queried by adding --help after the command, eg:

$ md2cfl run --help

Run

Perform the actual import. A report XML file must be passed as argument.

Optional arguments:

  • --user: confluence user to authenticate the requests against. Overrides the user defined with the login command
  • --password: confluence password. Overrides the one defined with the login command
  • --url: confluence base url for the requests
  • --skip-restrictions: when specified, the importer won't apply confluence restrictions to any imported page
  • --force-updates: import everything, including content that is already up-to-date in confluence
  • --verbose: log each step in detail
  • --quiet: don't print anything to the console

Login / Logout

login can be used in order to safely save the credential set in use and avoid the need for passing user and password for every run.

It stores the password in any available keychain, if available, or as cleartext if not.

Example:

$ md2cfl login cflbot
[2020-06-15 11:20:14,800] {md2cfl.__main__:149} INFO: Enter the password for user cflbot
Password:
Repeat password:
[2020-06-15 11:20:16,712] {md2cfl.__main__:165} INFO: Password stored in the keyring
[2020-06-15 11:20:16,713] {md2cfl.__main__:169} INFO: Credentials stored

Such login data can be then purged by using logout. The username is still required as parameter:

$ md2cfl logout cflbot
[2020-06-15 11:21:16,176] {md2cfl.__main__:178} INFO: Removed stored user from the preferences
[2020-06-15 11:21:16,239] {md2cfl.__main__:188} INFO: Removed stored password from the keyring

Validate

XML reports generated by MD are validated against a schema before the import takes place. The validation can be run also independently of the import itself:

$ md2cfl validate samples/output.xml
[2020-06-15 11:58:20,244] {md2cfl.__main__:200} INFO: Validation successful. Version info: <VersionInfo schema version=3 stepping=1>

Additional information such expected schema and stepping are also shown.

md2cfl's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

nsgodshall

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.