Skip to main content

Add new distribution

Ways to add a new distribution

cd /var/www/be

Create distribution folder:

mkdir data/distributions/%distribution-name%

Use/Copy the template:

  
cp SW/templates/distribution.yaml  ./

Convert the yaml to json: (need to have node.js installed)

yaml2json distribution.yaml (this will create a distribution.json file in the same dir)

Now we have a json file:

distribution.json

Rename it to the distribution-name:

mv distribution.json %distribution-name.name%.json

1st approach - using the Database (DB)

Add the data manually to the DB:

  • Product
  • Distribution product data Commands...
    Examples:
    cat create_table.sql |sqlite3 db/egi-repos-fe-test.db
    sqlite3 db/egi-repos-fe-test.db ".read insert_data.sql"
    sqlite3 db/egi-repos-fe-test.db "select MAX(f1) from tbl2;" ".exit" sqlite3 db/egi-repos-fe-test.db "INSERT INTO tbl2 ('f1','f2','f3') VALUES('001','teste','ttttt');" ".exit"

INSERT INTO "main"."products"`distributions_test`(
            ("id",distributionType, "name",distributionVersion, "productName",currentState,
            "version",majorVersion, "majorVersion",minorVersion, "minorVersion",revisionVersion,
            "revisionVersion",releaseDate, "distributionType",created,
            "distributionVersion",lastUpdated, "description",description,
            "currentState",repositoryURL, "contact",releaseNotes,
            "technicalContact",additionalDetails, "repositoryURL",installationNotes,
            "technologyProvider",contact, "technologyProviderShortName",technicalContact,
            "releaseDate",knownIssues, "lastUpdated",changeLog
            "releaseNotes", "knownIssues", "changeLog", "additionalDetails", "installationNotes", "keywords", "apicallback", "documentationLinks", "capabilities", "capability", "targets", "softwareConfigurationLink") 
VALUES ('958', 'cesnet.rocci-server', 'rocci-server', '2.0.4', '2', '0', '4', 'CMD-ONE', '1.1.0', 'OCCI (the Open Cloud Computing Interface) is a standard defined by the Open Grid Forum, specifying a protocol and API to perform various remote management tasks in clouds. The rOCCI-server extends cloud managers, which are not OCCI-compliant natively, with its own OCCI interface. It is based on the rOCCI (Ruby OCCI) Framework.
', 'deployed', 'parak@cesnet.cz', 'parak@cesnet.cz', 'sw/production/cmd-one/1', 'CESNET', 'CESNET', '2018-11-12 12:34:40', '2018-11-12 12:34:40', 'https://github.com/the-rocci-project/rOCCI-server/releases/tag/v2.0.4', '', 'N/A', '', '', '[]', '', '{"documentationLink":{"link":"https:\/\/wiki.egi.eu\/wiki\/MAN10#EGI_Virtual_Machine_Management","type":"other"}}', '{"capability":{"value":"Client Tools","fullsupport":"yes"}}', '', '{"target":{"platform":"centos7","arch":"x86_64","repositoryURL":"sw\/production\/cmd-one\/1\/centos7\/x86_64\/updates","isnew":"no","ishidden":"no","displayVersion":"","apicallback":"http:\/\/admin-repo.egi.eu\/api\/report\/release\/xml?id=13797"}}', '','','','','','','','','','','');

Export/prepare all the data from DB (replacing the data in data/*)

$ export-full-dataset.sh

...................................................
php export-distributions.php
php export-distributions.php --individual-distributions (Each distribution) php export-products.php
php export-products.php --individual-products (Each product)


2nd approach - add the data manually to the json files

Manually add product

cp release.json	data/  
cp release.json data/products/distribution-type/distribution-version/$productname(change this).json

add product data (to the products list in distribution):
data/distributions/distribution-type/$distribution-version.json (products[] array)
ex. of product item:

{
  "distributionType": "",
  "distributionVersion": "%version%0.0.0",
  "currentState": "deployed",
  "majorVersion": 0,
  "minorVersion": 0,
  "revisionVersion": 0,
  "releaseDate": "",
  "created": "",
  "lastUpdated": "",
  "description": "",
  "repositoryURL": "sw/production/%distribution-type%/%version-first-digit%0",
  "releaseNotes": "",
  "additionalDetails": "",
  "installationNotes": "",
  "contact": "",
  "technicalContact": "",
  "knownIssues": "",
  "changeLog": ""  
}

add distribution data (to the software distributions catalog):
data/software-distributions.json (item[] array)
ex. of distribution item: (DON'T FORGET TO ADD A COMMA , BEFORE THE BRACKETS)

,
{
  "distributionType": "",
  "distributionVersion": "%version%0.0.0",
  "currentState": "deployed",  
  "releaseDate": "",
  "description": "",
  "products": [ 
        {
          "name": "product-name",
          "version": "0.0.0",
          "capabilities": ["Client Tools"],
          "status": 1
        }
     ]
}