zowe / zowe-install-packaging

Packaging repository for the Zowe install scripts and files
Eclipse Public License 2.0
27 stars 51 forks source link

Component dependency tracking in manifest #3167

Open 1000TurquoisePogs opened 1 year ago

1000TurquoisePogs commented 1 year ago

Some components have dependencies on others, or even content outside of Zowe. You could say for example,

Dependencies

jobs:

jes-explorer:

app-server:

zss:

i'm sure we can learn some lessons from npm package.json, but in general i see a possible structure for capturing all of this info by putting it into manifest.yaml like so,

jobs:

dependencies:
  core:
    environment:
      java:
        versionRange: zowe
    components:
      gateway:
        provider: zosmf
      discovery:
        registeredComponents:
          - zosmf

app-server:

dependencies:
    core:
      environment:
        node:
          versionRange: zowe

zss:

dependencies:
  core:
    environment:
      platform: 
        type: zos
        versionRange: >=2.4

i'm trying to think of a structure that is futureproof and allows us to say things simply. i dont think zowe core will be able to check every value that could possibly be contained here, but rather this area may be used by extensions too to perform further dependency validation. Zowe could just ship with some core validation features, and if the dependencies section had attributes other than core, it might signal the name of an extension that should be invoked according to some API to perform further dependency validation.

balhar-jakub commented 1 year ago

I support this proposal heavily. The possibility to check for what exists and is enabled in environment is really valuable.

As part of it may be also relevant to introduce some validation into zwe config validate, that would take a look at the information in zowe.yaml and the overall environment and the details of the extension and let you know what you are still missing.

nkocsis commented 1 year ago

Jakub will bring this up on the TSC call