Skip to content
index.html 34.6 KiB
Newer Older

<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
        <meta name="description" content="ETSI SDG TFS Documentation page">
      
      
        <meta name="author" content="TeraflowSDN by ETSI">
      
      
        <link rel="canonical" href="https://tfs.etsi.org/develop/releasenotes/">
      
      
      
      
      <link rel="icon" href="../images/favicon.png">
      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.34">
    
    
      
        <title>Releasenotes - ETSI SDG TFS Documentation</title>
      
    
    
      <link rel="stylesheet" href="../assets/stylesheets/main.35f28582.min.css">
      
        
        <link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
      
      


    
    
      
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
      <link rel="stylesheet" href="../stylesheets/extra.css">
    
    <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
    
  </head>
  
  
    
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom">
  
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#release-100" class="md-skip">
          Skip to content
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
      <div data-md-color-scheme="default" data-md-component="outdated" hidden>
        
      </div>
    
    
      

  

<header class="md-header md-header--shadow" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="Header">
    <a href=".." title="ETSI SDG TFS Documentation" class="md-header__button md-logo" aria-label="ETSI SDG TFS Documentation" data-md-component="logo">
      
  <img src="../images/logos/TeraFlowSDN_tr.png" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            ETSI SDG TFS Documentation
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
            
          </span>
        </div>
      </div>
    </div>
    
      
    
    
    
    
      <label class="md-header__button md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="Search">
        
        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
          
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            Initializing search
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://labs.etsi.org/rep/tfs" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
  </div>
  <div class="md-source__repository">
    TFS GitLab
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    



<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href=".." title="ETSI SDG TFS Documentation" class="md-nav__button md-logo" aria-label="ETSI SDG TFS Documentation" data-md-component="logo">
      
  <img src="../images/logos/TeraFlowSDN_tr.png" alt="logo">

    </a>
    ETSI SDG TFS Documentation
  </label>
  
    <div class="md-nav__source">
      <a href="https://labs.etsi.org/rep/tfs" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
  </div>
  <div class="md-source__repository">
    TFS GitLab
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
        
          
          <label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_1">
            <span class="md-nav__icon md-icon"></span>
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../architecture/" class="md-nav__link">
    <li class="md-nav__item">
      <a href="../architecture/" class="md-nav__link">
    <li class="md-nav__item">
      <a href="../architecture/" class="md-nav__link">
  <span class="md-ellipsis">
    Install MicroK8s
  </span>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../architecture/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
        
          
          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2">
            <span class="md-nav__icon md-icon"></span>
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1" >
        
          
          <label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Configure Environment
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_1">
            <span class="md-nav__icon md-icon"></span>
            Configure Environment
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../gettingstarted/howtorun/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../gettingstarted/howtorun/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Python
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
        
          
          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Testing
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3">
            <span class="md-nav__icon md-icon"></span>
            Testing
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../testing/testplan/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Test Plan
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../testing/robotframework/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Robot Framework
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../testing/postman/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Postman
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    <li class="md-nav__item">
      <a href="../FAQ/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    FAQ
  </span>
  

      </a>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#release-100" class="md-nav__link">
    <span class="md-ellipsis">
      Release 1.0.0
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Release 1.0.0">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#new-features" class="md-nav__link">
    <span class="md-ellipsis">
      New Features
    </span>
  </a>
  
    <nav class="md-nav" aria-label="New Features">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#registration-flow-improved" class="md-nav__link">
    <span class="md-ellipsis">
      Registration Flow improved
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#new-opencapif-architecture" class="md-nav__link">
    <span class="md-ellipsis">
      New OpenCAPIF architecture
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#events-api-upgrade" class="md-nav__link">
    <span class="md-ellipsis">
      Events API Upgrade
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#inital-implementation-of-cicd" class="md-nav__link">
    <span class="md-ellipsis">
      Inital implementation of CI/CD
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#documentation" class="md-nav__link">
    <span class="md-ellipsis">
      Documentation
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Documentation">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#improvements-on-documentation" class="md-nav__link">
    <span class="md-ellipsis">
      Improvements on documentation
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#technical-debt-solved" class="md-nav__link">
    <span class="md-ellipsis">
      Technical Debt Solved
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Technical Debt Solved">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#improved-testing-with-robot-in-order-to-cover" class="md-nav__link">
    <span class="md-ellipsis">
      Improved Testing with Robot in order to cover
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#improved-security-on-db" class="md-nav__link">
    <span class="md-ellipsis">
      Improved security on DB
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#scripts-upgraded" class="md-nav__link">
    <span class="md-ellipsis">
      Scripts upgraded
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#codebase-improvements" class="md-nav__link">
    <span class="md-ellipsis">
      Codebase Improvements
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#migration-to-gunicorn" class="md-nav__link">
    <span class="md-ellipsis">
      Migration to GUNICORN
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#release-00" class="md-nav__link">
    <span class="md-ellipsis">
      Release 0.0
    </span>
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  



