Skip to content

Commit

Permalink
Merge RC branch 'release/v0.6.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
GlennBullingham committed Dec 1, 2020
2 parents be7eb17 + 7c7f7b4 commit c451a30
Show file tree
Hide file tree
Showing 250 changed files with 22,965 additions and 12,360 deletions.
2,738 changes: 2,228 additions & 510 deletions Cargo.lock

Large diffs are not rendered by default.

10 changes: 9 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
[patch.crates-io]
h2 = { git = "https://github.com/gila/h2", branch = "v0.2.6"}
h2 = { git = "https://github.com/gila/h2", branch = "v0.2.7"}
partition-identity = { git = "https://github.com/openebs/partition-identity.git" }

[profile.dev]
panic = "abort"

[workspace]
members = [
"csi",
Expand All @@ -11,4 +14,9 @@ members = [
"nvmeadm",
"rpc",
"sysfs",
"services",
"mbus-api",
"composer",
"rest",
"operators",
]
95 changes: 42 additions & 53 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
#!/usr/bin/env groovy

// Will ABORT current job for cases when we don't want to build
if (currentBuild.getBuildCauses('jenkins.branch.BranchIndexingCause') &&
BRANCH_NAME == "develop") {
print "INFO: Branch Indexing, aborting job."
currentBuild.result = 'ABORTED'
return
}

// Update status of a commit in github
def updateGithubCommitStatus(commit, msg, state) {
step([
Expand All @@ -20,10 +28,23 @@ def updateGithubCommitStatus(commit, msg, state) {
])
}

// Searches previous builds to find first non aborted one
def getLastNonAbortedBuild(build) {
if (build == null) {
return null;
}

if(build.result.toString().equals("ABORTED")) {
return getLastNonAbortedBuild(build.getPreviousBuild());
} else {
return build;
}
}

// Send out a slack message if branch got broken or has recovered
def notifySlackUponStateChange(build) {
def cur = build.getResult()
def prev = build.getPreviousBuild().getResult()
def prev = getLastNonAbortedBuild(build.getPreviousBuild())?.getResult()
if (cur != prev) {
if (cur == 'SUCCESS') {
slackSend(
Expand All @@ -41,25 +62,24 @@ def notifySlackUponStateChange(build) {
}
}

// Only schedule regular builds on develop branch, so we don't need to guard against it
String cron_schedule = BRANCH_NAME == "develop" ? "0 2 * * *" : ""

pipeline {
agent none
triggers {
cron('0 2 * * *')
cron(cron_schedule)
}

stages {
stage('linter') {
agent { label 'nixos-mayastor' }
when {
beforeAgent true
anyOf {
allOf {
branch 'staging'
not { triggeredBy 'TimerTrigger' }
}
allOf {
branch 'trying'
not { triggeredBy 'TimerTrigger' }
not {
anyOf {
branch 'master'
branch 'release/*'
}
}
}
Expand All @@ -73,62 +93,43 @@ pipeline {
stage('test') {
when {
beforeAgent true
anyOf {
allOf {
branch 'staging'
not { triggeredBy 'TimerTrigger' }
}
allOf {
branch 'trying'
not { triggeredBy 'TimerTrigger' }
}
allOf {
branch 'develop'
anyOf {
triggeredBy 'TimerTrigger'
triggeredBy cause: 'UserIdCause'
}
not {
anyOf {
branch 'master'
branch 'release/*'
}
}
}
parallel {
stage('rust unit tests') {
agent { label 'nixos-mayastor' }
steps {
sh 'printenv'
sh 'nix-shell --run "./scripts/cargo-test.sh"'
}
post {
always {
// temporary workaround for leaked spdk_iscsi_conns files
sh 'sudo rm -f /dev/shm/*'
// in case of abnormal termination of any nvmf test
sh 'sudo nvme disconnect-all'
}
}
}
stage('mocha api tests') {
agent { label 'nixos-mayastor' }
steps {
sh 'printenv'
sh 'nix-shell --run "./scripts/node-test.sh"'
}
post {
always {
junit '*-xunit-report.xml'
// temporary workaround for leaked spdk_iscsi_conns files
sh 'sudo rm -f /dev/shm/*'
}
}
}
stage('nix tests') {
agent { label 'nixos-mayastor-kvm' }
steps {
sh 'nix-build ./nix/test -A rebuild'
sh 'nix-build ./nix/test -A fio_nvme_basic'
sh 'nix-build ./nix/test -A nvmf_distributed'
sh 'nix-build ./nix/test -A nvmf_ports'
}
}
stage('moac unit tests') {
agent { label 'nixos-mayastor' }
steps {
sh 'printenv'
sh 'nix-shell --run "./scripts/moac-test.sh"'
}
post {
Expand All @@ -153,21 +154,9 @@ pipeline {
when {
beforeAgent true
anyOf {
allOf {
branch 'master'
not { triggeredBy 'TimerTrigger' }
}
allOf {
branch 'release/*'
not { triggeredBy 'TimerTrigger' }
}
allOf {
branch 'develop'
anyOf {
triggeredBy 'TimerTrigger'
triggeredBy cause: 'UserIdCause'
}
}
branch 'master'
branch 'release/*'
branch 'develop'
}
}
steps {
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# MayaStor

[![Releases](https://img.shields.io/github/release/openebs/Mayastor/all.svg?style=flat-square)](https://github.com/openebs/Mayastor/releases)
[![CI-basic](https://mayastor-ci.mayadata.io/buildStatus/icon?job=Mayastor%2Fdevelop)](https://mayastor-ci.mayadata.io/blue/organizations/jenkins/Mayastor/activity/)
[![CI-basic](https://mayastor-ci.mayadata.io/buildStatus/icon?job=Mayastor%2Fmaster)](https://mayastor-ci.mayadata.io/blue/organizations/jenkins/Mayastor/activity/)
[![Slack](https://img.shields.io/badge/JOIN-SLACK-blue)](https://kubernetes.slack.com/messages/openebs)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fopenebs%2FMayaStor.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fopenebs%2FMayaStor?ref=badge_shield)
[![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org)
Expand Down Expand Up @@ -110,7 +110,7 @@ buf.fill(0xff);
// same IO. Put differently. A single IO becomes three IOs
bd.write_at(0, &mut buf).await.unwrap();

// fill the buffer with zeroes and read back the data
// fill the buffer with zeros and read back the data
buf.fill(0x00);
bd.read_at(0, &mut buf).await.unwrap();

Expand All @@ -125,11 +125,11 @@ and they want the most simple (but fast) storage device. For a more elaborate ex

To communicate with the children, the Nexus uses industry standard protocols. Currently, the Nexus has support for
direct access to local storage and remote storage using NVMF or iSCSI. The other advantage is that if you were to remove
the Nexus out of the data path, you would still ba able to access your data as if Mayastor was not there.
the Nexus out of the data path, you would still be able to access your data as if Mayastor was not there.

The Nexus itself does not store any data and in its most simplistic form the Nexus is a proxy towards real storage
devices where the transport may vary. It can however, as mentioned, "transform" the data, which makes it possible to
store copies of your data within different cloud systems. One of the other ideas we have is to write block device on top
store copies of your data within different cloud systems. One of the other ideas we have is to write a block device on top
of a S3 bucket such that you can create PVCs from [Minio](https://min.io/), AWS or any other compatible S3 bucket. This
simplifies the replication model for the Nexus itself somewhat but creates a bit more on the buffering side of things.
What model fits best for you? You get to decide!
Expand Down Expand Up @@ -169,10 +169,10 @@ vhost-user code can be seen in the link section (still in C).
## Client

<p align="justify">
Although that a client for gRPC server is not required for the product,
Although a client for gRPC server is not required for the product,
it is important for testing and troubleshooting. The client
allows you to manage storage pools and replicas and just use `--help`
option if not sure how to use it. CSI services are not covered by the client.
option if you are not sure how to use it. CSI services are not covered by the client.

<p align="justify">
In following example of a client session is assumed that mayastor has been
Expand Down
19 changes: 19 additions & 0 deletions composer/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[package]
name = "composer"
version = "0.1.0"
authors = ["Tiago Castro <[email protected]>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
tokio = { version = "0.2", features = ["full"] }
futures = "0.3.8"
tonic = "0.1"
crossbeam = "0.7.3"
rpc = { path = "../rpc" }
ipnetwork = "0.17.0"
bollard = "0.8.0"

[dev-dependencies]
tokio = { version = "0.2", features = ["full"] }
Loading

0 comments on commit c451a30

Please sign in to comment.