Skip to content
index.html 63.6 KiB
Newer Older
    Introduction
    
  </span>
  

      </a>
    </li>
  

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

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_6_2">
            <span class="md-nav__icon md-icon"></span>
            CAMARA
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../addons/camara/intro/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Offering CAMARAaaS
    
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../addons/camara/qod/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Quality on Demand
    
  </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_7" >
        
          
          <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Design & Architecture
    
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_7">
            <span class="md-nav__icon md-icon"></span>
            Design & Architecture
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
      <a href="../../architecture/architecture/" class="md-nav__link">
      <a href="../../architecture/messagebus/" class="md-nav__link">
      <a href="../../architecture/osom/" class="md-nav__link">
      <a href="../../architecture/cridge/" class="md-nav__link">
    CRIDGE
    
  </span>
  

      </a>
    </li>
  

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

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/oauth/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Authentication
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_7" >
          <label class="md-nav__link" for="__nav_7_7" id="__nav_7_7_label" tabindex="0">
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_7_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_7_7">
            <span class="md-nav__icon md-icon"></span>
            APIs
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/tmfapi/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    TMF API
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/issuemgt/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Issue management
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/centrallog/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Central logging
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
          <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="true">
          <label class="md-nav__title" for="__nav_8">
            <span class="md-nav__icon md-icon"></span>
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
    
  
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
        
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          
  
  <span class="md-ellipsis">
    Developing
  </span>
  

          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="./" class="md-nav__link md-nav__link--active">
        
  
  <span class="md-ellipsis">
    Developing
  </span>
  

      </a>
      
        

<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="#general-requirements" class="md-nav__link">
    <span class="md-ellipsis">
      General requirements
    </span>
  </a>
  
  <a href="#versionrelease-management" class="md-nav__link">
      Version/release management
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#getting-started" class="md-nav__link">
    <span class="md-ellipsis">
      Getting Started
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#contribute-to-a-subsystem" class="md-nav__link">
    <span class="md-ellipsis">
      Contribute to a subsystem
      
        <li class="md-nav__item">
  <a href="#examples-of-developing-on-specific-subsystems" class="md-nav__link">
    <span class="md-ellipsis">
      Examples of developing on specific subsystems
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Examples of developing on specific subsystems">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#vnfnsd-catalog-management-and-nsd-deployment-api-service" class="md-nav__link">
    <span class="md-ellipsis">
      VNF/NSD Catalog Management and NSD Deployment API service
    </span>
  </a>
  
        
          <li class="md-nav__item">
  <a href="#vnfnsd-catalog-management-and-nsd-deployment-web-ui-service" class="md-nav__link">
    <span class="md-ellipsis">
      VNF/NSD Catalog Management and NSD Deployment WEB UI service
    </span>
  </a>
  
  <a href="#reach-us" class="md-nav__link">
    <nav class="md-nav" aria-label="Reach us">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#slack" class="md-nav__link">
    <span class="md-ellipsis">
      Slack
    </span>
  </a>
  
</li>
  <a href="#e-mail" class="md-nav__link">
    <span class="md-ellipsis">
      E-mail
      
        <li class="md-nav__item">
  <a href="#wishlist" class="md-nav__link">
    <span class="md-ellipsis">
      Wishlist
    </span>
  </a>
  
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../documenting/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Documenting
      
      
  
  
  
  
    <li class="md-nav__item">
      <a href="../../terminology/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Terminology
  </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="#general-requirements" class="md-nav__link">
    <span class="md-ellipsis">
      General requirements
    </span>
  </a>
  
  <a href="#versionrelease-management" class="md-nav__link">
      Version/release management
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#getting-started" class="md-nav__link">
    <span class="md-ellipsis">
      Getting Started
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#contribute-to-a-subsystem" class="md-nav__link">
    <span class="md-ellipsis">
      Contribute to a subsystem
      
        <li class="md-nav__item">
  <a href="#examples-of-developing-on-specific-subsystems" class="md-nav__link">
    <span class="md-ellipsis">
      Examples of developing on specific subsystems
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Examples of developing on specific subsystems">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#vnfnsd-catalog-management-and-nsd-deployment-api-service" class="md-nav__link">
    <span class="md-ellipsis">
      VNF/NSD Catalog Management and NSD Deployment API service
    </span>
  </a>
  
        
          <li class="md-nav__item">
  <a href="#vnfnsd-catalog-management-and-nsd-deployment-web-ui-service" class="md-nav__link">
    <span class="md-ellipsis">
      VNF/NSD Catalog Management and NSD Deployment WEB UI service
    </span>
  </a>
  
  <a href="#reach-us" class="md-nav__link">
    <nav class="md-nav" aria-label="Reach us">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#slack" class="md-nav__link">
    <span class="md-ellipsis">
      Slack
    </span>
  </a>
  
