Giter Site home page Giter Site logo

nrs-cmdb's People

Contributors

calouie avatar cvarjao avatar georgewalker avatar snyk-bot avatar swcurran avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nrs-cmdb's Issues

Database Instance Outage Report

The system needs to be able to produce the data for a database instance outage report. What is the impact to a database instance going down, retired, updated, shutdown, or restarted?

Implement an API endpoint and logic to load a bundle

Given the definition of a bundle, implement an API endpoint and logic to load such a bundle into the CMDB database.

Assume that the database has existing components. The logic of the bundle processing should be as follows:

  • Instantiate the literal software/hardware/provides/requires components and connections between them. These will eventually be nodes and edges in the database, but not immediately.
  • For each environment:
    • generate and upsert into the CMDB an instance of each of node and edge defined in the previous step.
    • search the current contents of the database for the "provides" node that "best satisfies" each "requires" and create an edge between the two nodes
      • For the initial implementation, "best satisfies" can be an exact match, but assume that the implementation of the "best satisfies" will iteratively evolve over time

TDB about "requires" and "provides":

  • Should an unsatisfied "requires" result in an error or a warning?
    • If it is an error, we may get into load order issues, especially if there is cycle between components. Are cycles possible or would the configuration just be invalid?
  • Related issue (that is irrelevant if cycles are not possible): On loading, when a new "provides" is loaded, should a search be done for an unsatisfied "requires" that is satisfied by the "provides".

Get properties for a given module instance

Create the ability for a set of key value pairs to be returned for a given project / component/ environment

This would be used to fetch all of the data needed for a build

Secure Credential/Secret storage and management

Credentials and secrets MUST be handled with extreme care to guarantee it always secure and kept confidential.
Perhaps the credentials/secrets itself may be stored in a specialized scripted database/service (e..g: vault, password manager pro, ...)

Process the existing properties files for apps for loading into the DCTS database

The current NRS application properties files are stored in a private repo in the NRS Stash instance - https://apps.nrs.gov.bc.ca/int/stash/projects/SDK/repos/sdk-config/browse?

Find/evolve/create code to traverse the files in that repo to generate per Application/Component/Environment properties for loading into the DCTS repository - likely an instance of the OrientDB graph database.

Currently, a groovy script processes the files at deploy time to get the properties needed to deploy an app to a given environment. The data will need to be stored in a way to add an API in front of the data so that the groovy script can call the API.

Manage technology and roadmap

We need to know that an application uses specific technology (e.g.: Java 1.7, Java 1.8, Oracle 11G, Oracle 12C, Oracle Instant Client 12c, .Net 4, ...)

Technologies have a end-of-life (de-support) date, and we need to keep track so we are not using technologies that are no longer supported.

Discussion point: Should we import build dependencies? e.g.: ojdbc 12, spring 4, Hibernate 4.2, struts, ...

Add missing topics

TL;DR

Topics greatly improve the discoverability of repos; please add the short code from the table below to the topics of your repo so that ministries can use GitHub's search to find out what repos belong to them and other visitors can find useful content (and reuse it!).

Why Topic

In short order we'll add our 800th repo. This large number clearly demonstrates the success of using GitHub and our Open Source initiative. This huge success means its critical that we work to make our content as discoverable as possible; Through discoverability, we promote code reuse across a large decentralized organization like the Government of British Columbia as well as allow ministries to find the repos they own.

What to do

Below is a table of abbreviation a.k.a short codes for each ministry; they're the ones used in all @gov.bc.ca email addresses. Please add the short codes of the ministry or organization that "owns" this repo as a topic.

add a topic

That's in, you're done!!!

How to use

Once topics are added, you can use them in GitHub's search. For example, enter something like org:bcgov topic:citz to find all the repos that belong to Citizens' Services. You can refine this search by adding key words specific to a subject you're interested in. To learn more about searching through repos check out GitHub's doc on searching.

Pro Tip ๐Ÿค“

  • If your org is not in the list below, or the table contains errors, please create an issue here.

  • While you're doing this, add additional topics that would help someone searching for "something". These can be the language used javascript or R; something like opendata or data for data only repos; or any other key words that are useful.

  • Add a meaningful description to your repo. This is hugely valuable to people looking through our repositories.

  • If your application is live, add the production URL.

Ministry Short Codes

Short Code Organization Name
AEST Advanced Education, Skills & Training
AGRI Agriculture
ALC Agriculture Land Commission
AG Attorney General
MCF Children & Family Development
CITZ Citizens' Services
DBC Destination BC
EMBC Emergency Management BC
EAO Environmental Assessment Office
EDUC Education
EMPR Energy, Mines & Petroleum Resources
ENV Environment & Climate Change Strategy
FIN Finance
FLNR Forests, Lands, Natural Resource Operations & Rural Development
HLTH Health
FLNR Indigenous Relations & Reconciliation
JEDC Jobs, Economic Development & Competitiveness
LBR Labour Policy & Legislation
LDB BC Liquor Distribution Branch
MMHA Mental Health & Addictions
MAH Municipal Affairs & Housing
BCPC Pension Corporation
PSA Public Safety & Solicitor General & Emergency B.C.
SDPR Social Development & Poverty Reduction
TCA Tourism, Arts & Culture
TRAN Transportation & Infrastructure

NOTE See an error or omission? Please create an issue here to get it remedied.

Define a bundle for a component that can be loaded into the CMDB

In the latest iterations, the data for loading in the schema has been literal - code in the form of OrientDB load statements to create Nodes and Edges according to the defined CMDB data model. More useful would be a more concise representation that can be passed to an API endpoint for loading via transformation and generation.

The bundle definition will be collaboratively and iteratively defined in the wiki here.

  • Literal hardware, software nodes and fixed edges between those nodes
  • Requires and Provides endpoints for external connections from the nodes
  • Environments into which the literal nodes/edges can be materialized

Server Outage Report

The system needs to be able to produce the data for a server outage report. What is the impact to server going down, retired, or being rebooted?

Application Outage Report

The system needs to be able to produce the data for an application outage report. What is the impact to an application going down, retired, deployed/updated, or restarted?

Basic supported configuration item types

Base on Configuration item wikipedia entry:

  • Hardware
    • Server (Physical, Virtual, Cluster, "Stream")
    • Router/Proxy
  • Software
    • Application
    • Web Services
    • Composite Applications
    • COTS
    • Components (e.g.: CRON tasks)
    • DataSet (e.g.: Oracle Schema)
  • Credentials
    • Username + password
    • Key/License/Password
  • Communications/Networks
    • Network connection
    • Firewall Rule
  • Location
    • Data Center
    • Zone
  • People (Staff and Contractors, Organization unit)

Model changes from 8-31-17

-- Add appplication called "Titan" that is connected to a different server. It will be connected to a cluster of servers (2 server nodes)
-- Create a few queries that answer questions
-- how do we put a database node on the graph?
-- user "titan proxy", schema "titan", database instance ("OSDB"), database server "Cluster

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.