NSX Metamodel Project
Creates a new NS metamodel project, provisioned with everything needed for NSX infrastructure.
- Expansion resource:
net.democritus.initializer:nsx-metamodel-initializer@4.38.0
- Command:
nsinit metamodel
- Example project: Bitbucket
Overview
The NSX metamodel project initializer is an initializer bundle which is used to create new NS projects which define metamodels that can optionally extend the default elements model, alongside additional integrations for tooling and infrastructure used at NSX.
This initializer can provision a very comprehensive setup for a new metamodel project containing the following:
- An metamodel component depending on
elements
or defining its own ProgramType and DataElement for that ProgramType. This includes expansion settings for the metamodel stack. - A Maven project to expand the metamodel stack project with or without expanders module and deploy the model artifact.
- Some typical project files are generated, such as
README.md
andCHANGELOG.md
as stub files to be filled out by the user. Also an EditorConfig file with a basic setup for clean editing of the files in the repository is generated. - Support for the Jenkins CI/CD platform with a
Jenkinsfile
that expands, builds and deploys the entire project. - Initialization of a local git repository for the project, with an initial commit containing everything that should be committed to the repository.
Generated files
applications
directory with the Application/ApplicationInstance model, which is used to by program type for metamodels to define the project.components
directory with the metamodel component model and ProgramType DataElement if requested.components/models.xml
file which defines a ModelResource with the path to the directory containing the metamodel components.conf/expansionSettings.xml
file with the expansion settings for the project.pom.xml
file to expand the project and deploy the model artifact..gitignore
file to ignore any known files that should not be committed to a Git repository..editorconfig
file with some basic standard rules for formatting code in files.README.md
file to provide some basic information about the project.CHANGELOG.md
file to document changes to the project.Jenkinsfile
file with basic configuration to expand and build the project in Jenkins.- A local git repository with a first commit containing all generated files.
Parameters
For an overview, run nsinit metamodel -h
.
Option | Description |
---|---|
-h ,--help | Returns the help with an overview of all commands. |
--artifact-id | The artifact identifier that will be used for the model artifact and root POM file of the project. |
--comp ,--component | Used to specify the name for the metamodel component. |
--program-type | Name of the ProgramType that will be defined. Only has an effect if --elements is not present. |
--program-type-element | Name of the DataElement that will be defined for the ProgramType. Only has an effect if --elements is not present. |
--groupid ,--group-id | The groupId for the pom-expansion.xml Maven project file. |
--[no-]jenkins | Generate a Jenkinsfile . Default: true |
--[no-]elements | Add dependency on the elements model to extend it, rather than define a new ProgramType. Default: false |
--[no-]expanders | Generate an expanders module. Default: true |
--[no-]git | Initialize a local git repository and generate a .gitignore file. Default: true |
-D | Allows you to set any argument or flag defined for the project type, even those that are implicit. For an argument, the key should be prefixed by arg. and for a flag with flag. . E.g.: -Darg.applicationInstance=test-app |
-o ,--output | The directory where the project should be generated, rather than the current directory. |
-y ,--yes-to-all | Disables the interactive mode and accepts defaults for all settings that were not specified as arguments. |
-f ,--force | Forces the creation of the project, even when the output directory is not empty. |
Example
nsinit metamodel -y -o metaTest --group-id com.example.metatest
Resulting project:
metaTest/
├── applications
│ └── metaTestModel
│ ├── harvest
│ │ └── pom.xml.harvest
│ └── model
│ ├── instances
│ │ └── metatestmodel.xml
│ └── metaTestModel.xml
├── CHANGELOG.md
├── componentsModels.xml
├── conf
│ └── expansionSettings.xml
├── .editorconfig
├── .git
├── .gitignore
├── Jenkinsfile
├── metamodel
│ └── metaTestMetamodel.xml
├── ontologies
│ └── metaTest
│ └── model
│ ├── dataTypes
│ │ ├── Boolean.xml
│ │ ├── Name.xml
│ │ ├── PackageName.xml
│ │ └── Version.xml
│ ├── elementGroups
│ │ └── root.xml
│ └── metaTest.xml
├── pom.xml
├── README.md
├── renovate.json
└── scripts
├── build.nss
├── expand.nss
├── harvest.nss
└── prepare-metamodel.nss