<h2 id="release-100"><strong>Release 1.0.0</strong></h2>
<h3 id="new-features"><strong>New Features</strong></h3>
<h4 id="registration-flow-improved">Registration Flow improved</h4>
<ul>
<li>Eliminated access from CAPIF to the Register user database when onboarding is performed.</li>
<li>Isolation between CCF and Register services, interaction now is only by HTTPS requested between Register, CCF and Vault.</li>
<li>Eliminated the "role" in user creation.<ul>
<li>Now a user can be an invoker or a provider at the same time</li>
</ul>
</li>
<li>Administrator User:<ul>
<li>New entity in charge of registering and managing users of the register service.</li>
</ul>
</li>
<li>UUID to identify users.<ul>
<li>When you create a user, a uuid is associated with it</li>
<li>The uuid will be contained in the token requested by the user and will be used to relate invokers and providers with users.</li>
</ul>
</li>
<li>Endpoints changed and created:<ul>
<li>Administrator endpoints:<ul>
<li>/createUser: /register endpoint changed to createUser. Used to register new users.</li>
<li>/deleteUser: /remove endpoint changed to this. Used to delete users and all the entities they had created.</li>
<li>/login: Allows administrator to log in to obtain the necessary tokens for their requests.</li>
<li>/refresh: Retrieve new access token token.</li>
<li>/getUsers: Returns the list with all registered users.</li>
</ul>
</li>
<li>Customer User:<ul>
<li>/getauth now also returns the urls needed to use CAPIF, used by customer.</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Security improvements:</p>
<ul>
<li>/login uses basic auth with administrator credentials.</li>
<li>/getauth uses basic auth with customer user credentials.</li>
<li>Other requests use the administrator access token obtained from login.</li>
</ul>
</li>
<li>
<p>Current fields on user creation by administrator:</p>
</li>
</ul>
<pre><code>required_fields = {
    &quot;username&quot;: str,
    &quot;password&quot;: str,
    &quot;enterprise&quot;: str,
    &quot;country&quot;: str,
    &quot;email&quot;: str,
    &quot;purpose&quot;: str
}

