fabfed-py


Namefabfed-py JSON
Version 1.7b0 PyPI version JSON
download
home_pagehttps://github.com/fabric-testbed/fabfed
SummaryFabfed Framework
upload_time2024-03-06 14:53:33
maintainer
docs_urlNone
authorAbdelilah Essiari
requires_python>=3.9
license
keywords fabfed framework cloud fabric chameleon moc
VCS
bugtrack_url
requirements fabrictestbed-extensions python-chi sense-o-api ansible xmltodict boto3 google-cloud-compute
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Table of contents

 - [Description](#descr)
 - [Installation](#install)
 - [Operation Instructions](#operate)

# <a name="descr"></a>Description
The FabFed is a Python library for a cross-testbed federation framework that (1) models the network experiment (or "slice") across the FABRIC testbed and federated testbeds and providers, and (2) provides workflow tools to stitch l2 and l3 networks between the testbeds and providers.

The FabFed code took the initial form from the Mobius API, and refactored and reinvented the slice modeling, user interface, data structure and  stitching workflows. 

The example below showcases network stitching across providers, a [chi](https://www.chameleoncloud.org/) provider and a [fabric](https://portal.fabric-testbed.net/) provider. The configuration, while incomplete, highlights how fabfed-py expresses dependencies.  

- For more details, refer to fabfed's [workflow design](./docs/workflow_design.md)
- For a complete example, refer to  [Fabric Chameleon Stitching](./examples/stitch)

```
  1 resource:
  2
  3   - network:
  4       - chi_network:
  5             provider: '{{ chi.chi_provider }}'
  6             site: CHI@UC
  7
  8   - network:
  9       - fabric_network:
 10            provider: '{{ fabric.fabric_provider }}'
 11            site: 'STAR'
 12            stitch_with: '{{ network.chi_network }}'
```

# <a name="install"></a>Installation

FabFed is available at PyPI.
```
pip install fabfed-py
```


Alternatively, you may install and test using the following commands:
```
pip install -e .
fabfed --help
fabfed stitch-policy --help
fabfed workflow --help
fabfed sessions --help
```

If using the CloudLab provider, the following portal-tools module is a required dependency:
```
pip install git+https://gitlab.flux.utah.edu/stoller/portal-tools.git
```

# <a name="operate"></a>Operation Instructions
- Fabfed worflow configuration is specified across one or more <i>.fab<i> files. Fabfed does not care how these files  are named. Fabfed simply loads all the .fab configuration files, assembles them and parses the assembled configuration.  
- Fabfed will pickup any file ending with the <b>.fab</b> extension in the directory specified by
the <i>--config-dir</i>.  If this option is not present, the current directory is used. 
- The --var-file option can be used to override the default value of any variable. It consists of a set of key-value pairs with each pair written as ```key: value```. At runtime, all variables found in an assembled configuration must have a value other than ```None```. The parser will halt and throw an exeption otherwise. 
- The --session is a friendly name used to track a given workflow.  
- Use the --help options shown above if in doubt. 
- When stitching networks across provider use `stitch-policy` to discover available stitch information 

```
# Example to view stitch policy from cloudlab to fabric
fabfed stitch-policy -providers "fabric,cloudlab"

fabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -validate

fabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -init [-summary] [-json]

fabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -plan [-summary] [-json]

fabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -apply

fabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -show [-summary] [-json]

fabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -destroy

# Use this option to manage your workflow sessions
fabfed sessions -show
```


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/fabric-testbed/fabfed",
    "name": "fabfed-py",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "Fabfed Framework,Cloud,FABRIC,Chameleon,MOC",
    "author": "Abdelilah Essiari",
    "author_email": "aessiari@lbl.gov",
    "download_url": "https://files.pythonhosted.org/packages/8a/9d/e291446e15538b1f5a44b704e38c9096781730f6ca4816fef1139d0703f1/fabfed-py-1.7b0.tar.gz",
    "platform": null,
    "description": "# Table of contents\n\n - [Description](#descr)\n - [Installation](#install)\n - [Operation Instructions](#operate)\n\n# <a name=\"descr\"></a>Description\nThe FabFed is a Python library for a cross-testbed federation framework that (1) models the network experiment (or \"slice\") across the FABRIC testbed and federated testbeds and providers, and (2) provides workflow tools to stitch l2 and l3 networks between the testbeds and providers.\n\nThe FabFed code took the initial form from the Mobius API, and refactored and reinvented the slice modeling, user interface, data structure and  stitching workflows. \n\nThe example below showcases network stitching across providers, a [chi](https://www.chameleoncloud.org/) provider and a [fabric](https://portal.fabric-testbed.net/) provider. The configuration, while incomplete, highlights how fabfed-py expresses dependencies.  \n\n- For more details, refer to fabfed's [workflow design](./docs/workflow_design.md)\n- For a complete example, refer to  [Fabric Chameleon Stitching](./examples/stitch)\n\n```\n  1 resource:\n  2\n  3   - network:\n  4       - chi_network:\n  5             provider: '{{ chi.chi_provider }}'\n  6             site: CHI@UC\n  7\n  8   - network:\n  9       - fabric_network:\n 10            provider: '{{ fabric.fabric_provider }}'\n 11            site: 'STAR'\n 12            stitch_with: '{{ network.chi_network }}'\n```\n\n# <a name=\"install\"></a>Installation\n\nFabFed is available at PyPI.\n```\npip install fabfed-py\n```\n\n\nAlternatively, you may install and test using the following commands:\n```\npip install -e .\nfabfed --help\nfabfed stitch-policy --help\nfabfed workflow --help\nfabfed sessions --help\n```\n\nIf using the CloudLab provider, the following portal-tools module is a required dependency:\n```\npip install git+https://gitlab.flux.utah.edu/stoller/portal-tools.git\n```\n\n# <a name=\"operate\"></a>Operation Instructions\n- Fabfed worflow configuration is specified across one or more <i>.fab<i> files. Fabfed does not care how these files  are named. Fabfed simply loads all the .fab configuration files, assembles them and parses the assembled configuration.  \n- Fabfed will pickup any file ending with the <b>.fab</b> extension in the directory specified by\nthe <i>--config-dir</i>.  If this option is not present, the current directory is used. \n- The --var-file option can be used to override the default value of any variable. It consists of a set of key-value pairs with each pair written as ```key: value```. At runtime, all variables found in an assembled configuration must have a value other than ```None```. The parser will halt and throw an exeption otherwise. \n- The --session is a friendly name used to track a given workflow.  \n- Use the --help options shown above if in doubt. \n- When stitching networks across provider use `stitch-policy` to discover available stitch information \n\n```\n# Example to view stitch policy from cloudlab to fabric\nfabfed stitch-policy -providers \"fabric,cloudlab\"\n\nfabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -validate\n\nfabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -init [-summary] [-json]\n\nfabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -plan [-summary] [-json]\n\nfabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -apply\n\nfabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -show [-summary] [-json]\n\nfabfed workflow --config-dir some_dir [--var-file some_var_file.yml] --session some_session -destroy\n\n# Use this option to manage your workflow sessions\nfabfed sessions -show\n```\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Fabfed Framework",
    "version": "1.7b0",
    "project_urls": {
        "Homepage": "https://github.com/fabric-testbed/fabfed"
    },
    "split_keywords": [
        "fabfed framework",
        "cloud",
        "fabric",
        "chameleon",
        "moc"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "32343d97f6f39e908992ece984ec25676599daa235fcdb664e6462757d27a3ca",
                "md5": "0179b5b3b1c988f76d7ea1a263954650",
                "sha256": "f51402295b2e773700100a1a1d5dffbae5288e15991258834aa809b0935e1f84"
            },
            "downloads": -1,
            "filename": "fabfed_py-1.7b0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0179b5b3b1c988f76d7ea1a263954650",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 107116,
            "upload_time": "2024-03-06T14:53:31",
            "upload_time_iso_8601": "2024-03-06T14:53:31.399467Z",
            "url": "https://files.pythonhosted.org/packages/32/34/3d97f6f39e908992ece984ec25676599daa235fcdb664e6462757d27a3ca/fabfed_py-1.7b0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8a9de291446e15538b1f5a44b704e38c9096781730f6ca4816fef1139d0703f1",
                "md5": "01fdca30c126312eaae4ecbb2bf02918",
                "sha256": "b642ce2b7256410813a0496210a8d60820895064582711078ed349aaf9a6b7e6"
            },
            "downloads": -1,
            "filename": "fabfed-py-1.7b0.tar.gz",
            "has_sig": false,
            "md5_digest": "01fdca30c126312eaae4ecbb2bf02918",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 85635,
            "upload_time": "2024-03-06T14:53:33",
            "upload_time_iso_8601": "2024-03-06T14:53:33.235463Z",
            "url": "https://files.pythonhosted.org/packages/8a/9d/e291446e15538b1f5a44b704e38c9096781730f6ca4816fef1139d0703f1/fabfed-py-1.7b0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-06 14:53:33",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fabric-testbed",
    "github_project": "fabfed",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "fabrictestbed-extensions",
            "specs": [
                [
                    "==",
                    "1.6.3"
                ]
            ]
        },
        {
            "name": "python-chi",
            "specs": []
        },
        {
            "name": "sense-o-api",
            "specs": [
                [
                    "==",
                    "1.26"
                ]
            ]
        },
        {
            "name": "ansible",
            "specs": [
                [
                    "==",
                    "7.1.0"
                ]
            ]
        },
        {
            "name": "xmltodict",
            "specs": []
        },
        {
            "name": "boto3",
            "specs": []
        },
        {
            "name": "google-cloud-compute",
            "specs": []
        }
    ],
    "lcname": "fabfed-py"
}
        
Elapsed time: 0.38706s