User Bundle Repos - padogrid/padogrid GitHub Wiki

◀️ Understanding Bundles 🔗 Using Bundle Templates ▶️


In addition to PadogGrid's bundle repos, you can also include your own GitHub repos and other users' GitHub repos as part of the PadoGrid's catalog service. This allows PadoGrid users to share their bundles with other users.

Adding Bundle Repos

There are two (2) ways to include GitHub repos to the bundle catalog service.

1. List GitHub Users in ~/.padogrid/setenv.sh

List the GitHub user names in the ~/.padogrid/setenv.sh file found in your home directory.

vi ~/.padogrid/setenv.sh

Set the GITHUB_USERS environment variable to a space-separated list of GitHub user names.

GITHUB_USERS="user1 user2"

2. Specify the -user Option

You can also specify the -user option when you run the show_bundle and install_bundle commands.

Show all bundles maintained by the GitHub user, user1:

show_bundle -all -user user1

Install a bundle maintained by the GitHub user, user1:

install_bundle -download -user user1 bundle-hazelcast-4-app-myapp-cluster-mycluster

Bundle Naming Conventions

To properly add your bundle repos to the bundle catalog service, you must follow the naming conventions described in this section. There are two (2) sets of conventions supported by PadoGrid: relaxed and predated. Staring PadoGrid 0.9.7, the relaxed conventions are the first choice and strictly enforced. The predated conventions remain fully supported till further notice but it is recommended that all predated bundles should be migrated to the relaxed conventions.

Relaxed Conventions

With the addition of multi-cluster support, starting from PadoGrid 0.9.7, product information must be defined in the file named, required_products.txt and is no longer required as part of the bundle name. The bundle name, however, must start with the prefix bundle-<product_name>- as described below.

bundle-<product_name>-<label>

where

  • <product_name> is required and must be one of coherence, computedb, gemfire, geode, hadoop, hazelcast, jet, kafka, none, redis, snappydata, spark. If the bundle contains more than one (1) product then either use none or choose the one that is the primary product. none is for bundles that do not emphasize products.

  • <label> is any text that uniquely and meaningfully identifies your bundle. This field can also be used to list the additional products if the bundle has more than one (1) product.

required_products.txt

The required_products.txt file must list the products required and their versions. If no products are required to run the bundle then this file should be empty. If this file does not exist and the version number is not part of the bundle name, then the install_bundle command defaults to none requiring no products. The file contents must follow the conventions shown below.

# Comments start with '#".
<product1>=<version1>,<version2>,...
<product2>=<version1>,<version2>,...
...

where

  • <product1> is one of the following supported products names. All product names must be in lower case.
Product Name For
coherence Oracle Coherence
computedb TIBCO ComputeDB
gemfire VMWare Tanzu GemFire
geode Apache Geode
hadoop Apache Hadoop
hazelcast Hazelcast IMDG OSS or Enterprise
hazelcast-enterprise Hazelcast IMDG Enterprise
jet Hazelcast Jet OSS or Enterprise
jet-enterprise Hazelcast Jet Enterprise
kafka Apache Kafka
mosquitto Mosquitto MQTT Broker (OSS)
none Product not required or emphasized
pado Netcrest Pado
redis Redis
snappydata TIBCO SnappyData
spark Apache Spark
  • <version1> is a list of comma separated versions. A version number must start with the major version number and should include only the version part numbers that are required.

Examples - required_products.txt

# Run on all Hazelcast IMDG OSS or Enterprise 4.x.x
hazelcast=4

# Run on Hazelcast IMDG Enpterprise 3.x.x and 4.x.x
hazelcast-enterprise=3,4

# Run on Hazelcast IMDG specific versions
hazelast=3.12,4.1.1,4.2

# Run without products installed or checked. By convention, set the version number
# to 1 but it can be any positive number.
none=1

If the bundle requires more than one product then list them with versions in separate lines.

Predated Conventions

The Relaxed Conventions overrides the Predated Conventions. If the required_products.txt file described in the previous section is not found, then PadoGrid defaults to the Predated Conventions described in this section.

The naming conventions described in this section are not enforced but still supported by PadoGrid until further notice.

Repo Name

Each bundle must be in their own repo. The repo name must begin with the prefix bundle- followed by the product name and a hyphen in all lower case.

bundle-<product_name>-<version>-<type>-<names>-<type>-<names>...

where

  • <product_name> is required and must be one of coherence, computedb, gemfire, geode, hazelcast, hadoop, jet, kafka, none, redis, snappydata, spark. none is for bundles that do not require a product or require more than one product.

  • <version> - Product version. It can be a major, minor, full version or combo number. For example, 1, 1.12, 1.12.0, 3n4, 3.12n4.0, 3.12n4.0n4.1 etc. Use the letter n if the bundle runs on multiple versions. If a major version is used then it is assumed that the bundle runs on all minor versions. Similarly, if a minor version is used then it is assumed that that the bundle runs on all update versions.

  • <type> is a component type. PadoGrid supported component types are app, cluster, docker, k8s, and pod. You can also include your own types as needed. Component types should be listed in the alphanumerical order, i.e., app comes before cluster, cluster comes before docker, and etc.

  • <names> is a hyphen separated list of the names of the component type included in the bundle. Names should not include hyphens. Use underscore to separate words if lower case is used. Names can be in mixed case.

Repo Name Examples

Example 1
bundle-geode-1-app-perf_test_wan-cluster-ln-ny
  • bundle-geode-1- app-perf_test_wan-cluster-ln-ny
    • Geode version 1.x bundle
  • bundle-geode-1- app-perf_test_wan- cluster-ln-ny
    • An app named, perf_test_wan
  • bundle-geode-1-app-perf_test_wan- cluster-ln-ny
    • Two (2) clusters named, ln and ny

To install this bundle maintained by the GitHub user, user1, you run the following:

install_bundle -user user1 bundle-geode-1-app-perf_test_wan-cluster-ln-ny
Example 2
bundle-hazelcast-3-app-pado_dbsched-perf_test_dbsched-cluster-dbsched
  • bundle-hazelcast-3- app-pado_dbsched-perf_test_dbsched-cluster-dbsched
    • Hazelcast IMDG version 3.x
  • bundle-hazelcast-3- app-pado_dbsched-perf_test_dbsched- cluster-dbsched
    • Two (2) apps named, pado_dbsched and perf_test_dbsched
  • bundle-hazelcast-3-app-pado_dbsched-perf_test_dbsched- cluster-dbsched
    • A cluster named, dbsched

To install this bundle maintained by the GitHub user, user1, you run the following:

install_bundle -user user1 bundle-hazelcast-3-app-pado_dbsched-perf_test_dbsched-cluster-dbsched

◀️ Understanding Bundles 🔗 Using Bundle Templates ▶️

⚠️ **GitHub.com Fallback** ⚠️