optional_fields = {
    &quot;phone_number&quot;: str,
    &quot;company_web&quot;: str,
    &quot;description&quot;: str
}
</code></pre>
<ul>
<li>Test plan has been updated with the new register flow. Please check <a href="https://ocf.etsi.org/documentation/latest/testing/testplan/common_operations/" title="OCF Registration Flow">OCF Registration Flow</a></li>
<li>Video with explanation and demonstration of new register flow <a href="https://www.youtube.com/watch?v=sn-tN6eRvv8" title="New Registration Demo">New Registration Demo</a></li>
</ul>
<h4 id="new-opencapif-architecture">New OpenCAPIF architecture</h4>
<ul>
<li>New arquitecture with separated namespaces for Vault, CCF and Register components. Communication between them now are only allowed by using REST APIs.</li>
<li>
<p>New helper service inside CCF, it will simplify integration with third parties like external management portals.</p>
</li>
<li>
<p>Helper endpoints:</p>
<ul>
<li>/getInvokers : Get the list of invokers from CAPIF</li>
<li>/getProviders: Get the list of providers from CAPIF</li>
<li>/getServices : Get the list of services published in CAPIF</li>
<li>/getSecurityContext : Get the list of security contexts from CAPIF</li>
<li>/getEvents : Get the list of events subscriptions from CAPIF</li>
<li>/deleteEntities: Removes all entities registered by a user from the register</li>
</ul>
</li>
<li>
<p>Security in the helper</p>
<ul>
<li>To make requests to the helper you will need a superadmin certificate and password.</li>
</ul>
</li>
</ul>
<h4 id="events-api-upgrade">Events API Upgrade</h4>
<ul>
<li>The event management at CCF is improved, EventNotification include Event Details with required information.</li>
<li>Events updated:<ul>
<li>SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE with apiIds</li>
<li>SERVICE_API_UPDATE with serviceAPIDescriptions</li>
<li>API_INVOKER_ONBOARDED, API_INVOKER_UPDATED, API_INVOKER_OFFBOARDED with apiInvokerIds.</li>
</ul>
</li>
<li>Events Included:<ul>
<li>SERVICE_API_INVOCATION_SUCCESS and SERVICE_API_INVOCATION_FAILURE with invocationLogs</li>
</ul>
</li>
<li>Test plan include 7 new tests in order to check new events implemented and scenarios of each notification implemented, with a complete check of Event Notification.</li>
<li>Test plan documentation includes the new event tests <a href="https://ocf.etsi.org/documentation/latest/testing/testplan/api_events_service/" title="OCF Event test plan documentation">OCF Event test plan documentation</a>.</li>
</ul>
<h4 id="inital-implementation-of-cicd">Inital implementation of CI/CD</h4>
<ul>
<li>The inital implementation of CI/CD on gitlab was performed.</li>
<li>Detailed information in the <a href="[https://](https://labs.etsi.org/rep/ocf/community/-/wikis/OCF-CICD)" title="CI/CD Wiki">CICD Wiki</a>.</li>
<li>Implement initial CI/CD:<ul>
<li>Description of the CI process.<ul>
<li>In CI phase, created design, jobs and security checks when a branch is pushed.</li>
<li>The CI has jobs as:<ul>
<li>Linting code, unit test (if needed),</li>
<li>Build and push artifacts (images) in Git OCI register</li>
<li>Security checks,</li>
<li>SCA, CVS, SAST</li>
<li>The vulnerabilities are exposed in Merge Request panel to be solved.</li>
</ul>
</li>
</ul>
</li>
<li>Description of the CD process:<ul>
<li>Defined the environments to OCF.<ul>
<li>Production env.</li>
<li>Pre-production env.</li>
<li>Validation env.</li>
<li>Dev-1, dev-2… envs (ephemeral)</li>
</ul>
</li>
<li>Defined the naming convention to OCF releases<ul>
<li>Tag in prod: v0.0.1-release</li>
<li>Tag non-prod: v0.0.1-rc</li>
<li>Other tags: v0.0.1-test, v0.0.1-smt</li>
</ul>
</li>
<li>Defined the jobs of CD<ul>
<li>CD ensures the deployment in multiple envs. Therefore, the CD pipeline has deploy-ocf, delete-ocf (if needed) jobs</li>
</ul>
</li>
</ul>
</li>
<li>ETSI HIVE Labs:<ul>
<li>Designed, created and the Kuberntes OCF cluster is running to support OCFs deployments.</li>
<li>Iterating with ETSI HIVE’s support to solve computing issues.<ul>
<li>CPU compatibilities with OCF services (MongoDB): Fixed</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="documentation"><strong>Documentation</strong></h3>
<h4 id="improvements-on-documentation">Improvements on documentation</h4>
<ul>
<li>Documentation stored in <a href="https://labs.etsi.org/rep/ocf/documentation" title="OCF Documentation Repository">OCF Documentation Repository</a></li>
<li>Continuous Integration included at repository for web documentation:<ul>
<li>Develop version of documentation is automatically generated on each merge to develop branch.</li>
<li>Tagged version from main create documentation with related tag as version.</li>
</ul>
</li>
</ul>
<h3 id="technical-debt-solved"><strong>Technical Debt Solved</strong></h3>
<h4 id="improved-testing-with-robot-in-order-to-cover">Improved Testing with Robot in order to cover</h4>
<ul>
<li>Support of new Register flows.</li>
<li>Allow different URLs for register, ccf and vault services.</li>
<li>New Variables included to manage new architecture under test.</li>
<li>Mock server developed to add the functionality of write tests involving notification from Service Under Test.</li>
<li>Docker image improved generation and libraries upgraded to Robot Framework 7.</li>
</ul>
<h4 id="improved-security-on-db">Improved security on DB</h4>
<ul>
<li>Credentials requested to access mongo databases.</li>
<li>Credentials requested also by mongo-express.</li>
</ul>
<h4 id="scripts-upgraded">Scripts upgraded</h4>
<ul>
<li>Docker compose version 2 used on them.</li>
<li>New cleaning script developed.</li>
<li>Scripts upgraded:<ul>
<li><strong>check_services_are_running.sh</strong>: Checks if all essential services (Vault, CCF and Register) are running.</li>
<li><strong>clean_capif_docker_services.sh</strong>: Shutdowns and removes all services essential services.</li>
<li><strong>clean_capif_temporary_files.sh</strong>: Removes temporaly files from local repository. </li>
<li><strong>run.sh</strong>: Launch Essential services locally using docker compose, also monitoring can be launched.</li>
<li><strong>run_capif_tests.sh</strong>: Launch Robot Framwork Tests.</li>
<li><strong>show_logs.sh</strong>: Show locally logs of Services running.</li>
<li><strong>run_mock_server.sh</strong>: Launch mock server locally on all interfaces. This axiliary server is only used by tagged mockserver tests on Robot Framework.</li>
<li><strong>clean_mock_server.sh</strong>: Remove mock server local deployment.</li>
<li><strong>deploy.sh</strong>: This script simplify the way to download capif repository.</li>
</ul>
</li>
</ul>
<h4 id="codebase-improvements">Codebase Improvements</h4>
<ul>
<li>Documentation is now on splitted repository <a href="https://labs.etsi.org/rep/ocf/documentation" title="OCF Documentation Repository">OCF Documentation Repository</a></li>
<li>Test plan was moved to <a href="https://labs.etsi.org/rep/ocf/documentation" title="OCF Documentation Repository">OCF Documentation Repository</a></li>