• Stars
    star
    2,493
  • Rank 18,426 (Top 0.4 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 14 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OpenStack Storage (Swift). Mirror of code maintained at opendev.org.

OpenStack Swift

OpenStack Swift is a distributed object storage system designed to scale from a single machine to thousands of servers. Swift is optimized for multi-tenancy and high concurrency. Swift is ideal for backups, web and mobile content, and any other unstructured data that can grow without bound.

Swift provides a simple, REST-based API fully documented at https://docs.openstack.org/swift/latest/.

Swift was originally developed as the basis for Rackspace's Cloud Files and was open-sourced in 2010 as part of the OpenStack project. It has since grown to include contributions from many companies and has spawned a thriving ecosystem of 3rd party tools. Swift's contributors are listed in the AUTHORS file.

Docs

To build documentation run:

pip install -r requirements.txt -r doc/requirements.txt
sphinx-build -W -b html doc/source doc/build/html

and then browse to doc/build/html/index.html. These docs are auto-generated after every commit and available online at https://docs.openstack.org/swift/latest/.

For Developers

Getting Started

Swift is part of OpenStack and follows the code contribution, review, and testing processes common to all OpenStack projects.

If you would like to start contributing, check out these notes to help you get started.

The best place to get started is the "SAIO - Swift All In One". This document will walk you through setting up a development cluster of Swift in a VM. The SAIO environment is ideal for running small-scale tests against Swift and trying out new features and bug fixes.

Tests

There are three types of tests included in Swift's source tree.

  1. Unit tests
  2. Functional tests
  3. Probe tests

Unit tests check that small sections of the code behave properly. For example, a unit test may test a single function to ensure that various input gives the expected output. This validates that the code is correct and regressions are not introduced.

Functional tests check that the client API is working as expected. These can be run against any endpoint claiming to support the Swift API (although some tests require multiple accounts with different privilege levels). These are "black box" tests that ensure that client apps written against Swift will continue to work.

Probe tests are "white box" tests that validate the internal workings of a Swift cluster. They are written to work against the "SAIO - Swift All In One" dev environment. For example, a probe test may create an object, delete one replica, and ensure that the background consistency processes find and correct the error.

You can run unit tests with .unittests, functional tests with .functests, and probe tests with .probetests. There is an additional .alltests script that wraps the other three.

To fully run the tests, the target environment must use a filesystem that supports large xattrs. XFS is strongly recommended. For unit tests and in- process functional tests, either mount /tmp with XFS or provide another XFS filesystem via the TMPDIR environment variable. Without this setting, tests should still pass, but a very large number will be skipped.

Code Organization

  • bin/: Executable scripts that are the processes run by the deployer
  • doc/: Documentation
  • etc/: Sample config files
  • examples/: Config snippets used in the docs
  • swift/: Core code
    • account/: account server
    • cli/: code that backs some of the CLI tools in bin/
    • common/: code shared by different modules
      • middleware/: "standard", officially-supported middleware
      • ring/: code implementing Swift's ring
    • container/: container server
    • locale/: internationalization (translation) data
    • obj/: object server
    • proxy/: proxy server
  • test/: Unit, functional, and probe tests

Data Flow

Swift is a WSGI application and uses eventlet's WSGI server. After the processes are running, the entry point for new requests is the Application class in swift/proxy/server.py. From there, a controller is chosen, and the request is processed. The proxy may choose to forward the request to a back-end server. For example, the entry point for requests to the object server is the ObjectController class in swift/obj/server.py.

For Deployers

Deployer docs are also available at https://docs.openstack.org/swift/latest/. A good starting point is at https://docs.openstack.org/swift/latest/deployment_guide.html There is an ops runbook that gives information about how to diagnose and troubleshoot common issues when running a Swift cluster.

You can run functional tests against a Swift cluster with .functests. These functional tests require /etc/swift/test.conf to run. A sample config file can be found in this source tree in test/sample.conf.

For Client Apps

For client applications, official Python language bindings are provided at https://opendev.org/openstack/python-swiftclient.

Complete API documentation at https://docs.openstack.org/api-ref/object-store/

There is a large ecosystem of applications and libraries that support and work with OpenStack Swift. Several are listed on the associated projects page.


For more information come hang out in #openstack-swift on OFTC.

Thanks,

The Swift Development Team

More Repositories

1

openstack

Repository tracking all OpenStack repositories as submodules. Mirror of code maintained at opendev.org.
Python
4,913
star
2

nova

OpenStack Compute (Nova). Mirror of code maintained at opendev.org.
Python
2,964
star
3

devstack

System for quickly installing an OpenStack cloud from upstream git for testing and development. Mirror of code maintained at opendev.org.
Shell
1,982
star
4

openstack-ansible

Ansible playbooks for deploying OpenStack. Mirror of code maintained at opendev.org.
Python
1,384
star
5

neutron

OpenStack Networking (Neutron). Mirror of code maintained at opendev.org.
Python
1,341
star
6

horizon

OpenStack Dashboard (Horizon). Mirror of code maintained at opendev.org.
Python
1,305
star
7

kolla

Kolla provides production-ready containers and deployment tools for operating OpenStack clouds. Mirror of code maintained at opendev.org.
Python
1,110
star
8

keystone

OpenStack Identity (Keystone). Mirror of code maintained at opendev.org.
Python
666
star
9

ansible-hardening

Ansible role for security hardening. Mirror of code maintained at opendev.org.
Jinja
632
star
10

cinder

OpenStack Block Storage (Cinder). Mirror of code maintained at opendev.org.
Python
623
star
11

kolla-ansible

Ansible deployment of the Kolla containers. Mirror of code maintained at opendev.org.
Jinja
566
star
12

glance

OpenStack Image Management (Glance). Mirror of code maintained at opendev.org.
Python
500
star
13

ironic

A service for managing and provisioning Bare Metal servers. Mirror of code maintained at opendev.org.
Python
430
star
14

openstack-manuals

OpenStack Manuals. Mirror of code maintained at opendev.org.
HTML
411
star
15

openstack-helm

Helm charts for deploying OpenStack on Kubernetes. Mirror of code maintained at opendev.org.
Shell
392
star
16

heat

OpenStack Orchestration (Heat). Mirror of code maintained at opendev.org.
Python
385
star
17

heat-templates

OpenStack Orchestration (Heat) Templates. Mirror of code maintained at opendev.org.
PowerShell
381
star
18

python-novaclient

OpenStack Compute (Nova) Client. Mirror of code maintained at opendev.org.
Python
379
star
19

tempest

OpenStack Testing (Tempest) of an existing cloud. Mirror of code maintained at opendev.org.
Python
349
star
20

taskflow

A library to complete workflows/tasks in HA manner. Mirror of code maintained at opendev.org.
Python
339
star
21

diskimage-builder

Image building tools for OpenStack. Mirror of code maintained at opendev.org.
Shell
331
star
22

python-swiftclient

OpenStack Storage (Swift) Client. Mirror of code maintained at opendev.org.
Python
324
star
23

rally

Rally provides a framework for performance analysis and benchmarking of individual OpenStack components as well as full production OpenStack cloud deployments. Mirror of code maintained at opendev.org.
Python
322
star
24

magnum

Container Infrastructure Management Service for OpenStack. Mirror of code maintained at opendev.org.
Python
319
star
25

python-openstackclient

Client for OpenStack services. Mirror of code maintained at opendev.org.
Python
317
star
26

ceilometer

OpenStack Telemetry (Ceilometer). Mirror of code maintained at opendev.org.
Python
310
star
27

bashate

Code style enforcement for bash programs. Mirror of code maintained at opendev.org.
Python
308
star
28

trove

OpenStack Database As A Service (Trove). Mirror of code maintained at opendev.org.
Python
286
star
29

mistral

Workflow Service for OpenStack. Mirror of code maintained at opendev.org.
Python
246
star
30

openstacksdk

Unified SDK for OpenStack. Mirror of code maintained at opendev.org.
Python
241
star
31

hacking

OpenStack Hacking Style Checks. Mirror of code maintained at opendev.org.
Python
233
star
32

barbican

Barbican is a ReST API designed for the secure storage, provisioning and management of secrets, including in OpenStack environments. Mirror of code maintained at opendev.org.
Python
227
star
33

cliff

Command Line Interface Formulation Framework. Mirror of code maintained at opendev.org.
Python
217
star
34

devstack-vagrant

Vagrant configuration for building DevStack environments. Mirror of code maintained at opendev.org.
Shell
214
star
35

pbr

Python Build Reasonableness. Mirror of code maintained at opendev.org.
Python
209
star
36

python-keystoneclient

OpenStack Identity (Keystone) Client. Mirror of code maintained at opendev.org.
Python
199
star
37

stevedore

Manage dynamic plugins for Python applications. Mirror of code maintained at opendev.org.
Python
195
star
38

sahara

Sahara provides a scalable data processing stack and associated management interfaces. Mirror of code maintained at opendev.org.
Python
195
star
39

kuryr

Bridge between container framework networking and storage models to OpenStack networking and storage abstractions. Mirror of code maintained at opendev.org.
Python
191
star
40

python-neutronclient

OpenStack Networking (Neutron) Client. Mirror of code maintained at opendev.org.
Python
164
star
41

tripleo-heat-templates

Heat templates for deploying OpenStack. Mirror of code maintained at opendev.org.
Python
159
star
42

octavia

Load Balancing as a Service (LBaaS) for OpenStack. Mirror of code maintained at opendev.org.
Python
159
star
43

designate

OpenStack DNS As A Service (Designate). Mirror of code maintained at opendev.org.
Python
155
star
44

oslo.messaging

OpenStack library for messaging. Mirror of code maintained at opendev.org.
Python
153
star
45

manila

Shared filesystem management project for OpenStack. Mirror of code maintained at opendev.org.
Python
151
star
46

kuryr-kubernetes

Kubernetes integration with OpenStack networking. Mirror of code maintained at opendev.org.
Python
149
star
47

virtualbmc

A virtual BMC for controlling virtual machines using IPMI commands. Mirror of code maintained at opendev.org.
Python
149
star
48

cloudkitty

Rating service for OpenStack. Mirror of code maintained at opendev.org.
Python
140
star
49

zaqar

OpenStack Messaging (Zaqar). Mirror of code maintained at opendev.org.
Python
134
star
50

openstack-chef-repo

Examples and references to use Chef for OpenStack projects. Mirror of code maintained at opendev.org.
134
star
51

oslo.config

OpenStack library for config. Mirror of code maintained at opendev.org.
Python
134
star
52

yaql

Yet another query language. Mirror of code maintained at opendev.org.
Python
131
star
53

requirements

Global requirements for OpenStack. Mirror of code maintained at opendev.org.
Python
130
star
54

tacker

Tacker: ETSI MANO NFV Orchestrator / VNF Manager. See https://wiki.openstack.org/wiki/Tacker. Mirror of code maintained at opendev.org.
Python
129
star
55

openstack-helm-infra

Repository for OpenStack Helm infrastructure-related code. Mirror of code maintained at opendev.org.
Shell
129
star
56

tripleo-quickstart

Ansible based project for setting up TripleO virtual environments. Mirror of code maintained at opendev.org.
Shell
128
star
57

tooz

Coordinate distributed systems. Mirror of code maintained at opendev.org.
Python
128
star
58

liberasurecode

Erasure Code API library written in C with pluggable Erasure Code backends. Mirror of code maintained at opendev.org.
C
127
star
59

puppet-ceph

Ceph Puppet Module. Mirror of code maintained at opendev.org.
Ruby
120
star
60

project-config

Configuration files for project CI systems. Mirror of code maintained at opendev.org.
Python
112
star
61

murano

Application Catalog for OpenStack. Mirror of code maintained at opendev.org.
Python
109
star
62

python-glanceclient

OpenStack Image Management (Glance) Client. Mirror of code maintained at opendev.org.
Python
109
star
63

ironic-python-agent

A Python agent for provisioning and deprovisioning Bare Metal servers. Mirror of code maintained at opendev.org.
Python
108
star
64

osprofiler

OpenStack cross service/project profiler. Mirror of code maintained at opendev.org.
Python
106
star
65

solum

An OpenStack project designed to make cloud services easier to consume and integrate into your application development process. See: https://wiki.openstack.org/wiki/Solum. Mirror of code maintained at opendev.org.
Python
102
star
66

ec2-api

AWS EC2 and VPC API support in standalone service for OpenStack. Mirror of code maintained at opendev.org.
Python
100
star
67

python-cinderclient

OpenStack Block Storage (Cinder) Client. Mirror of code maintained at opendev.org.
Python
97
star
68

bifrost

Ansible roles and playbooks to enable a standalone Ironic install. Mirror of code maintained at opendev.org.
Python
93
star
69

python-heatclient

OpenStack Orchestration (Heat) Client. Mirror of code maintained at opendev.org.
Python
91
star
70

networking-ovn

DEPRECATED, Neutron integration with OVN. Mirror of code maintained at opendev.org.
90
star
71

monasca-agent

Agent for Monasca. Mirror of code maintained at opendev.org.
Python
88
star
72

tosca-parser

Parser for TOSCA Simple Profile in YAML. Mirror of code maintained at opendev.org.
Python
87
star
73

vitrage

OpenStack RCA (Root Cause Analysis) Engine. Mirror of code maintained at opendev.org.
Python
86
star
74

training-guides

Community created, open source training guides for OpenStack. Mirror of code maintained at opendev.org.
Shell
85
star
75

oslo.db

OpenStack Common DB Code. Mirror of code maintained at opendev.org.
Python
84
star
76

heat-translator

Translate non-heat templates to Heat Orchestration Template. Mirror of code maintained at opendev.org.
Python
84
star
77

monasca-api

Monasca REST API. Mirror of code maintained at opendev.org.
Python
82
star
78

zun

Containers Service for OpenStack. Mirror of code maintained at opendev.org.
Python
82
star
79

shade

Client library for OpenStack containing Infra business logic. Mirror of code maintained at opendev.org.
Python
80
star
80

oslo.utils

OpenStack library utils. Mirror of code maintained at opendev.org.
Python
80
star
81

api-site

OpenStack API site. Mirror of code maintained at opendev.org.
CSS
78
star
82

cookiecutter

Cookiecutter Template for new OpenStack projects. Mirror of code maintained at opendev.org.
Python
77
star
83

tripleo-image-elements

Disk image elements for deployment images of OpenStack. Mirror of code maintained at opendev.org.
Shell
77
star
84

networking-odl

Neutron drivers for OpenDaylight. Mirror of code maintained at opendev.org.
76
star
85

murano-apps

Examples and reference implementation of Murano application packages. Mirror of code maintained at opendev.org.
Shell
75
star
86

openstack-ansible-ops

Operations-related content for OpenStack-Ansible. Mirror of code maintained at opendev.org.
Jinja
72
star
87

governance

OpenStack Technical Committee Decisions. Mirror of code maintained at opendev.org.
Python
72
star
88

xstatic-jsencrypt

JSEncrypt JavaScript library packaged as XStatic. Mirror of code maintained at opendev.org.
JavaScript
72
star
89

puppet-nova

OpenStack Nova Puppet Module. Mirror of code maintained at opendev.org.
Ruby
71
star
90

python-troveclient

OpenStack Database as a Service (Trove) Client. Mirror of code maintained at opendev.org.
Python
70
star
91

puppet-keystone

OpenStack Keystone Puppet Module. Mirror of code maintained at opendev.org.
Ruby
69
star
92

oslo.concurrency

OpenStack library for all concurrency-related code. Mirror of code maintained at opendev.org.
Python
68
star
93

puppet-openstack-integration

Collection of scripts and manifests for module testing. Mirror of code maintained at opendev.org.
Puppet
68
star
94

watcher

Resource optimization service for OpenStack. Mirror of code maintained at opendev.org.
Python
68
star
95

operations-guide

OpenStack Operations Guide. Mirror of code maintained at opendev.org.
68
star
96

nova-specs

OpenStack Compute (Nova) Specifications. Mirror of code maintained at opendev.org.
Python
67
star
97

openstack-doc-tools

Tools used by OpenStack Documentation. Mirror of code maintained at opendev.org.
Python
67
star
98

glance_store

Glance stores library. Mirror of code maintained at opendev.org.
Python
67
star
99

keystonemiddleware

OpenStack Identity (Keystone) Middleware. Mirror of code maintained at opendev.org.
Python
65
star
100

neutron-fwaas

Firewall services for OpenStack Neutron. Mirror of code maintained at opendev.org.
Python
63
star