<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Documentation – Getting Started</title><link>/users/getting-started/</link><description>Recent content in Getting Started on Documentation</description><generator>Hugo -- gohugo.io</generator><atom:link href="/users/getting-started/index.xml" rel="self" type="application/rss+xml"/><item><title>Users: EGI Architecture</title><link>/users/getting-started/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/getting-started/architecture/</guid><description>
&lt;p>The EGI Federated Cloud (FedCloud) is a multi-national cloud system that
integrates community, private and/or public clouds into a scalable computing
platform for research. The Federation pools resources from a heterogeneous set
of cloud providers using a single authentication and authorisation framework
that allows the portability of workloads across multiple providers, and enables
bringing computing to data. The current implementation is focused on
Infrastructure-as-a-Service (IaaS) services, but can be easily applied to
Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS) layers.&lt;/p>
&lt;p>Each resource centre of the federated infrastructure operates a &lt;em>Cloud
Management Framework (CMF)&lt;/em> according to its own preferences and constraints and
joins the federation by integrating this CMF with components of the EGI service
portfolio. CMFs must at least be integrated with EGI Authentication and
Authorization Infrastructure (AAI) so users can access services with a single
identity, integration with other components and APIs to be provided are agreed
by the community the resource centre provides services to.&lt;/p>
&lt;p>EGI follows a Service Integration and Management (SIAM) approach to manage the
federation with processes that cover the different aspects of the IT Service
Management. Providers in the federation keep complete control of their services
and resources. EGI creates Virtual Organizations (VOs) for each research
community, and EGI VO Operation Level Agreements (OLAs) establish a reliable,
trust-based communication channel between the community and the providers, by
agreeing on the services, their levels and the types of support.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
EGI VO OLAs are not legal contracts but,
as agreements, they outline the clear intentions to collaborate and support
research.
&lt;/div>
&lt;h2 id="federated-iaas">Federated IaaS&lt;/h2>
&lt;p>The EGI FedCloud IaaS resource centres deploy a Cloud Management Framework (CMF)
that provide users with an API-based service for management of Virtual Machines
and associated Block Storage to enable persistence and Networks to enable
connectivity of the Virtual Machines (VMs) among themselves and third party
resources.&lt;/p>
&lt;p>The IaaS federation is a thin layer that brings the providers together with:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#authentication-and-authorization">Federated authentication&lt;/a>&lt;/li>
&lt;li>&lt;a href="#information-discovery">Resource discovery&lt;/a>&lt;/li>
&lt;li>&lt;a href="#virtual-machine-image-management">Central VM image catalogue&lt;/a>&lt;/li>
&lt;li>&lt;a href="#accounting">Usage accounting&lt;/a>&lt;/li>
&lt;li>&lt;a href="#monitoring">Monitoring&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The IaaS capabilities (VM, block storage, network management, etc.) must be
provided via community agreed APIs
(&lt;a href="https://docs.openstack.org/wallaby/api/">OpenStack&lt;/a> is supported at the
moment) that allow integration with &lt;a href="../../aai/check-in">EGI Check-in&lt;/a> for
authentication and authorisation of users.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
Those providers that limit the
interaction to web dashboards and do not expose APIs to direct consumption for
users cannot be considered part of the EGI IaaS Cloud services.
&lt;/div>
&lt;p>Users and Community platforms built on top of the EGI IaaS can interact with the
cloud providers at three different layers:&lt;/p>
&lt;ul>
&lt;li>Directly using the IaaS APIs or &lt;a href="../cli">CLIs&lt;/a> to manage individual resources.
This option is recommended for pre-existing use cases with requirements on
specific APIs.&lt;/li>
&lt;li>Using &lt;strong>Provisioning systems&lt;/strong> allow users to define infrastructure as code,
then manage and combine resources from different providers, thus enabling
the portability of application deployments between them (e.g.
&lt;a href="../../compute/orchestration/im">Infrastructure Manager&lt;/a> or
&lt;a href="https://www.terraform.io/">Terraform&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p>EGI provides ready-to-use software components to enable the federation for
OpenStack. These components rely on public APIs of the IaaS system and use
&lt;a href="../../aai/check-in">Check-in&lt;/a> accounts for authenticating into the provider.&lt;/p>
&lt;h2 id="implementation">Implementation&lt;/h2>
&lt;h3 id="authentication-and-authorization">Authentication and authorization&lt;/h3>
&lt;p>Federated identity ensures that users of the federation can use a single account
for accessing the resources.&lt;/p>
&lt;h4 id="openid-connect">OpenID Connect&lt;/h4>
&lt;p>Providers of the EGI Cloud support authentication with OAuth2 tokens provided by
Check-in OpenID Connect Identity provider. Support builds on the
&lt;a href="../../../providers/check-in/sp">AAI guide for SPs&lt;/a> with detailed configuration
provided at the
&lt;a href="../../../providers/cloud-compute/openstack/#openid-connect-support">EGI IaaS Service providers documentation&lt;/a>.&lt;/p>
&lt;p>The integration relies on the OpenStack Keystone
&lt;a href="https://developer.openstack.org/api-ref/identity/v3-ext/index.html#os-federation-api">OS-FEDERATION API&lt;/a>.&lt;/p>
&lt;h3 id="information-discovery">Information discovery&lt;/h3>
&lt;p>The &lt;a href="#configuration-database">Configuration Database&lt;/a> contains the list of
resource centres and their endpoints, while the
&lt;a href="https://is.cloud.egi.eu/docs">cloud information system collects&lt;/a> this
information in a central service for discovery, providing a real-time view
of the actual capabilities of federation participants (can be used by both
human users and machine services).&lt;/p>
&lt;h4 id="configuration-database">Configuration Database&lt;/h4>
&lt;p>The EGI &lt;a href="../../../internal/configuration-database">Configuration Database&lt;/a> is
used to catalogue the static information of the production infrastructure
topology (e.g. the list of resource centres and their endpoints).&lt;/p>
&lt;p>To allow resource providers to expose IaaS federation endpoints, the following
service types are available:&lt;/p>
&lt;ul>
&lt;li>&lt;code>org.openstack.horizon&lt;/code>&lt;/li>
&lt;li>&lt;code>org.openstack.nova&lt;/code>&lt;/li>
&lt;li>&lt;code>org.openstack.swift&lt;/code>&lt;/li>
&lt;li>&lt;code>eu.egi.cloud.accounting&lt;/code>&lt;/li>
&lt;li>&lt;code>eu.egi.cloud.vm-metadata.marketplace&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>All providers &lt;strong>must&lt;/strong> enter cloud service endpoints into the Configuration
Database to enable integration with EGI.&lt;/p>
&lt;p>The &lt;a href="https://github.com/EGI-Federation/cloud-info-provider">Cloud Info Provider&lt;/a>
extracts information from the resource centres using their native APIs and
formats it following Glue, an OGC recommended standard. This information is
consumed to provide a central information discovery
service that aggregates several other sources of information about the
infrastructure.&lt;/p>
&lt;h3 id="virtual-machine-image-management">Virtual Machine Image management&lt;/h3>
&lt;p>In a distributed, federated IaaS service, users need solutions for efficiently
managing and distributing their VM images across multiple resource providers.
EGI provides a catalogue of VM images (VMIs) that allows any user to share their
VMI, and communities to select those VMIs relevant for distribution across
providers. These images are automatically replicated at the providers supporting
the community and converted as needed to ensure the correct instantiation when
used.&lt;/p>
&lt;p>The &lt;a href="https://registry.egi.eu">Artefact Registry&lt;/a> stores VM images, which are
clean and lean images designed to run on a virtualisation platform, that provide
a software solution out-of-the-box, ready to be used with minimal or no set-up.&lt;/p>
&lt;p>The Registry allows research communities (VOs) to upload their own images, that
that resource centres subscribe to. The subscription enables the
periodic download, conversion and storage of those images to the image
repository of the indicated resource centres.&lt;/p>
&lt;h3 id="accounting">Accounting&lt;/h3>
&lt;p>&lt;a href="../../../internal/accounting">Federated Accounting&lt;/a> provides an integrated view
about resource/service usage: it pulls together usage information from the
federated sites and services, integrates the data and presents them in such a
way that both individual users as well as whole communities can monitor their
own resource/service usage across the whole federation.&lt;/p>
&lt;p>Usage of resources is gathered centrally using EGI Accounting repository and
available for visualisation at
&lt;a href="https://accounting.egi.eu">EGI Accounting portal&lt;/a>.&lt;/p>
&lt;h4 id="cloud-usage-record">Cloud Usage Record&lt;/h4>
&lt;p>The federated cloud task force has agreed on a Cloud Usage Record, which
inherits from the &lt;a href="https://ogf.org/documents/GFD.204.pdf">OGF Usage Record (GFD.204)&lt;/a>.
This record defines the data that resource providers must send to EGI&amp;rsquo;s central
Accounting repository.&lt;/p>
&lt;p>Version 0.4 of the Cloud Accounting Usage Record was agreed at the FedCloud Face
to Face in Amsterdam in January 2015. A summary table of the format is shown
below:&lt;/p>
&lt;!-- markdownlint-disable line-length -->
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Cloud Usage Record Property&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Null&lt;/th>
&lt;th>Definition&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>VMUUID&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Virtual Machine's Universally Unique Identifier concatenation of CurrentTime, SiteName and MachineName&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SiteName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>GOCDB SiteName - GOCDB now has cloud service types and a cloud-only site is allowed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CloudComputeService (NEW)&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Name identifying cloud resource within the site. Allows multiple cloud resources within a site, i.e. a level of granularity.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MachineName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>VM ID - the site name for the VM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LocalUserId&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Local username&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LocalGroupId&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Local group name&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GlobalUserName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Global identity of user (certificate DN)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FQAN&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Use if VOs part of authorization mechanism&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Status&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Completion status - completed, started or suspended&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>StartTime&lt;/td>
&lt;td>&lt;code>datetime&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Must be set when Status = started&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>EndTime&lt;/td>
&lt;td>&lt;code>datetime&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Set to NULL until Status = completed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SuspendDuration&lt;/td>
&lt;td>&lt;code>datetime&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Set when Status = suspended (Timestamp)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WallDuration&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>WallClock time - actual time used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CpuDuration&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>CPU time consumed (Duration)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CpuCount&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Number of CPUs allocated&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NetworkType&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Needs clarifying&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NetworkInbound&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>GB received&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NetworkOutbound&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>GB sent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PublicIPCount (NEW)&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Number of public IP addresses assigned to VM &lt;strong>Not used&lt;/strong>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Memory allocated to the VM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Disk&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Size in GB allocated to the VM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BenchmarkType (NEW)&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Name of benchmark used for normalization of times (eg HEPSPEC06)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Benchmark (NEW)&lt;/td>
&lt;td>&lt;code>Decimal&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Value of benchmark of VM using ServiceLevelType benchmark’&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>StorageRecordId&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Link to other associated storage record &lt;em>Need to check feasibility&lt;/em>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ImageId&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;td>Every image has a unique ID associated with it. For images from the Artecfact Registry this should be &lt;code>VMCATCHER_EVENT_AD_MPURI&lt;/code>; for images from other repositories it should be an equivalent; for local images - local identifier of the image.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CloudType&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code> &lt;/td>
&lt;td>&lt;/td>
&lt;td>Type of cloud infrastructure: OpenNebula; OpenStack; Synnefo; etc.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- markdownlint-enable line-length -->
&lt;h4 id="public-ip-usage-record">Public IP Usage Record&lt;/h4>
&lt;p>The fedcloud task force has agreed on an IP Usage Record. The format uses many
of the same fields as the Cloud Usage Record. The Usage Record should be a
&amp;quot;snapshot&amp;quot; of the number of IPs currently assigned to a user. A table defining
v0.2 of the format is shown below:&lt;/p>
&lt;!-- markdownlint-disable line-length -->
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Cloud Usage Record Property&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Null&lt;/th>
&lt;th>Definition&lt;/th>
&lt;th>Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MeasurementTime&lt;/td>
&lt;td>&lt;code>datetime&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>The time the usage was recorded.&lt;/td>
&lt;td>In the message format, must be a UNIX timestamp, i.e. the number of seconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SiteName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>The GOCDB site assigning the IP&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CloudComputeService&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>See Cloud Usage Record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CloudType&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See Cloud Usage Record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LocalUser&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See Cloud Usage Record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LocalGroup&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See Cloud Usage Record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GlobalUserName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See Cloud Usage Record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FQAN&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See Cloud Usage Record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>IPVersion&lt;/td>
&lt;td>&lt;code>byte&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>4 or 6&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>IPCount&lt;/td>
&lt;td>&lt;code>int(11)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>The number of IP addresses of IPVersion this user currently assigned to them&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- markdownlint-enable line-length -->
&lt;p>A JSON schema defining a valid Public IP Usage message can be found at:
&lt;a href="https://github.com/apel/apel/blob/9476bd86424f6162c3b87b6daf6b4270ceb8fea6/apel/db/__init__.py">https://github.com/apel/apel/blob/9476bd86424f6162c3b87b6daf6b4270ceb8fea6/apel/db/__init__.py&lt;/a>&lt;/p>
&lt;h4 id="gpu-usage-record">GPU Usage Record&lt;/h4>
&lt;p>The fedcloud task force has agreed on an GPU Usage Record. The format uses many
of the same fields as the Cloud Usage Record. A table defining &lt;em>Draft 4 –
24/02/2021&lt;/em> is shown below:&lt;/p>
&lt;!-- markdownlint-disable line-length -->
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>GPU Usage Record Property&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Null&lt;/th>
&lt;th>Definition&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MeasurementMonth&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>The month/year the reported usage should be assigned to. If the month/year is the current month/year, the usage should be up to the point of reporting.&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MeasurementYear&lt;/td>
&lt;td>&lt;code>int&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>AssociatedRecordType&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>The context in which the reported usage was used. I.e. “cloud” for an accelerator attached to a VM.&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>AssociatedRecord&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>VMUUID if AssociatedRecordType is “cloud”&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GlobalUserName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>See the definition of your AssociatedRecordType&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FQAN&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See the definition of your AssociatedRecordType&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SiteName&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>See the definition of your AssociatedRecordType&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Count&lt;/td>
&lt;td>&lt;code>decimal&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>A count of the Accelerators attached to the VM. At the moment Accelerators are not shared among VMs but it will change when Accelerator virtualization is applied, so we should have the field at decimal type instead of integer (e.g. Count = 0.5 when it is shared between two VMs).&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cores&lt;/td>
&lt;td>&lt;code>int(11)&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Total number of cores. i.e. So if an Accelerator has 64 cores and a VM has 2 like that attached then we would report: Count=2 and Processors=128&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ActiveDuration&lt;/td>
&lt;td>&lt;code>int(11)&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Actual usage duration of the Accelerator in seconds for the given month/year (in case some systems could report actual usage). At the moment, ActiveDuration will be the same as the AvailableDuration due to the limitation of currently used technologies (impossible to get ACCELERATOR utilization from outside of the VM, no ACCELERATOR hot-plug into running VM) but it may change in near future so it is good to have the fields separately. Set to AvailableDuration if ActiveDuration is omitted from the record&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>AvailableDuration&lt;/td>
&lt;td>&lt;code>int(11)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Time accelerator was available in seconds for the given month/year (Wall)Time that a GPU was attached to a VM.&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BenchmarkType&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Name of benchmark used for normalization of times&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Benchmark&lt;/td>
&lt;td>&lt;code>decimal&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>Value of benchmark of Accelerator&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Type&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>No&lt;/td>
&lt;td>High level description of accelerator, i.e. GPU, FPGA, Other&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Model&lt;/td>
&lt;td>&lt;code>varchar(255)&lt;/code>&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>model number, spec, some other concept that 2 ACCELERATORs with the same number of cores might be different etc&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- markdownlint-enable line-length -->
&lt;h4 id="apel-and-accounting-portal">APEL and accounting portal&lt;/h4>
&lt;p>Once generated, records are delivered to the central accounting repository using
APEL SSM (Secure STOMP Messenger). SSM client packages can be obtained at
&lt;a href="https://apel.github.io">https://apel.github.io&lt;/a>. A Cloud Accounting Summary Usage Record has also been
defined and summaries created on a daily basis from all the accounting records
received from the Resource Providers are sent to the EGI Accounting Portal. The
&lt;a href="https://accounting.egi.eu/">Accounting portal&lt;/a> also runs SSM to receive these
summaries and provides a web view of the accounting data received from the
Resource Providers.&lt;/p>
&lt;p>&lt;a href="https://github.com/IFCA/caso">cASO&lt;/a> delivers an implementation of the extractor
probes for OpenStack.&lt;/p>
&lt;h3 id="monitoring">Monitoring&lt;/h3>
&lt;p>The endpoints published in the
&lt;a href="../../../internal/configuration-database">Configuration Database&lt;/a> are monitored
via &lt;a href="https://argo.egi.eu/">ARGO&lt;/a>. Specific probes to check functionality and
availability of services must be provided by service developers.&lt;/p>
&lt;p>The current set of probes used for monitoring IaaS resources consists of:&lt;/p>
&lt;ul>
&lt;li>Accounting probe (&lt;code>eu.egi.cloud.APEL-Pub&lt;/code>): Checks if the cloud resource is
publishing data to the Accounting repository&lt;/li>
&lt;li>TCP checks (&lt;code>org.nagios.Broker-TCP&lt;/code>, &lt;code>org.nagios.CDMI-TCP&lt;/code>, and
&lt;code>org.nagios.CloudBDII-Check&lt;/code>): Basic TCP checks for services.&lt;/li>
&lt;/ul>
&lt;h2 id="roadmap">Roadmap&lt;/h2>
&lt;p>The TCB-Cloud board defines the roadmap for the technical evolution of the EGI
Cloud. All the components are continuously maintained to:&lt;/p>
&lt;ul>
&lt;li>Improve their programmability, providing complete APIs specification in
adequate format for facilitating the generation clients (e.g. following the
OpenAPI initiative and Swagger).&lt;/li>
&lt;li>Lower the barriers to integrate and operate resource centres in the federation
by a) minimizing the number of components used; b) contributing code to
upstream distributions; and c) use only public APIs of the Cloud Management
Frameworks.&lt;/li>
&lt;/ul>
&lt;p>Currently, the EGI FedCloud TaskForce is focused on moving to a central
operations model, where providers only need to integrate their system with EGI
Check-in but do not need to deploy and configure the different tools
(accounting, discovery, VMI management, etc.) locally but delegate this to a
central EGI team.&lt;/p></description></item><item><title>Users: Using OpenStack Providers</title><link>/users/getting-started/openstack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/getting-started/openstack/</guid><description>
&lt;p>&lt;a href="https://openstack.org">OpenStack&lt;/a> providers in the EGI infrastructure
offer services and features via OpenStack APIs, and the
&lt;a href="../cli">command-line interface&lt;/a> (CLI), both integrated with
&lt;a href="../../aai/check-in">EGI Check-in&lt;/a> accounts.&lt;/p>
&lt;p>The extensive &lt;a href="https://docs.openstack.org/user/">OpenStack user documentation&lt;/a>
includes details on every OpenStack project, but most providers offer:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.openstack.org/keystone/latest/">Keystone&lt;/a>, for identity&lt;/li>
&lt;li>&lt;a href="https://docs.openstack.org/nova/latest/">Nova&lt;/a>, for VM management&lt;/li>
&lt;li>&lt;a href="https://docs.openstack.org/glance/latest/">Glance&lt;/a>, for VM image
management&lt;/li>
&lt;li>&lt;a href="https://docs.openstack.org/cinder/latest/">Cinder&lt;/a>, for block storage&lt;/li>
&lt;li>&lt;a href="https://docs.openstack.org/swift/latest/">Swift&lt;/a>, for object storage&lt;/li>
&lt;li>&lt;a href="https://docs.openstack.org/neutron/latest/">Neutron&lt;/a>, for network
management&lt;/li>
&lt;li>&lt;a href="https://docs.openstack.org/horizon/latest/">Horizon&lt;/a>, as a web
dashboard&lt;/li>
&lt;/ul>
&lt;p>The Horizon web-dashboard of the OpenStack providers can be
used to manage and use services. It can be accessed using EGI Check-in
credentials directly. Select &lt;em>EGI Check-In&lt;/em>:&lt;/p>
&lt;p>&lt;img src="dashboard-login-check-in-1.png" alt="EGI Check-In">&lt;/p>
&lt;p>Or &lt;em>OpenID Connect&lt;/em>:&lt;/p>
&lt;p>&lt;img src="dashboard-login-check-in-2.png" alt="OpenID Connect">&lt;/p>
&lt;p>Or &lt;em>egi.eu&lt;/em>:&lt;/p>
&lt;p>&lt;img src="dashboard-login-check-in-3.png" alt="egi.eu">&lt;/p>
&lt;p>In the &lt;strong>Authenticate using&lt;/strong> drop-down menu of the login screen.&lt;/p>
&lt;p>Additionally you may need to select &lt;em>aai.egi.eu/auth/realms/egi&lt;/em> as well:&lt;/p>
&lt;p>&lt;img src="dashboard-login-check-partb.png" alt="aai.egi.eu/oidc">&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
&lt;p>You can quickly find the dashboards of
all providers in the EGI infrastructure that are accessible to you (use the
correct VO) with the &lt;a href="../cli">FedCloud Client&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ fedcloud endpoint list --service-type org.openstack.horizon --site ALL_SITES
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The same way you can also discover other types of resources, just use the
correct resource type:&lt;/p>
&lt;ul>
&lt;li>&lt;code>org.openstack.horizon&lt;/code> for dashboards&lt;/li>
&lt;li>&lt;code>org.openstack.nova&lt;/code> for virtual machines&lt;/li>
&lt;li>&lt;code>org.openstack.swift&lt;/code> for object storage&lt;/li>
&lt;/ul>
&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
For more advanced information discovery,
including resources not based on OpenStack deployments, check out the
&lt;a href="../architecture/#information-discovery">EGI architecture summary&lt;/a>.
&lt;/div></description></item><item><title>Users: Command Line Interface</title><link>/users/getting-started/cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/getting-started/cli/</guid><description>
&lt;!--
// jscpd:ignore-start
-->
&lt;h2 id="command-line-tools">Command-line tools&lt;/h2>
&lt;p>The various &lt;a href="https://www.egi.eu/services/">public EGI services&lt;/a> can be managed
and used/accessed with a wide variety of command-line interface (CLI) tools. The
documentation of each service contains a summary of the CLIs that can be used
with that service, together with recommendations on which one to use in what
context.&lt;/p>
&lt;h2 id="the-fedcloud-client">The FedCloud client&lt;/h2>
&lt;p>The &lt;a href="https://fedcloudclient.fedcloud.eu/index.html">FedCloud client&lt;/a> is a
high-level Python package for a command-line client designed for interaction
with the &lt;a href="../openstack">OpenStack services&lt;/a> in the EGI infrastructure.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
The FedCloud client is the recommended
command-line interface to use with most EGI services.
&lt;/div>
&lt;p>FedCloud client has the following modules (features):&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://fedcloudclient.fedcloud.eu/fedcloudclient.html#module-fedcloudclient.checkin">&lt;strong>Check-in&lt;/strong>&lt;/a>
allows checking validity of access tokens and listing
&lt;a href="../../aai/check-in/vos">Virtual Organisations&lt;/a> (VOs) of a token&lt;/li>
&lt;li>&lt;a href="https://fedcloudclient.fedcloud.eu/fedcloudclient.html#module-fedcloudclient.endpoint">&lt;strong>Endpoint&lt;/strong>&lt;/a>
can search endpoints in the
&lt;a href="../../../internal/configuration-database">Configuration Database&lt;/a> and extract
site-specific information from unscoped/scoped tokens&lt;/li>
&lt;li>&lt;a href="https://fedcloudclient.fedcloud.eu/fedcloudclient.html#module-fedcloudclient.sites">&lt;strong>Sites&lt;/strong>&lt;/a>
allows management of site configurations&lt;/li>
&lt;li>&lt;a href="https://fedcloudclient.fedcloud.eu/fedcloudclient.html#module-fedcloudclient.openstack">&lt;strong>OpenStack&lt;/strong>&lt;/a>
can perform commands on &lt;a href="../openstack">OpenStack services&lt;/a> deployed to sites&lt;/li>
&lt;li>&lt;strong>EC3&lt;/strong> allows deploying
&lt;a href="../../compute/orchestration/im/ec3">elastic cloud compute clusters&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="installation">Installation&lt;/h3>
&lt;p>The FedCloud client can be installed with the &lt;code>pip3&lt;/code> Python package manager
(without root or administrator privileges).&lt;/p>
&lt;ul class="nav nav-tabs" id="tabs-1" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-1-0-tab" data-toggle="tab" href="#tabs-1-0" role="tab"
aria-controls="tabs-1-0" aria-selected="true">
Linux / Mac
&lt;/a>
&lt;/li>
&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-1-1-tab" data-toggle="tab" href="#tabs-1-1" role="tab"
aria-controls="tabs-1-1" aria-selected="false">
Windows
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tabx-content" id="tabs-1-content">
&lt;div class="tab-pane show active"
id="tabs-1-0" role="tabpanel" aria-labelled-by="tabs-1-0-tab">
&lt;p>To install the FedCloud client:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ pip3 install fedcloudclient
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This installs the latest version of the FedCloud client, together with its
required packages (like &lt;em>openstackclient&lt;/em>). It will also create executables
&lt;strong>fedcloud&lt;/strong> and &lt;strong>openstack&lt;/strong>, adding them to the &lt;code>bin&lt;/code> folder corresponding to
your current Python execution environment (&lt;code>$VIRTUAL_ENV/bin&lt;/code> for executing pip3
in a Python virtual environment, &lt;code>~/.local/bin&lt;/code> for executing pip3 as user (with
&lt;code>--user&lt;/code> option), and &lt;code>/usr/local/bin&lt;/code> when executing pip3 as root).&lt;/p>
&lt;/div>
&lt;div class="tab-pane "
id="tabs-1-1" role="tabpanel" aria-labelled-by="tabs-1-1-tab">
&lt;p>As there are non-pure Python packages needed for installation, the
&lt;a href="https://visualstudio.microsoft.com/visual-cpp-build-tools/">Microsoft C++ Build Tools&lt;/a>
is a prerequisite, make sure it&amp;rsquo;s installed with the following options selected:&lt;/p>
&lt;ul>
&lt;li>C++ CMake tools for Windows&lt;/li>
&lt;li>C++ ATL for latest v142 build tools (x86 &amp;amp; x64)&lt;/li>
&lt;li>Testing tools core features - Build Tools&lt;/li>
&lt;li>Windows 10 SDK (&lt;code>&amp;lt;latest&lt;/code>&amp;gt;)&lt;/li>
&lt;/ul>
&lt;p>In case you prefer to use non-Microsoft alternatives for building non-pure
packages, please see
&lt;a href="https://wiki.python.org/moin/WindowsCompilers">Python Windows Compilers&lt;/a>.&lt;/p>
&lt;p>To install the FedCloud client:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&amp;gt; pip3 install fedcloudclient
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This installs the latest version of the FedCloud client, together with its
required packages (like &lt;em>openstackclient&lt;/em>). It will also create executables
&lt;strong>fedcloud&lt;/strong> and &lt;strong>openstack&lt;/strong>, adding them to the &lt;code>bin&lt;/code> folder corresponding to
your current Python execution environment.&lt;/p>
&lt;/div>
&lt;/div>
&lt;p>Check if the installation is correct by executing the client:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ fedcloud --version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="installing-egi-core-trust-anchor-certificates">Installing EGI Core Trust Anchor certificates&lt;/h4>
&lt;p>Some sites in the EGI infrastructure use certificates issued by Certificate
Authorities (CAs) that are not included in the default OS distribution. If you
receive error message &amp;ldquo;&lt;em>SSL exception connecting to&amp;hellip;&lt;/em>&amp;rdquo;, install the EGI Core
Trust Anchor Certificates by running the following commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ wget https://raw.githubusercontent.com/tdviet/python-requests-bundle-certs/main/scripts/install_certs.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ bash install_certs.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
The above script does not work on all
Linux distributions. Change &lt;em>python&lt;/em> to &lt;em>python3&lt;/em> in the script if needed, see
the &lt;a href="https://github.com/tdviet/python-requests-bundle-certs#usage">README&lt;/a> for
more details, or follow the
&lt;a href="https://github.com/tdviet/python-requests-bundle-certs/blob/main/docs/Install_certificates.md">official instructions&lt;/a>
for installing EGI Core Trust Anchor certificates in production environments.
&lt;/div>
&lt;h3 id="using-via-docker-container">Using via Docker container&lt;/h3>
&lt;p>The FedCloud client can also be used without installation, by running it in a
Docker container. In this case, the EGI Core Trust Anchor certificates are
pre-installed.&lt;/p>
&lt;ul class="nav nav-tabs" id="tabs-3" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-3-0-tab" data-toggle="tab" href="#tabs-3-0" role="tab"
aria-controls="tabs-3-0" aria-selected="true">
Linux
&lt;/a>
&lt;/li>
&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-3-1-tab" data-toggle="tab" href="#tabs-3-1" role="tab"
aria-controls="tabs-3-1" aria-selected="false">
Mac
&lt;/a>
&lt;/li>
&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-3-2-tab" data-toggle="tab" href="#tabs-3-2" role="tab"
aria-controls="tabs-3-2" aria-selected="false">
Windows
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tabx-content" id="tabs-3-content">
&lt;div class="tab-pane show active"
id="tabs-3-0" role="tabpanel" aria-labelled-by="tabs-3-0-tab">
&lt;p>To run the FedCloud client in a container, make sure
&lt;a href="https://docs.docker.com/engine/install/#server">Docker is installed&lt;/a>, then run
the following commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ docker pull tdviet/fedcloudclient
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ docker run -it tdviet/fedcloudclient bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane "
id="tabs-3-1" role="tabpanel" aria-labelled-by="tabs-3-1-tab">
&lt;p>To run the FedCloud client in a container, make sure
&lt;a href="https://docs.docker.com/desktop/mac/install/">Docker is installed&lt;/a>, then run
the following commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ docker pull tdviet/fedcloudclient
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ docker run -it tdviet/fedcloudclient bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane "
id="tabs-3-2" role="tabpanel" aria-labelled-by="tabs-3-2-tab">
&lt;p>To run the FedCloud client in a container, make sure
&lt;a href="https://docs.docker.com/desktop/windows/install/">Docker is installed&lt;/a>, then
run the following commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&amp;gt; docker pull tdviet/fedcloudclient
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; docker run -it tdviet/fedcloudclient bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Once you have a shell running in the container with the FedCloud client, usage
is the same as from &lt;a href="#using-from-the-command-line">the command-line&lt;/a>.&lt;/p>
&lt;h3 id="using-from-egi-notebooks">Using from EGI Notebooks&lt;/h3>
&lt;p>&lt;a href="../../dev-env/notebooks">EGI Notebooks&lt;/a> are integrated with access tokens so it
simplifies using the FedCloud client. First make sure that you follow the
&lt;a href="#installation">installation&lt;/a> steps above. Then, below are the commands that you
need to run inside a terminal in JupyterLab:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">OIDC_ACCESS_TOKEN&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>cat /var/run/secrets/egi.eu/access_token&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fedcloud token check
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Please follow instructions &lt;a href="#using-from-the-command-line">below&lt;/a> to learn how to
use the &lt;code>fedcloud&lt;/code> command.&lt;/p>
&lt;h3 id="using-from-the-command-line">Using from the command-line&lt;/h3>
&lt;p>The FedCloud client has these subcommands:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>fedcloud token&lt;/strong> for checking access tokens (see token
&lt;a href="https://fedcloudclient.fedcloud.eu/usage.html#fedcloud-token-commands">subcommands&lt;/a>)&lt;/li>
&lt;li>&lt;strong>fedcloud endpoint&lt;/strong> for querying the Configuration Database (see endpoint
&lt;a href="https://fedcloudclient.fedcloud.eu/usage.html#fedcloud-endpoint-commands">subcommands&lt;/a>)&lt;/li>
&lt;li>&lt;strong>fedcloud site&lt;/strong> for manipulating site configurations (see site
&lt;a href="https://fedcloudclient.fedcloud.eu/usage.html#fedcloud-site-commands">subcommands&lt;/a>)&lt;/li>
&lt;li>&lt;strong>fedcloud openstack&lt;/strong> or &lt;strong>fedcloud openstack-int&lt;/strong> for performing OpenStack
commands on sites (see openstack
&lt;a href="https://fedcloudclient.fedcloud.eu/usage.html#fedcloud-openstack-commands">subcommands&lt;/a>)&lt;/li>
&lt;li>&lt;strong>fedcloud ec3&lt;/strong> for provisioning elastic cloud compute clusters (see cluster
&lt;a href="https://fedcloudclient.fedcloud.eu/usage.html#fedcloud-ec3-commands">subcommands&lt;/a>)&lt;/li>
&lt;/ul>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
See also the
&lt;a href="https://fedcloudclient.fedcloud.eu/index.html">complete documentation&lt;/a> or read
and contribute to the &lt;a href="https://github.com/tdviet/fedcloudclient">source code&lt;/a>.
&lt;/div>
&lt;p>Performing any OpenStack command on any site requires only three options: the
site, the VO and the command. For example, to list virtual machine (VM) images
available to members of VO &lt;em>fedcloud.egi.eu&lt;/em> on the site &lt;em>CYFRONET-CLOUD&lt;/em>, run
the following command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ fedcloud openstack image list --vo fedcloud.egi.eu --site CYFRONET-CLOUD
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="authentication">Authentication&lt;/h4>
&lt;p>Many of the FedCloud client commands need access tokens for authentication.
Users can choose whether to provide access tokens directly (via option
&lt;code>--oidc-access-token&lt;/code>), or generate them on the fly with &lt;strong>oidc-agent&lt;/strong> (via
option &lt;code>--oidc-agent-account&lt;/code>) or from refresh tokens (via option
&lt;code>--oidc-refresh-token&lt;/code>, which must be provided together with option
&lt;code>--oidc-client-id&lt;/code> and option &lt;code>--oidc-client-secret&lt;/code>).&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
Users of EGI Check-in can get a Check-in
client ID and refresh token, as well as all the information needed to obtain
access tokens for their FedCloud client, by visiting
&lt;a href="https://aai.egi.eu/token/">EGI Check-in Token Portal&lt;/a>.
&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
To provide access tokens automatically
via &lt;strong>oidc-agent&lt;/strong>, follow
&lt;a href="https://indigo-dc.gitbook.io/oidc-agent/user/oidc-gen/provider/egi/">these instructions&lt;/a>
to register a client, then pass the client name (account name used during client
registration) to the FedCloud client via option &lt;code>--oidc-agent-account&lt;/code>.
&lt;/div>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Important&lt;/h4>
Refresh tokens have long
lifetime (one year in EGI Check-in), so they must be properly protected.
Exposing refresh tokens via environment variables or command-line options is
considered insecure and will be disabled in the near future in favour of using
&lt;strong>oidc-agent&lt;/strong>.
&lt;/div>
&lt;p>If multiple methods of getting access tokens are given at the same time, the
FedCloud client will try to get an access token from the &lt;strong>oidc-agent&lt;/strong> first,
then obtain one using the refresh token.&lt;/p>
&lt;p>The default authentication protocol is &lt;code>openid&lt;/code>. Users can change the default
protocol via the option &lt;code>--openstack-auth-protocol&lt;/code>. However, sites may have the
protocol fixed in the site configuration (e.g. &lt;code>oidc&lt;/code> for the site
&lt;em>INFN-CLOUD-BARI&lt;/em>).&lt;/p>
&lt;p>The default OIDC identity provider is EGI Check-in
(&lt;a href="https://aai.egi.eu/auth/realms/egi">https://aai.egi.eu/auth/realms/egi&lt;/a>). Users can set another OIDC identity
provider via option &lt;code>--oidc-url&lt;/code>.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
Remember to also set the identity
provider&amp;rsquo;s name accordingly for OpenStack commands, by using the option
&lt;code>--openstack-auth-provider&lt;/code>.
&lt;/div>
&lt;h4 id="environment-variables">Environment variables&lt;/h4>
&lt;p>Most of the FedCloud client options can be set via environment variables:&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
To save a lot of time, set the frequently
used options like access token, VO, etc. using environment variables.
&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
When you want commands to work on all
sites in the EGI infrastructure, use &lt;code>ALL_SITES&lt;/code> for the &lt;code>--site&lt;/code> parameter.
&lt;/div>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Environment variable&lt;/th>
&lt;th>Command-line option&lt;/th>
&lt;th>Default value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>OIDC_AGENT_ACCOUNT&lt;/td>
&lt;td>&lt;code>--oidc-agent-account&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OIDC_ACCESS_TOKEN&lt;/td>
&lt;td>&lt;code>--oidc-access-token&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OIDC_REFRESH_TOKEN&lt;/td>
&lt;td>&lt;code>--oidc-refresh-token&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OIDC_CLIENT_ID&lt;/td>
&lt;td>&lt;code>--oidc-client-id&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OIDC_CLIENT_SECRET&lt;/td>
&lt;td>&lt;code>--oidc-client-secret&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OIDC_URL&lt;/td>
&lt;td>&lt;code>--oidc-url&lt;/code>&lt;/td>
&lt;td>&lt;a href="https://aai.egi.eu/auth/realms/egi">https://aai.egi.eu/auth/realms/egi&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OPENSTACK_AUTH_PROTOCOL&lt;/td>
&lt;td>&lt;code>--openstack-auth-protocol&lt;/code>&lt;/td>
&lt;td>openid&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OPENSTACK_AUTH_PROVIDER&lt;/td>
&lt;td>&lt;code>--openstack-auth-provider&lt;/code>&lt;/td>
&lt;td>egi.eu&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OPENSTACK_AUTH_TYPE&lt;/td>
&lt;td>&lt;code>--openstack-auth-type&lt;/code>&lt;/td>
&lt;td>v3oidcaccesstoken&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>EGI_VO&lt;/td>
&lt;td>&lt;code>--vo&lt;/code>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h4 id="getting-help">Getting help&lt;/h4>
&lt;p>The FedCloud client can display help for the commands and subcommands it
supports. Try running the following command to see the commands supported by the
FedCloud client:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ fedcloud --help
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Usage: fedcloud &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>OPTIONS&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> COMMAND &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>ARGS&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Options:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --version Show the version and exit.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --help Show this message and exit.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Commands:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ec3 EC3 related commands
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> endpoint endpoint &lt;span style="color:#204a87">command&lt;/span> group &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> interaction with GOCDB and...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> openstack Executing OpenStack commands on site and VO
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> openstack-int Interactive OpenStack client on site and VO
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> site Site &lt;span style="color:#204a87">command&lt;/span> group &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> manipulation with site...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> token Token &lt;span style="color:#204a87">command&lt;/span> group &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> manipulation with tokens
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Similarly, you can see help for e.g. the &lt;code>openstack&lt;/code> subcommand by running the
command below:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ fedcloud openstack --help
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Usage: fedcloud openstack &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>OPTIONS&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> OPENSTACK_COMMAND...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Executing OpenStack commands on site and VO
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Options:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --oidc-client-id TEXT OIDC client id
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --oidc-client-secret TEXT OIDC client secret
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --oidc-refresh-token TEXT OIDC refresh token
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --oidc-access-token TEXT OIDC access token
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --oidc-url TEXT OIDC URL &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>default: &amp;lt;https://aai.egi.eu/auth/realms/egi&amp;gt;&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --oidc-agent-account TEXT short account name in oidc-agent
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --openstack-auth-protocol TEXT Check-in protocol &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>default: openid&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --openstack-auth-type TEXT Check-in authentication &lt;span style="color:#204a87">type&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>default:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> v3oidcaccesstoken&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --openstack-auth-provider TEXT Check-in identity provider &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>default:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> egi.eu&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --vo TEXT Name of the VO &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>required&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> -i, --ignore-missing-vo Ignore sites that &lt;span style="color:#204a87;font-weight:bold">do&lt;/span> not support the VO
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> -j, --json-output Print output as a big JSON object
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --help Show this message and exit.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
Most commands support multiple levels of
subcommands, you can get help for all of them using the same principle as above.
&lt;/div>
&lt;h3 id="using-from-python">Using from Python&lt;/h3>
&lt;p>The FedCloud client can be used as a library for developing other services and
tools for EGI services. Most of the functionalities can be called directly from
Python code without side effects.&lt;/p>
&lt;p>An usage example is available on
&lt;a href="https://github.com/tdviet/fedcloudclient/blob/master/examples/demo.py">GitHub&lt;/a>.
Just copy/download the code, add your access token and execute &lt;code>python demo.py&lt;/code>
to see how it works.&lt;/p>
&lt;h3 id="using-in-scripts">Using in scripts&lt;/h3>
&lt;p>The FedCloud client can also be used in scripts for simple automation, either
for setting environment variables for other tools, or to process outputs from
OpenStack commands.&lt;/p>
&lt;h4 id="setting-environment-variables-for-external-tools">Setting environment variables for external tools&lt;/h4>
&lt;p>Some FedCloud commands generate output that contains shell commands to set
environment variables with the returned result, as exemplified below.&lt;/p>
&lt;ul class="nav nav-tabs" id="tabs-12" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-12-0-tab" data-toggle="tab" href="#tabs-12-0" role="tab"
aria-controls="tabs-12-0" aria-selected="true">
Linux / Mac
&lt;/a>
&lt;/li>
&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-12-1-tab" data-toggle="tab" href="#tabs-12-1" role="tab"
aria-controls="tabs-12-1" aria-selected="false">
Windows
&lt;/a>
&lt;/li>
&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-12-2-tab" data-toggle="tab" href="#tabs-12-2" role="tab"
aria-controls="tabs-12-2" aria-selected="false">
PowerShell
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tabx-content" id="tabs-12-content">
&lt;div class="tab-pane show active"
id="tabs-12-0" role="tabpanel" aria-labelled-by="tabs-12-0-tab">
&lt;p>Run a command to get details of a project:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">EGI_SITE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>IISAS-FedCloud
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">EGI_VO&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>eosc-synergy.eu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ fedcloud site show-project-id --site &lt;span style="color:#000">$EGI_SITE&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">OS_AUTH_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://cloud.ui.savba.sk:5000/v3/&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">OS_PROJECT_ID&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;51f736d36ce34b9ebdf196cfcabd24ee&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run the same command but set environment variables with the returned values:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">eval&lt;/span> &lt;span style="color:#204a87;font-weight:bold">$(&lt;/span>fedcloud site show-project-id&lt;span style="color:#204a87;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The environment variables will have their values set to what the command
returned:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#000">$OS_AUTH_URL&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://cloud.ui.savba.sk:5000/v3/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#000">$OS_PROJECT_ID&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>51f736d36ce34b9ebdf196cfcabd24ee
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane "
id="tabs-12-1" role="tabpanel" aria-labelled-by="tabs-12-1-tab">
&lt;p>Run a command to get details of a project:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&amp;gt; &lt;span style="color:#204a87">set&lt;/span> &lt;span style="color:#000">EGI_SITE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>IISAS-FedCloud
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; &lt;span style="color:#204a87">set&lt;/span> &lt;span style="color:#000">EGI_VO&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>eosc-synergy.eu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; fedcloud site show-project-id --site %EGI_SITE%
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">set&lt;/span> &lt;span style="color:#000">OS_AUTH_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>https://cloud.ui.savba.sk:5000/v3/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">set&lt;/span> &lt;span style="color:#000">OS_PROJECT_ID&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>51f736d36ce34b9ebdf196cfcabd24ee
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you copy the returned output and execute it as commands in a command prompt:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&amp;gt; &lt;span style="color:#204a87">set&lt;/span> &lt;span style="color:#000">OS_AUTH_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>https://cloud.ui.savba.sk:5000/v3/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; &lt;span style="color:#204a87">set&lt;/span> &lt;span style="color:#000">OS_PROJECT_ID&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>51f736d36ce34b9ebdf196cfcabd24ee
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The environment variables will have their values set to what the command
returned:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&amp;gt; &lt;span style="color:#204a87">set&lt;/span> OS_AUTH_URL
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">OS_AUTH_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>https://cloud.ui.savba.sk:5000/v3/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; &lt;span style="color:#204a87">set&lt;/span> OS_PROJECT_ID
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">OS_PROJECT_ID&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>51f736d36ce34b9ebdf196cfcabd24ee
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane "
id="tabs-12-2" role="tabpanel" aria-labelled-by="tabs-12-2-tab">
&lt;p>Run a command to get details of a project:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-powershell" data-lang="powershell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#000">$Env:EGI_SITE&lt;/span>&lt;span style="color:#000;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;IISAS-FedCloud&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#000">$Env:EGI_VO&lt;/span>&lt;span style="color:#000;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;eosc-synergy.eu&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#000">fedcloud&lt;/span> &lt;span style="color:#000">site&lt;/span> &lt;span style="color:#204a87">show-project&lt;/span>&lt;span style="color:#000">-id&lt;/span> &lt;span style="color:#000;font-weight:bold">-&lt;/span>&lt;span style="color:#000">-site&lt;/span> &lt;span style="color:#000">$Env:EGI_SITE&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$Env:OS_AUTH_URL&lt;/span>&lt;span style="color:#000;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://cloud.ui.savba.sk:5000/v3/&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$Env:OS_PROJECT_ID&lt;/span>&lt;span style="color:#000;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;51f736d36ce34b9ebdf196cfcabd24ee&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Run the same command but set environment variables with the returned values:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-powershell" data-lang="powershell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#000">fedcloud&lt;/span> &lt;span style="color:#000">site&lt;/span> &lt;span style="color:#204a87">show-project&lt;/span>&lt;span style="color:#000">-id&lt;/span> &lt;span style="color:#000;font-weight:bold">-&lt;/span>&lt;span style="color:#000">-site&lt;/span> &lt;span style="color:#000">$Env:EGI_SITE&lt;/span> &lt;span style="color:#000;font-weight:bold">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">|&lt;/span> &lt;span style="color:#204a87">Out-String&lt;/span> &lt;span style="color:#000;font-weight:bold">|&lt;/span> &lt;span style="color:#204a87">Invoke-Expression&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The environment variables will have their values set to what the command
returned:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-powershell" data-lang="powershell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#000">$Env:OS_AUTH_URL&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">https&lt;/span>&lt;span style="color:#a40000">:&lt;/span>&lt;span style="color:#000;font-weight:bold">//&lt;/span>&lt;span style="color:#000">cloud&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">ui&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">savba&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">sk&lt;/span>&lt;span style="color:#a40000">:&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">5000&lt;/span>&lt;span style="color:#000;font-weight:bold">/&lt;/span>&lt;span style="color:#000">v3&lt;/span>&lt;span style="color:#000;font-weight:bold">/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#000">$Env:OS_PROJECT_ID&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">51f736d36ce34b9ebdf196cfcabd24ee&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h4 id="processing-output-from-openstack-commands">Processing output from OpenStack commands&lt;/h4>
&lt;p>The &lt;code>fedcloud openstack&lt;/code> subcommand&amp;rsquo;s output can be converted to
&lt;a href="https://en.wikipedia.org/wiki/JSON">JavaScript Object Notation&lt;/a> (JSON) format
by using the &lt;code>--json-output&lt;/code> option. This is useful for further machine
processing of the command output.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
JSON output can be processed with a tool
like &lt;a href="https://stedolan.github.io/jq/">jq&lt;/a>, which can slice, filter, map, and
transform structured data. It acts as a filter: it takes an input and produces
an output. Check out the &lt;a href="https://stedolan.github.io/jq/tutorial/">tutorial&lt;/a> for
using it to extract data from JSON sources.
&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">EGI_SITE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>IISAS-FedCloud
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">EGI_VO&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>eosc-synergy.eu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ fedcloud openstack flavor list --site &lt;span style="color:#000">$EGI_SITE&lt;/span> --json-output
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Site&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;IISAS-FedCloud&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;VO&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;eosc-synergy.eu&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;command&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;flavor list&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Exception&amp;#34;&lt;/span>: null,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Error code&amp;#34;&lt;/span>: 0,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Result&amp;#34;&lt;/span>: &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;ID&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;0&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Name&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;m1.nano&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;RAM&amp;#34;&lt;/span>: 64,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Disk&amp;#34;&lt;/span>: 1,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Ephemeral&amp;#34;&lt;/span>: 0,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;VCPUs&amp;#34;&lt;/span>: 1,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Is Public&amp;#34;&lt;/span>: &lt;span style="color:#204a87">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;ID&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;2e562a51-8861-40d5-8fc9-2638bab4662c&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Name&amp;#34;&lt;/span>: &lt;span style="color:#4e9a06">&amp;#34;m1.xlarge&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;RAM&amp;#34;&lt;/span>: 16384,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Disk&amp;#34;&lt;/span>: 40,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Ephemeral&amp;#34;&lt;/span>: 0,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;VCPUs&amp;#34;&lt;/span>: 8,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;Is Public&amp;#34;&lt;/span>: &lt;span style="color:#204a87">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># The following jq command selects flavors with VCPUs=2 and prints their names&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ fedcloud openstack flavor list --site IISAS-FedCloud --json-output &lt;span style="color:#000;font-weight:bold">|&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> jq -r &lt;span style="color:#4e9a06">&amp;#39;.[].Result[] | select(.VCPUs == 2) | .Name&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>m1.medium
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
Note that &lt;code>--json-output&lt;/code> option can be
used only with those OpenStack commands that have outputs. Using this parameter
with commands with no output (e.g. setting properties) will generate an
unsupported parameter error.
&lt;/div>
&lt;!--
// jscpd:ignore-end
--></description></item><item><title>Users: Community Specific Documentation</title><link>/users/getting-started/communities/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/users/getting-started/communities/</guid><description>
&lt;p>In the following sections you can find documentation for communities that are
using EGI services. These will typically cover an introduction of the
scientific or research community, the procedure to gain access to the resources
of the community, and guidelines about how to participate in the community.&lt;/p></description></item></channel></rss>