Search Results for

    Show / Hide Table of Contents

    Instance Definitions Technical Design

    Last updated on Sep 16, 2021.

    Last Reviewed and Approved on PENDING REVIEW

    Table of Contents

    • Instance Definitions Technical Design
      • Table of Contents
      • Introduction
      • Definition of Instance Definitions
      • Purpose of Generating Instance Definitions
      • Solution for Generating Instance Definitions
        • Overview
        • System Workflow
        • Technologies
        • Architecture
          • Modified Software
        • New Infrastructure
        • Security
          • Overview
        • Persistent Data Design
          • Data Technical Solution
          • Data Dictionary
      • Glossary
      • External Assets

    Introduction

    This document describes REACTR's instance definitions feature and its technical design. The technical design was established based on the need for ways to simplify and improve the provisioning process.

    Definition of Instance Definitions

    Instance definitions are an abstraction layer on top of existing RPS types. Types currently allow developers define a specific type of resource or target item, its expected or possible Properties and their associated value types (string/int/etc.).

    Instance definitions will allow developers to take these generic types and combine them together to create complex, nested entities composed of many different types through parent/child and assignment relationships, and the known default values for each individual Types' properties.

    Examples: SNEs, TCNs, TSI-Large, laptop, could be a VM (because it could be a collection of components).

    There are many existing types such as; Vehicle, Computer, VirtualMachine, NetworkConfiguration, etc. The entities soldiers and developers are now interacting with are complex and composed of many of these types in parent/child hierarchies.

    Instance definitions are collections of type definitions that have the ability to create an object.

    Type definitions are parts with detailed properties. The type definitions do not create objects, but they are able to define something you can create which is what an object will consist of.

    Example: Virtual Machine, NIC, drive, etc.

    Purpose of Generating Instance Definitions

    The provisioning process for a Soldier or develoer should be limited to selection of a template (instance definition) to use for provisioning and providing unit specific data files and RPS should be able to successfully provision with just this information supplied. The goal is to limit the number of choices and decisions that a soldier, or LSI, would need to make during provisioning.

    By simplifying the provisioning process and removing the number of choices a soldier, or LSI, needs to make in the field, RPS will reduce the likelihood of human error and increase likelihood of adoption due to the improved ease of use.

    Solution for Generating Instance Definitions

    Overview

    To simplify the provisioning process instance definitions can be used as templates to reduce the amount of data the user would need to input and reduce the potential for errors.

    The solution for creating instance definitions is a new feature as a part of REACTR that enables developers to create instance definitions, create instance definition items and export instance definitions. This new feature is implemented as a web application with a back end that uses Microsoft Azure.

    System Workflow

    Instance Definitions workflow diagram

    Technologies

    Technology Name Description Purpose
    .NET Core Open source multi-platform software framework. Used as the primary base software framework REACTR and its features.
    ASP.NET Core Open source modular web framework. Used as the web stack for the REACTR web application.
    Azure Database for PostgreSQL IaaS PostgreSQL database service in Azure. Used as the primary data persistence service for REACTR.
    JSON JavaScript Object Notation file format. Used as the data format for instance definition export files.
    ASP.NET Core MVC Web app framework that implements the model view controller pattern. Used as the web application stack for the instance definition Items feature in REACTR.
    Blazor WebAssembly Web app framework that enables creation of web apps using C#. Used as the web application stack for the instance definitions feature in REACTR.
    Entity Framework Core Object relational mapping framework that supports the development of data-oriented applications. Used as the data layer framework for the instance definitions feature in REACTR.

    Architecture

    Instance Definitions architecture diagram

    The architecture for the instance definitions feature will consist of adding a new area to the REACTR application that will house all the views, controllers, business logic, and data access logic.

    Modified Software

    • Area in REACTR to house the instance definitions feature which consists of the controllers, views, business layer, and data access layer.

    New Infrastructure

    • Azure Database for PostgreSQL to store instance definition Items and instance definitions.

    Security

    Overview

    Group Name Purpose
    DEV Instance Definition Admin Administrator group for instance definition feature in REACTR development site.
    PROD Instance Definition Admin Administrator group for instance definition feature in REACTR UAT and production sites.
    DEV Instance Definition Creator Creator group for instance definition feature in REACTR development site.
    PROD Instance Definition Creator Creator group for instance definition feature in REACTR UAT and production sites.
    DEV Instance Definition Viewer Viewer group for instance definition feature in REACTR development site.
    PROD Instance Definition Viewer Viewer group for instance definition feature in REACTR UAT and production sites.

    More detailed information on what permissions are available for viewing specific data or performing specific actions is listed in the feature-specific sections further down in this document.

    Persistent Data Design

    Data Technical Solution

    Instance definition items and instance definitions will be persisted in PostgreSQL. Separate PostgreSQL tables will exist to house the instance definition items instance definitions, and other supporting data.

    Data Dictionary

    Associations_ResourceResourceGroup
    Field Name C# Data Type Description
    ResourceGroupReferencesId UUID Foreign key to ResourceGroupReferences
    ResourceReferencesId UUID Foreign Key to ResourceReferences
    Associations_ResourceTargetGroup
    Field Name C# Data Type Description
    ResourceReferencesId UUID Foreign Key to ResourceReferences
    TargetGroupReferencesId UUID Foreign Key to TargetGroupReferences
    Associations_TargetGroupResourceGroup
    Field Name C# Data Type Description
    TargetGroupReferencesId UUID Foreign Key to TargetGroupReferences
    ResourceGroupReferencesId UUID Foreign key to ResourceGroupReferences
    Associations_TargetResource
    Field Name C# Data Type Description
    TargetReferencesId UUID Foreign Key to TargetReferences
    ResourceReferencesId UUID Foreign Key to ResourceReferences
    Associations_TargetResourceGroup
    Field Name C# Data Type Description
    TargetReferencesId UUID Foreign Key to TargetReferences
    ResourceGroupReferencesId UUID Foreign key to ResourceGroupReferences
    Associations_TargetTargetGroup
    Field Name C# Data Type Description
    TargetReferencesId UUID Foreign Key to TargetReferences
    TargetGroupReferencesId UUID Foreign Key to TargetGroupReferences
    CachedDataItems
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    Name CITEXT Name (or Value depending on how it's used by the application) of the cached data item.
    Type CITEXT Type of the cached data item.
    InstanceDefinitionGrouping
    Field Name C# Data Type Description
    InstanceDefinitionId UUID Foreign Key to InstanceDefinitions.
    InstanceDefinitionGroupId UUID Foreign Key to InstanceDefinitionGroups.
    InstanceDefinitionGroups
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    Name CITEXT Name of the Instance Definition Group.
    InstanceDefinitionItemProperty
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    Name CITEXT Name of the Instance Definition Item Property.
    Value CITEXT Value of the Instance Definition Item Property.
    InstanceDefinitionItemId UUID Foreign Key to InstanceDefinitionItems.
    InstanceDefinitionItemRoles
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    RoleName CITEXT Name of the Instance Definition Item Role.
    InstanceDefinitionItemId UUID Foreign Key to InstanceDefinitionItems.
    InstanceDefinitionItems
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    Name CITEXT The name of the item from the original item.
    EntityName CITEXT The value that will become the entity name for the item when the Instance Definition is invoked.
    TypeDefinition CITEXT The RPS type definition for the item that identifies what the item is and what structure it should have.
    IsApproved BOOLEAN Boolean that indicates whether the item is approved for use in Instance Definitions. When something IsApproved=$True, it gets locked and can't be edited unless an administrator unlocks it by setting IsApproved=$False
    IsActive BOOLEAN Boolean that indicates whether the item should be active in RPS. IsActive is built into RPS, where ISActive=$True shows that item as active in RPS. Typically in RPS, when IsActive=$False, items are ignored - for example if a maintenance window is not active then it will not be used
    LastUpdatedBy CITEXT The name of the user who updated the item.
    LastUpdatedOn TIMESTAMP The date/time when the item was updated.
    CMDBIDs TEXT List of strings that provides a list of RPS CMDB IDs that the item is associated with.
    Discriminator CITEXT The type name of the item (Resource, Target, ResourceGroup, TargetGroup) that is used as a discriminator value by Entity Framework.
    InstanceDefinitionResourceGroup_IsGlobal BOOLEAN Boolean that indicates whether the item resource group is to be global in RPS.
    InstanceDefinitionNodeProperty
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    Name CITEXT Name of the Instance Definition Node Property.
    Value CITEXT Value of the Instance Definition Node Property.
    InstanceDefinitionId UUID Foreign Key to InstanceDefinitions.
    InstanceDefinitionResourceGroupReference
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    InstanceDefinitionItemId UUID Foreign Key to InstanceDefinitionItems.
    InstanceDefinitionId UUID Foreign Key to InstanceDefinitions.
    ParentReferenceId UUID Foreign Key that references another record in this table.
    InstanceDefinitionResourceReference
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    InstanceDefinitionItemId UUID Foreign Key to InstanceDefinitionItems.
    InstanceDefinitionId UUID Foreign Key to InstanceDefinitions.
    ParentReferenceId UUID Foreign Key that references another record in this table.
    InstanceDefinitionTargetGroupReference
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    InstanceDefinitionItemId UUID Foreign Key to InstanceDefinitionItems.
    InstanceDefinitionId UUID Foreign Key to InstanceDefinitions.
    ParentReferenceId UUID Foreign Key that references another record in this table.
    InstanceDefinitionTargetReference
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    InstanceDefinitionItemId UUID Foreign Key to InstanceDefinitionItems.
    InstanceDefinitionId UUID Foreign Key to InstanceDefinitions.
    ParentReferenceId UUID Foreign Key that references another record in this table.
    InstanceDefinitions
    Field Name C# Data Type Description
    Id UUID Primary Key and unique identifier of each record in the table.
    Name CITEXT Name of the Instance Definition.
    IsApproved BOOLEAN Boolean that indicates whether the item is approved for use.
    Description CITEXT Description of the Instance Definition.
    RequiredProperties TEXT List of required properties for the Instance Definition.
    NodeIpAddress CITEXT IP Address of the Node.
    NodeSyncEndpointUrl CITEXT Sync Endpoint URL for the Node.
    NodeHostName CITEXT Hostname of the Node.
    NodeDescription CITEXT Description of the Node.
    Name CITEXT The name of the node from the original node.
    EntityName CITEXT The value that will become the entity name for the node when the Instance Definition is invoked.
    LastUpdatedBy CITEXT The name of the user who updated the Instance Definition.
    LastUpdatedOn TIMESTAMP The date/time when the Instance Definition was updated.

    Glossary

    Term Definition
    RPS Rapid Provisioning System
    REACTR RPS Enterprise Automation, Configuration and Testing Routines
    Instance Definition The abstraction layer on top of existing RPS Types.
    Instance Definition Reference The assignment of the instance definition to a root Resource Item, which results in a set of one or more Resource Items to be run.
    Instance Definition Association The association between referenced items, which results in an assignment between any combination of Resource Items, Target Items, Resource Groups, or Target Groups.
    Instance Definition Item An item on the abstraction layer on top of existing RPS Types.
    Instance Definition Node A node item that will result in association of a node with target items that are created when an instance definition is invoked.
    Instance Definition Group A collection of two or more instance definitions. Groups provide the ability to export multiple instance definitions to a single JSON file.

    External Assets

    • Instance Definitions workflow diagrams - PDF
    • Instance Definitions architecture diagram - PDF
    In This Article
    Back to top Generated by DocFX