Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Flowchart
USER1a [label="   User: 1a   ",fillcolor="lightskyblue"]
USER1b [label="   User: 1b   ",fillcolor="lightskyblue"]
USER2 [label="   User: 2   ",fillcolor="lightskyblue"]
USER3 [label="   User: 3   ",fillcolor="lightskyblue"]

JOC1 [label="   JOC Cockpit: dev   ",fillcolor="lightskyblue"]
JOC2 [label="   JOC Cockpit: test   ",fillcolor="lightskyblue"]
JOC3 [label="   JOC Cockpit: prod   ",fillcolor="lightskyblue"]

FOLDER1 [label="   Folder: 1 (dev)   ",fillcolor="white"]
FOLDER2 [label="   Folder: 1 (test)  ",fillcolor="white"]
FOLDER3 [label="   Folder: 1 (prod)   ",fillcolor="white"]

DATABASE1 [shape="ellipse",label="     Database: dev     ",fillcolor="lightskyblue"]
DATABASE2 [shape="ellipse",label="     Database: test     ",fillcolor="lightskyblue"]
DATABASE3 [shape="ellipse",label="     Database: prod     ",fillcolor="lightskyblue"]

# GIT [label="Git Server",fillcolor="orange"]
REPO1ENV [label="Repository: dev env",fillcolor="darkolivegreen1"]
REPO1ROL [label="Repository: dev rollout",fillcolor="darkolivegreen1"]
REPO2ENV [label="Repository: test env",fillcolor="darkolivegreen2"]
REPO2ROL [label="Repository: test rollout",fillcolor="darkolivegreen2"]
REPO3ENV [label="Repository: prod env",fillcolor="darkolivegreen3"]
REPO3ROL [label="Repository: prod rollout",fillcolor="darkolivegreen3"]

# BRANCHES1R [shape="ellipse",label="Branches: env dev",fillcolor="darkolivegreen1"]
# BRANCHES1I [shape="ellipse",label="Branches: rollout dev",fillcolor="darkolivegreen1"]
# BRANCHES2R [shape="ellipse",label="Branches: env test",fillcolor="darkolivegreen2"]
# BRANCHES2I [shape="ellipse",label="Branches: rollout test",fillcolor="darkolivegreen2"]
# BRANCHES3R [shape="ellipse",label="Branches: env prod",fillcolor="darkolivegreen3"]
# BRANCHES3I [shape="ellipse",label="Branches: rollout prod",fillcolor="darkolivegreen3"]

JOC1 -> DATABASE1
JOC2 -> DATABASE2
JOC3 -> DATABASE3

JOC1 -> FOLDER1 
FOLDER1 -> REPO1ENV [label="Commit/Push\nPull"]
FOLDER1 -> BRANCHES1IREPO1ROL [label="Commit/Push\nPull"]
BRANCHES1R -> REPO1
BRANCHES1I -> REPO1

JOC2 -> FOLDER2
FOLDER2 -> BRANCHES2RREPO2ENV [label="Commit/Push\nPull"]
FOLDER2 -> BRANCHES2IREPO2ROL [label="Commit/Push\nPull"]
BRANCHES2R -> REPO2
BRANCHES2I -> REPO2

JOC3 -> FOLDER3 
FOLDER3 -> REPO3ENV BRANCHES3R [label="Commit/Push\nPull"]
FOLDER3 -> REPO3ROL BRANCHES3I [label="Commit/Push\nPull"]
BRANCHES3R -> REPO3
BRANCHES3I
REPO1ROL -> REPO3

BRANCHES1I -> BRANCHES2I REPO2ROL [label="checkout/clonecopy"]
BRANCHES2IREPO2ROL -> BRANCHES3IREPO3ROL [label="checkout/clonecopy"]

# REPO1 -> GIT
# REPO2 -> GIT
# REPO3 -> GIT

USER1a -> JOC1
USER1b -> JOC1
USER2 -> JOC2
USER3 -> JOC3

...

  • management
  • versioning
  • rollout
  • force overwrite

Requirements

  • The JOC Cockpit database holds the configuration objects:
    • each JOC Cockpit instance is connected to its own database,
    • each Git branch Repository is mapped to an individual JOC Cockpit instance,
    • the database can be updated from a Git branch.
  • each Git branch makes use of its own version of configuration objects.

Multiple Clients - Multiple

...

Repositories (dev, test, prod)

Scenario

  • Architecture
    • A dedicated JOC Cockpit instance is used with each Controller and Agents for each user in the dev rollout environment.
    • A dedicated JOC Cockpit instance is used with each Controller and Agents for all users in the test and prod rollout environments.
    • Individual Git repositories are used per folder and per rollout environment(dev, test, prod) by JOC Cockpit instances, each instance is acting on a specific repository and branch per rollout environment.
    • The Git repository is used to hold a copy of JS7 configuration objects, depending on the rollout environment, to create versions of JS7 configuration objects and to merge branches such as dev => test, test => prod.
  • Users
    • Users act in individual JOC Cockpit instances of the dev rollout environment as multiple clients to the Git server.
    • Users act in the same JOC Cockpit instance of the test and prod rollout environment as a single client to the Git server.
    • Changes to the Git repositories are performed by the users' individual accounts to a each branch.
  • Rollout
    • Deployments are performed from a multiple sources (JOC Cockpit) to the connected Controller and Agents per rollout environment (dev, test, prod).
    • The Git repositories are used to checkout and to clone branches and to rollout JS7 configuration objects to different Controllers and Agents, such as dev => test => prod.
    • The Git repository can be used to fallback (pull) to previous versions of configuration objects, however, only one version is available with a given JOC Cockpit instance at a given point in time.
    • After an update of configurations objects in a given JOC Cockpit instance the updated configuration objects have to be deployed anew.

Repositories Branches marked as "env" are specific for an environment and are excluded from rollout. Branches Repositories marked as "rollout" are environment-independent and are forwarded across scheduling environments.

...