Versions Compared

Key

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

...

  • ./inventory/repository/read
    • reads file tree of the local repositories filesystem folder
  • ./inventory/repository/store
    • stores a set of configuration objects from the JOC Cockpit database to the filesystem folder of the local repository
  • ./inventory/repository/delete
    • deletes a set of configuration objects from the filesystem folder of the local repository
  • ./inventory/repository/update
    • adds or updates a set of configuration objects in the JOC Cockpit database with the configuration objects from the locale local repositories filesystem

Use Cases

...

userap

Single Client - Single Repository

Scenario

  • Architecture
    • A single JOC Cockpit instance is used with a single Controller or optionally with separate Controllers and Agents for rollout environments such as dev, test, prod.
    • The Git repository is used per folder to hold a copy of JS7 configuration objects and to create branches of JS7 configuration objects such as dev,, test, prod in a single repository.
  • Users
    • All users act in the same JOC Cockpit instance that is a single client to the Git server.
    • Changes to the Git repository are performed by the users' individual accounts and are added to branches in a single repository.
  • Rollout
    • Deployments are performed from a single source (JOC Cockpit) to a number of Controllers and Agents (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 JOC Cockpit at a given point in time.

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

Flowchart
USER1a [label="   User: 1   ",fillcolor="lightskyblue"]
USER1b [label="   User: 2   ",fillcolor="lightskyblue"]
USER1c [label="   User: 3   ",fillcolor="lightskyblue"]
FOLDER1 [label="   Folder: 1   ",fillcolor="white"]
JOC1 [label="   JOC Cockpit   ",fillcolor="lightskyblue"]
DATABASE [shape="ellipse",label="     Database     ",fillcolor="lightskyblue"]
# GIT [label="Git Server",fillcolor="orange"]
REPO [label="Repository",fillcolor="orange"]

BRANCH1R [shape="ellipse",label="Branch: env dev",fillcolor="darkolivegreen1"]
BRANCH1I [shape="ellipse",label="Branch: rollout dev",fillcolor="darkolivegreen1"]
BRANCH2R [shape="ellipse",label="Branch: env test",fillcolor="darkolivegreen2"]
BRANCH2I [shape="ellipse",label="Branch: rollout test",fillcolor="darkolivegreen2"]
BRANCH3R [shape="ellipse",label="Branch: env prod",fillcolor="darkolivegreen3"]
BRANCH3I [shape="ellipse",label="Branch: rollout prod",fillcolor="darkolivegreen3"]

JOC1 -> FOLDER1
JOC1 -> DATABASE

FOLDER1 -> BRANCH1R [label="Commit/Push\nPull"]
FOLDER1 -> BRANCH1I [label="Commit/Push\nPull"]
FOLDER1 -> BRANCH2R [label="Commit/Push\nPull"]
FOLDER1 -> BRANCH3R [label="Commit/Push\nPull"]

BRANCH1R -> REPO
BRANCH2R -> REPO
BRANCH3R -> REPO
BRANCH1I -> BRANCH2I -> BRANCH3I -> REPO

# REPO -> GIT

USER1a -> JOC1
USER1b -> JOC1
USER1c -> JOC1

Repository Operations

  • management
  • versioning
  • rollout

Requirements

...

    • folder

Use Cases

Single Client - Multiple Repositories (dev, test, prod)

Scenario

  • Architecture
    • A dedicated JOC Cockpit instance is used with Controller and Agents for each rollout environment such as dev, test, prod.
    • A Git repository is used per folder and per rollout environment (dev, test, prod), each JOC Cockpit instance is acting on a specific repository per rollout environment.
    • The Git repository is used to hold a copy of JS7 configuration objects and, depending on the rollout environment, to create versions of JS7 configuration objects and to merge branches such as dev => test, test => prod.
  • Users
    • All users act in the same JOC Cockpit instance of the respective rollout environment that is a single client to the Git server.
    • Changes to the Git repositories are performed by the users' individual accounts and are added to each repository and branch such as dev, test, prodthe remote repositories.
  • Rollout
    • Deployments are performed from a single source (JOC Cockpit) to each 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.

Branches Repositories 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.

...

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"]
REPO1 [label="Repository: dev",fillcolor="darkolivegreen1"]
REPO2 [label="Repository: test",fillcolor="darkolivegreen2"]
REPO3 [label="Repository: prod",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-> BRANCHES1R [label="Commit/Push\nPull"]
FOLDER1-> BRANCHES1I [label="Commit/Push\nPull"]
BRANCHES1R -> REPO1
BRANCHES1I -> REPO1

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

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

BRANCHES1I -> BRANCHES2I [label="checkout/clone"]
BRANCHES2I -> BRANCHES3I [label="checkout/clone"]

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

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

Repository Operations

  • 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 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 Branches (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 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, 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.

...

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

JOC1a [label="JOC Cockpit: dev 1a",fillcolor="lightskyblue"]
JOC1b [label="JOC Cockpit: dev 1b",fillcolor="lightskyblue"]
JOC2  [label="JOC Cockpit: test",fillcolor="lightskyblue"]
JOC3  [label="JOC Cockpit: prod",fillcolor="lightskyblue"]

DATABASE1a [shape="ellipse",label="Database: dev 1a",fillcolor="lightskyblue"]
DATABASE1b [shape="ellipse",label="Database: dev 1b",fillcolor="lightskyblue"]
DATABASE2  [shape="ellipse",label="Database: test",fillcolor="lightskyblue"]
DATABASE3  [shape="ellipse",label="Database: prod",fillcolor="lightskyblue"]

# GIT [label="Git Server",fillcolor="orange"]
REPO1 [label="Repository: dev",fillcolor="darkolivegreen1"]
REPO2 [label="Repository: test",fillcolor="darkolivegreen2"]
REPO3 [label="Repository: prod",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"]

JOC1a -> DATABASE1a
JOC1b -> DATABASE1b
JOC2 -> DATABASE2
JOC3 -> DATABASE3

JOC1a -> BRANCHES1R [label="Commit/Push\nPull"]
JOC1a -> BRANCHES1I [label="Commit/Push\nPull"]
JOC1b -> BRANCHES1R [label="Commit/Push\nPull"]
JOC1b -> BRANCHES1I [label="Commit/Push\nPull"]
JOC2 -> BRANCHES2R [label="Commit/Push\nPull"]
JOC2 -> BRANCHES2I [label="Commit/Push\nPull"]
JOC3 -> BRANCHES3R [label="Commit/Push\nPull"]
JOC3 -> BRANCHES3I [label="Commit/Push\nPull"]

BRANCHES1R -> REPO1
BRANCHES1I -> REPO1

BRANCHES2R -> REPO2
BRANCHES2I -> REPO2

BRANCHES3R -> REPO3
BRANCHES3I -> REPO3

BRANCHES1I -> BRANCHES2I [label=" checkout/clone"]
BRANCHES2I -> BRANCHES3I [label=" checkout/clone"]

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

USER1a -> JOC1a
USER1b -> JOC1b
USER2a -> JOC2
USER2b -> JOC2
USER3 -> JOC3

Repository Operations

  • 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 is connected to one or more JOC Cockpit instances.
  • Each branch makes use of an individual version.
  • Each user (client) makes use of an individual JS7 instance using JOC Cockpit and database, Controller and Agents

...