Commit 71fbda87 authored by Jorge Moratinos's avatar Jorge Moratinos
Browse files

Deployed cd24cf84 to develop in public with MkDocs 1.6.0 and mike 2.1.1

parent a3a5a48e
Loading
Loading
Loading
Loading
+570 −17
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@
    <div data-md-component="skip">
      
        
        <a href="#release-xxx-rc" class="md-skip">
        <a href="#release-100" class="md-skip">
          Skip to content
        </a>
      
@@ -298,8 +298,17 @@
      
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          
  
  <span class="md-ellipsis">
    Release Notes
  </span>
  

          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="./" class="md-nav__link md-nav__link--active">
        
  
@@ -310,6 +319,191 @@

      </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="#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>
        
          <li class="md-nav__item">
  <a href="#capif-spec-release-18" class="md-nav__link">
    <span class="md-ellipsis">
      CAPIF spec release 18
    </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>
      
    </li>
  

@@ -549,7 +743,181 @@
  
  
  
    <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>
        
          <li class="md-nav__item">
  <a href="#capif-spec-release-18" class="md-nav__link">
    <span class="md-ellipsis">
      CAPIF spec release 18
    </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>
@@ -564,35 +932,220 @@
                  


<h1 id="release-xxx-rc">Release X.X.X-rc</h1>
<p>This release includes next changes:</p>
<p><strong>New register flow to ensure:</strong></p>
  <h1>Release Notes</h1>

<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>isolation between CCF and Register services.</li>
<li>Improve security, with split resposability between administrator operations and common user.</li>
<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>
<p><strong>Improved Testing with Robot in order to cover:</strong></p>
</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>New Register flows.</li>
<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>
<h4 id="capif-spec-release-18">CAPIF spec release 18</h4>
<ul>
<li>Initial review of release 18 from 3GPP. Check <a href="[https://](https://labs.etsi.org/rep/ocf/community/-/wikis/?¿?¿?¿?¿?)" title="Upgrade Release 17 to 18 Wiki">Upgrade Release 17 to 18 Wiki</a></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>
<p><strong>Improved security on DB:</strong></p>
<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>
<p><strong>Scripts upgraded:</strong></p>
<h4 id="scripts-upgraded">Scripts upgraded</h4>
<ul>
<li>docker compose version 2 used on them.</li>
<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>
<p><strong>Cleanup of capif repository:</strong></p>
<h4 id="codebase-improvements">Codebase Improvements</h4>
<ul>
<li>Documentation is now on splitted repository [OCF Documentation Repository]</li>
<li>Test plan was moved to [OCF Documentation Repository]</li>
<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>
<li>Obsolote data is removed.</li>
<li>Repository Reorganization: Enhanced structure and maintainability with a better directory layout and clearer module separation.</li>
<li>Code Quality Enhancements: Refactored code and fixed known issues</li>
</ul>
<h4 id="migration-to-gunicorn">Migration to GUNICORN</h4>
<ul>
<li>Include production server on each microservice: Release 0 use Flask developer server, now we use GUNICORN.</li>
</ul>
<h1 id="release-00">Release 0.0</h1>
<hr />
<h2 id="release-00"><strong>Release 0.0</strong></h2>
<p>The APIs included in Release 0.0 are:</p>
<ul>
<li>JWT Authentication APIs</li>
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+19 −19
Original line number Diff line number Diff line
@@ -2,97 +2,97 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
         <loc>https://ocf.etsi.org/develop/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/FAQ/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/architecture/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/releasenotes/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/gettingstarted/howtorun/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/gettingstarted/repository/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/postman/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/robotframework/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_access_control_policy/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_auditing_service/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_discover_service/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_events_service/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_invoker_management/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_logging_service/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_provider_management/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_publish_service/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/api_security_service/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
    <url>
         <loc>https://ocf.etsi.org/develop/testing/testplan/common_operations/</loc>
         <lastmod>2024-06-19</lastmod>
         <lastmod>2024-06-20</lastmod>
         <changefreq>daily</changefreq>
    </url>
</urlset>
 No newline at end of file
+2 B (400 B)

File changed.

No diff preview for this file type.