</li>
  <a href="#e-mail" class="md-nav__link">
    <span class="md-ellipsis">
      E-mail
      
        <li class="md-nav__item">
  <a href="#wishlist" class="md-nav__link">
    <span class="md-ellipsis">
      Wishlist
    </span>
  </a>
  
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  
<p>OpenSlice backend services are mainly implemented with Java 17 or above and Spring Boot.</p>
<p>OpenSlice uses various subsystems and depending on the module would you like to work, other subsystems must be present <em>(you can disable them though in the code, e.g. at docker-compose.yaml file)</em>. </p>
<h2 id="general-requirements">General requirements</h2>
<ul>
<li>Docker should be installed in your development environment</li>
<li>Run the core subsystems (see <a href="#contribute-to-a-subsystem">related</a> section)</li>
</ul>
<h2 id="versionrelease-management">Version/release management</h2>
<p>Check <a href="https://nvie.com/posts/a-successful-git-branching-model/">this</a> nice article on how we develop and release versions.</p>
<p>We develop in the <code>develop</code> branch and follow a issue driven development model.</p>
<h2 id="getting-started">Getting Started</h2>
<p>To get the latest development branch, execute:</p>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>wget<span class="w"> </span>https://labs.etsi.org/rep/osl/code/org.etsi.osl.main/-/raw/develop/compose/deploy.sh<span class="w"> </span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>sudo<span class="w"> </span>./deploy.sh<span class="w"> </span>develop<span class="w">  </span><span class="c1">#[or replace develop with another branch name]</span>
</span></code></pre></div>
<p>You may follow the <a href="https://osl.etsi.org/documentation/develop/deployment/">installation process</a>, as described at <code>develop</code> tagged documentation.</p>
<h2 id="contribute-to-a-subsystem">Contribute to a subsystem</h2>
<p>To work on a specific subsystem e.g. <code>org.etsi.osl.tmf.api</code>, you must:</p>
<ol>
<li>
<p>Deploy only the core necessary subsystems through:</p>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>sudo<span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span>--profile<span class="w"> </span>dev<span class="w"> </span>down<span class="p">;</span>sudo<span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span>--profile<span class="w"> </span>dev<span class="w"> </span>up<span class="w"> </span>-d<span class="w"> </span>--build
</span></code></pre></div>
<p>Note <strong>--profile dev</strong> that will only deploy the core dependency subsystems, instead   of the whole OpenSlice.</p>
<p><em>OR</em></p>
<p>Alternatively, comment out the respective container from the <code>docker-compose.yaml</code> file, so as to deploy the whole OpenSlice, except the subsystem you want to work on, following the provided installation steps.</p>
</li>
<li>
<p>Clone the respective repository, for example: <a href="https://labs.etsi.org/rep/osl/code/org.etsi.osl.tmf.api/-/tree/develop">https://labs.etsi.org/rep/osl/code/org.etsi.osl.tmf.api/-/tree/develop</a> (the clone URLs are available at this link)</p>
</li>
<li>
<p>Code! 😊</p>
</li>
</ol>
<h2 id="examples-of-developing-on-specific-subsystems">Examples of developing on specific subsystems</h2>
<h3 id="vnfnsd-catalog-management-and-nsd-deployment-api-service">VNF/NSD Catalog Management and NSD Deployment API service</h3>
<p>You need to:</p>
<ol>
<li>
<p>Clone the repository: <code>https://labs.etsi.org/rep/osl/code/org.etsi.osl.portal.api/-/tree/develop</code></p>
</li>
<li>
<p>Check the docker-compose.yml file. Default port is 13080. Check specifically the datasource username/password, server port.</p>
<p>Make sure that the core subsystems are up and running.</p>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>mvn<span class="w"> </span>spring-boot:run
</span></code></pre></div></p>
</li>
</ol>
<blockquote>
<p>For verification, Swagger API of the service is at <code>http://localhost:13000/osapi/swagger-ui/index.html</code>. 
 There, you may try there various REST actions and authenticate via the OAuth server without the use of the UI.</p>
</blockquote>
<h3 id="vnfnsd-catalog-management-and-nsd-deployment-web-ui-service">VNF/NSD Catalog Management and NSD Deployment WEB UI service</h3>
<p>The Web UI is written in <code>AngularJS</code>. To run it:</p>
<ol>
<li>
<p>Clone the repository: <a href="https://labs.etsi.org/rep/osl/code/org.etsi.osl.portal.web/-/tree/develop">https://labs.etsi.org/rep/osl/code/org.etsi.osl.portal.web/-/tree/develop</a> (the clone URLs are available at that link)</p>
<blockquote>
<p>By default the project <code>org.etsi.osl.portal.api</code> exposes the folder <code>../org.etsi.osl.portal.web/src/</code> in a folder testweb (check class <code>MvcConfig.java</code> in <code>org.etsi.osl.portal.api</code>) for development. (In production <em>nginx</em> is used)</p>
</blockquote>
</li>
<li>
<p>Point your browser to <code>http://localhost:13000/osapi/testweb/index.html/</code></p>
</li>
</ol>
<h2 id="reach-us">Reach us</h2>
<p>We are available on different channels.</p>
<h3 id="slack">Slack</h3>
<p>Feel free to join OpenSlice's <a href="https://openslice.slack.com">Slack</a> workspace for any development oriented questions <em>(preferred)</em>.</p>
<h3 id="e-mail">E-mail</h3>
<p>If you are a member or a participant, you can also reach out on the <code>OSL_TECH</code> mailing list.</p>
<p>For administrative support, contact <code>SDGsupport@etsi.org</code>.</p>
<p>Check also our wishlist of new features. You can add your own.</p>
<p>See <a href="../wishlist/">wishlist</a>.</p>
          
          
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
        
          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
  Back to top
</button>
        
      </main>
      
        <footer class="md-footer">
  
    
      
      <nav class="md-footer__inner md-grid" aria-label="Footer" >
        
          
          <a href="../../architecture/centrallog/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Central logging">
            <div class="md-footer__button md-icon">
              
              <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>
            <div class="md-footer__title">
              <span class="md-footer__direction">
                Previous
              </span>
              <div class="md-ellipsis">
                Central logging
              </div>
          <a href="../documenting/" class="md-footer__link md-footer__link--next" aria-label="Next: Documenting">
            <div class="md-footer__title">
              <span class="md-footer__direction">
                Next
              </span>
              <div class="md-ellipsis">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
      </nav>
    
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
    <div class="md-copyright__highlight">
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>