profile
viewpoint
Adrian Mouat amouat @ContainerSolutions Edinburgh www.adrianmouat.com

amouat/diffxml 45

Diff and Patch XML files

amouat/dim 24

Distraction-free writing with Docker and Vim

amouat/dnmonster 20

Dockerised Node server for KevinGuadin's monsterids

amouat/example_app 8

Example python application using Docker rather than virtualenv for isolation

amouat/clair-with-wait 3

Clair Vulnerability Scanner with wait-for-it.sh in Dockerfile

amouat/Evolution-in-Clojure 3

Clojure version of Evolution from Land of Lisp

amouat/identiorca 3

Example App for illustrating Orchestration

amouat/clair-analyse 1

Docker container with analyse-local-images installed for use with the Clair vulnerability scanner

amouat/decktape-docker 1

A Docker image for running Decktape

amouat/fleet-vagrant 1

Sets up a Virtualbox cluster for running fleet

issue commentContainerSolutions/trow

Doing uploads in POST waits for invalid payload to stream

No worries, I made a quick PR. If you have time, take a look and see if it makes sense to you.

All I really did was changed the logging and remove the stream line!

mcwienczek

comment created time in 3 hours

create barnchContainerSolutions/trow

branch : drop_connection

created branch time in 3 hours

IssuesEvent

issue commentContainerSolutions/trow

Doing uploads in POST waits for invalid payload to stream

Are you sure this should be closed? Wasn't it about this line? https://github.com/ContainerSolutions/trow/blob/master/src/routes.rs#L538

To close the connection, we don't need to do anything, Rocket will pick up that the data wasn't touched and drop the connection. I'm just not 100% sure what is the right thing to do. Note that this also occurs in the patch upload code.

mcwienczek

comment created time in 3 hours

push eventContainerSolutions/trow

Adrian Mouat

commit sha 647c3574971a03acd0db1f6bd80f85e054aacbf5

WIP: Support partial uploads. (#56) Support partial (chunked) uploads

view details

push time in 3 hours

push eventContainerSolutions/trow

Adrian Mouat

commit sha 26cabdcf8b40d5f912c761462f861631d6654bbc

Refactored to be a bit cleaner.

view details

push time in 3 hours

push eventContainerSolutions/trow

Adrian Mouat

commit sha d06fd217703a86927ebc16ac0ae322b1c63e2904

Fix non chunked uploads.

view details

push time in 5 hours

create barnchContainerSolutions/trow

branch : chunked-uploads

created branch time in 3 days

delete branch ContainerSolutions/trow

delete branch : add-post-upload

delete time in 3 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 95d2186e24e946ba9e758e261350839de8ead615

Add support for doing uploads in POST. (#54) * Add support for doing uploads in POST.

view details

push time in 3 days

Pull request review commentContainerSolutions/trow

Add support for doing uploads in POST.

 fn post_blob_upload(     optimisation, but is arguably less flexible.     */ -    let rn = RepoName(repo_name);-    let r = ci.request_upload(&rn);-    Runtime::new().unwrap().block_on(r).map_err(|e| {+    let repo_name = RepoName(repo_name);+    let mut rt = Runtime::new().unwrap();++    let req = ci.request_upload(&repo_name);++    let up_info = rt.block_on(req).map_err(|e| {         warn!("Error getting ref from backend: {}", e);         Error::InternalError-    })+    })?;+    +    if let Some(mut digest) = uri.query()  {+        if digest.starts_with("digest=") {+            digest = &digest["digest=".len()..];+            println!("Doing post with data");+            let sink_f = ci.get_write_sink_for_upload(&repo_name, &up_info.uuid());+            let sink = rt.block_on(sink_f);+        +            return match sink {+                Ok(mut sink) => {+                    // We have a monolithic upload+                    let len = data.stream_to(&mut sink);+                    match len {+                        Ok(len) => {+                            let digest = Digest(digest.to_string());+                            let r = ci.complete_upload(&repo_name, &up_info.uuid(), &digest, len);+                            rt.block_on(r).map_err(|_| Error::InternalError).map(|au| Upload::Accepted(au))+                        }+                        Err(_) => Err(Error::InternalError),+                    }+                }+                Err(_) => {+                    // TODO: this conflates rpc errors with uuid not existing+                    // TODO: pipe breaks if we don't accept the whole file+                    // Possibly makes us prone to DOS attack?+                    warn!("Uuid {} does not exist, piping to /dev/null", &up_info.uuid());+                    let _ = data.stream_to_file("/dev/null");

I think this is best left for another PR - do you want to investigate?

amouat

comment created time in 3 days

Pull request review commentContainerSolutions/trow

Add support for doing uploads in POST.

 fn post_blob_upload(     optimisation, but is arguably less flexible.     */ -    let rn = RepoName(repo_name);-    let r = ci.request_upload(&rn);-    Runtime::new().unwrap().block_on(r).map_err(|e| {+    let repo_name = RepoName(repo_name);+    let mut rt = Runtime::new().unwrap();++    let req = ci.request_upload(&repo_name);++    let up_info = rt.block_on(req).map_err(|e| {         warn!("Error getting ref from backend: {}", e);         Error::InternalError-    })+    })?;+    +    if let Some(mut digest) = uri.query()  {+        if digest.starts_with("digest=") {+            digest = &digest["digest=".len()..];+            println!("Doing post with data");+            let sink_f = ci.get_write_sink_for_upload(&repo_name, &up_info.uuid());+            let sink = rt.block_on(sink_f);+        +            return match sink {+                Ok(mut sink) => {+                    // We have a monolithic upload+                    let len = data.stream_to(&mut sink);+                    match len {+                        Ok(len) => {+                            let digest = Digest(digest.to_string());+                            let r = ci.complete_upload(&repo_name, &up_info.uuid(), &digest, len);+                            rt.block_on(r).map_err(|_| Error::InternalError).map(|au| Upload::Accepted(au))+                        }+                        Err(_) => Err(Error::InternalError),+                    }+                }+                Err(_) => {+                    // TODO: this conflates rpc errors with uuid not existing+                    // TODO: pipe breaks if we don't accept the whole file+                    // Possibly makes us prone to DOS attack?+                    warn!("Uuid {} does not exist, piping to /dev/null", &up_info.uuid());+                    let _ = data.stream_to_file("/dev/null");

Not sure, I've not really looked into this tbh

amouat

comment created time in 3 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha e06a058d96f65151f27babbcd1dd9d697391aa9f

Decode query string properly.

view details

push time in 3 days

push eventContainerSolutions/trow

Michal Cwienczek

commit sha 86d869d33e6a4c652574a59a892ed3b33737135d

Made error codes and returnning error messages conformant to Distribu… (#53) * Made error codes and returnnng error messages conformant to Distribution Spec https://github.com/opencontainers/distribution-spec/blob/master/spec.md\#errors-2

view details

push time in 3 days

PR merged ContainerSolutions/trow

Made error codes and returnning error messages conformant to Distribu…

…tion Spec https://github.com/opencontainers/distribution-spec/blob/master/spec.md#errors-2 Fixes #52

+23 -20

0 comment

1 changed file

mcwienczek

pr closed time in 3 days

issue closedContainerSolutions/trow

Make error codes conformant with Distribution Spec

Trow needs to be conformant with error format of Distribution Spec: https://github.com/opencontainers/distribution-spec/blob/master/spec.md#errors-2

closed time in 3 days

mcwienczek

create barnchContainerSolutions/trow

branch : add-post-upload

created branch time in 3 days

Pull request review commentContainerSolutions/trow

Made error codes and returnning error messages conformant to Distribu…

 struct ErrorMsg { impl fmt::Display for Error {     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {         match *self {-            Error::Unsupported => write!(f, "Unsupported Operation"),-            Error::Unauthorized => write!(f, "Authorization required"),-            Error::BlobUnknown => write!(f, "Blob Unknown"),+            Error::Unsupported => format_error_json(f, "UNSUPPORTED".to_string(), "Unsupported".to_string(), json!({})),+            Error::Unauthorized => format_error_json(f, "UNAUTHORIZED".to_string(), "Authorization required".to_string(), json!({})),+            Error::BlobUnknown => format_error_json(f, "BLOB_UNKNOWN".to_string(), "Blob Unknown".to_string(), json!({})),             Error::BlobUploadUnknown => write!(f, "Blob Upload Unknown"),-            Error::InternalError => write!(f, "Internal Error"),-            Error::DigestInvalid => write!(f, "Provided digest did not match uploaded content"),-            Error::ManifestInvalid => write!(f, "Manifest Invalid"),--            Error::ManifestUnknown(ref tag) => {-                let emsg = ErrorMsg {-                    code: "MANIFEST_UNKNOWN".to_string(),-                    message: "manifest unknown".to_string(),-                    detail: json!({ "Tag": tag }),-                };-                write!(-                    f,-                    "{{\"errors\":[{}]}}",-                    serde_json::to_string(&emsg).unwrap_or("MANIFEST_UNKNOWN".to_string())-                )-            }+            //TODO: INTERNAL_ERROR code is not in the distribution spec+            Error::InternalError => format_error_json(f, "INTERNAL_ERROR".to_string(), "Internal Server Error".to_string(), json!({})),+            Error::DigestInvalid => format_error_json(f, "DIGEST_INVALID".to_string(), "Provided digest did not match uploaded content".to_string(), json!({})),+            Error::ManifestInvalid => format_error_json(f, "MANIFEST_INVALID".to_string(), "manifest invalid".to_string(), json!({})),+            Error::ManifestUnknown(ref tag) => format_error_json(f, "MANIFEST_UNKNOWN".to_string(), "manifest unknown".to_string(), json!({ "Tag": tag }))         }     } } +fn format_error_json(f: &mut fmt::Formatter, code: String, message: String, detail: serde_json::Value) -> fmt::Result {+    let emsg = ErrorMsg {+        code: code,+        message: message,+        detail: detail,

I'm not sure what you mean. I'm pretty sure it will all just work if you just change:

struct ErrorMsg {
    code: String,
    message: String,
    detail: Value,
}

to:

struct ErrorMsg {
    code: String,
    message: String,
    detail: Option<Value>,
}

Then if there's no details, you can just pass None. I think serde will still happily deal with converting to Json.

mcwienczek

comment created time in 3 days

Pull request review commentContainerSolutions/trow

Made error codes and returnning error messages conformant to Distribu…

 struct ErrorMsg { impl fmt::Display for Error {     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {         match *self {-            Error::Unsupported => write!(f, "Unsupported Operation"),-            Error::Unauthorized => write!(f, "Authorization required"),-            Error::BlobUnknown => write!(f, "Blob Unknown"),+            Error::Unsupported => format_error_json(f, "UNSUPPORTED".to_string(), "Unsupported".to_string(), json!({})),+            Error::Unauthorized => format_error_json(f, "UNAUTHORIZED".to_string(), "Authorization required".to_string(), json!({})),+            Error::BlobUnknown => format_error_json(f, "BLOB_UNKNOWN".to_string(), "Blob Unknown".to_string(), json!({})),             Error::BlobUploadUnknown => write!(f, "Blob Upload Unknown"),-            Error::InternalError => write!(f, "Internal Error"),-            Error::DigestInvalid => write!(f, "Provided digest did not match uploaded content"),-            Error::ManifestInvalid => write!(f, "Manifest Invalid"),--            Error::ManifestUnknown(ref tag) => {-                let emsg = ErrorMsg {-                    code: "MANIFEST_UNKNOWN".to_string(),-                    message: "manifest unknown".to_string(),-                    detail: json!({ "Tag": tag }),-                };-                write!(-                    f,-                    "{{\"errors\":[{}]}}",-                    serde_json::to_string(&emsg).unwrap_or("MANIFEST_UNKNOWN".to_string())-                )-            }+            //TODO: INTERNAL_ERROR code is not in the distribution spec+            Error::InternalError => format_error_json(f, "INTERNAL_ERROR".to_string(), "Internal Server Error".to_string(), json!({})),+            Error::DigestInvalid => format_error_json(f, "DIGEST_INVALID".to_string(), "Provided digest did not match uploaded content".to_string(), json!({})),+            Error::ManifestInvalid => format_error_json(f, "MANIFEST_INVALID".to_string(), "manifest invalid".to_string(), json!({})),+            Error::ManifestUnknown(ref tag) => format_error_json(f, "MANIFEST_UNKNOWN".to_string(), "manifest unknown".to_string(), json!({ "Tag": tag }))         }     } } +fn format_error_json(f: &mut fmt::Formatter, code: String, message: String, detail: serde_json::Value) -> fmt::Result {+    let emsg = ErrorMsg {+        code: code,+        message: message,+        detail: detail,

I wonder if we should change the detail to be Option<String>.

mcwienczek

comment created time in 3 days

Pull request review commentContainerSolutions/trow

Made error codes and returnning error messages conformant to Distribu…

 struct ErrorMsg { impl fmt::Display for Error {     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {         match *self {-            Error::Unsupported => write!(f, "Unsupported Operation"),-            Error::Unauthorized => write!(f, "Authorization required"),-            Error::BlobUnknown => write!(f, "Blob Unknown"),+            Error::Unsupported => format_error_json(f, "UNSUPPORTED".to_string(), "Unsupported".to_string(), json!({})),+            Error::Unauthorized => format_error_json(f, "UNAUTHORIZED".to_string(), "Authorization required".to_string(), json!({})),+            Error::BlobUnknown => format_error_json(f, "BLOB_UNKNOWN".to_string(), "Blob Unknown".to_string(), json!({})),             Error::BlobUploadUnknown => write!(f, "Blob Upload Unknown"),-            Error::InternalError => write!(f, "Internal Error"),-            Error::DigestInvalid => write!(f, "Provided digest did not match uploaded content"),-            Error::ManifestInvalid => write!(f, "Manifest Invalid"),--            Error::ManifestUnknown(ref tag) => {-                let emsg = ErrorMsg {-                    code: "MANIFEST_UNKNOWN".to_string(),-                    message: "manifest unknown".to_string(),-                    detail: json!({ "Tag": tag }),-                };-                write!(-                    f,-                    "{{\"errors\":[{}]}}",-                    serde_json::to_string(&emsg).unwrap_or("MANIFEST_UNKNOWN".to_string())-                )-            }+            //TODO: INTERNAL_ERROR code is not in the distribution spec+            Error::InternalError => format_error_json(f, "INTERNAL_ERROR".to_string(), "Internal Server Error".to_string(), json!({})),+            Error::DigestInvalid => format_error_json(f, "DIGEST_INVALID".to_string(), "Provided digest did not match uploaded content".to_string(), json!({})),+            Error::ManifestInvalid => format_error_json(f, "MANIFEST_INVALID".to_string(), "manifest invalid".to_string(), json!({})),+            Error::ManifestUnknown(ref tag) => format_error_json(f, "MANIFEST_UNKNOWN".to_string(), "manifest unknown".to_string(), json!({ "Tag": tag }))         }     } } +fn format_error_json(f: &mut fmt::Formatter, code: String, message: String, detail: serde_json::Value) -> fmt::Result {

This should take &str's I think

mcwienczek

comment created time in 3 days

push eventContainerSolutions/trow

Michal Cwienczek

commit sha ec992a86e0d2c95282363507f386dc08bd89ff15

Moved from hashset to vector for list of tags (#51)

view details

push time in 4 days

PR merged ContainerSolutions/trow

Fix ordering when listing tags

Fixed ordering of results list by moving from HashSet to Vector.

+5 -5

0 comment

2 changed files

mcwienczek

pr closed time in 4 days

issue closedContainerSolutions/trow

Pagination for searching for tags

Implement pagination for looking up tags in Trow.

Pagination should conform to Open Container Initiative spec: https://github.com/opencontainers/distribution-spec/blob/master/spec.md#pagination

closed time in 4 days

mcwienczek

issue commentContainerSolutions/trow

Pagination for searching for tags

Closed by #45

mcwienczek

comment created time in 4 days

delete branch ContainerSolutions/trow

delete branch : feature/tag_search_pagination

delete time in 4 days

push eventContainerSolutions/trow

Michal Cwienczek

commit sha af4d948ad71d8eb96ade825f81186a271b6e4168

WIP - sorting and limiting list_tag results (#45) Support pagination in catalog and list_tags. Co-authored-by: Adrian Mouat <adrian.mouat@container-solutions.com>

view details

push time in 4 days

PR merged ContainerSolutions/trow

WIP - sorting and limiting list_tag results

WIP still , but please review already

+139 -50

0 comment

6 changed files

mcwienczek

pr closed time in 4 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha cf7c7465191cd9e740e9c356bc8b0df485418197

WIP: added "last" query parameter. Still failing conformance test...

view details

push time in 4 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha ab2ec6b327acbe9ced8b0fc7c9be99a0b0cf74cd

WIP: first draft of get_catalog with pagination.

view details

push time in 5 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha fcd54fcfef85caa74b36c11ba1ae13b09a714849

WIP: draft version of list_tag pagination. Mainly needs tests.

view details

push time in 5 days

push eventamouat/distribution-spec

Adrian Mouat

commit sha 7fca11e219163de019766edb1cb07b24ff18e551

Fix typo in pagination section "_v1_ and _v1_ will be returned" -> "_v1_ and _v2_ will be returned" Signed-off-by: Adrian Mouat <adrian.mouat@container-solutions.com>

view details

push time in 5 days

push eventamouat/distribution-spec

Adrian Mouat

commit sha 17a268908eb1ee0ed52a0bdc3671ef413c4cd38d

Fix typo in pagination section "_v1_ and _v1_ will be returned" -> "_v1_ and _v2_ will be returned" Signed-off-by: Adrian Mouat <adrian.mouat@gmail.com>

view details

push time in 5 days

pull request commentopencontainers/distribution-spec

Fix typo in pagination section

Looks like I need to check this out to sign it properly. Should only take a minute...

amouat

comment created time in 5 days

PR opened opencontainers/distribution-spec

Fix typo in pagination section

"v1 and v1 will be returned" -> "v1 and v2 will be returned"

Fixes #94.

Signed-off-by: Adrian Mouat adrian.mouat@container-solutions.com

+1 -1

0 comment

1 changed file

pr created time in 5 days

push eventamouat/distribution-spec

Adrian Mouat

commit sha 913cb2524a574ee8b53d31328323cd67209cdd76

Fix typo in pagination section "_v1_ and _v1_ will be returned" -> "_v1_ and _v2_ will be returned"

view details

push time in 5 days

issue commentopencontainers/distribution-spec

Minor error in pagination section

Sure. I probably should have just done that in the first place...

amouat

comment created time in 5 days

Pull request review commentContainerSolutions/trow

WIP - sorting and limiting list_tag results

 fn list_tags_2level(     user: String,     repo: String,

Should be limit: Option<i32> here as well, right?

mcwienczek

comment created time in 5 days

Pull request review commentContainerSolutions/trow

WIP - sorting and limiting list_tag results

 fn list_tags_3level(     user: String,     repo: String,

Again limit: Option<i32>

mcwienczek

comment created time in 5 days

Pull request review commentContainerSolutions/trow

WIP - sorting and limiting list_tag results

 fn get_catalog(     } } -#[get("/v2/<repo_name>/tags/list")]+#[get("/v2/<repo_name>/tags/list?<limit>")] fn list_tags(     _auth_user: TrowToken,     ci: rocket::State<ClientInterface>,     repo_name: String,+    limit: Option<i32> ) -> Result<TagList, Error> {     let rn = RepoName(repo_name);-    let tags = ci.list_tags(&rn);+    let mut lim = std::i32::MAX;+    match limit {+        Some(i) => lim = i,+        None => {}

I guess you could do

let limit = match limit {
  Some(l) => l,
  None => std::i32::MAX
}

Also std::i32::MAX seems quite a lot of results? Should we have a lower default value?

mcwienczek

comment created time in 5 days

Pull request review commentContainerSolutions/trow

WIP - sorting and limiting list_tag results

 impl Registry for TrowServer {         let (mut tx, rx) = mpsc::channel(4);         let mut path = PathBuf::from(&self.manifests_path);         let ce = request.into_inner();+        let limit = ce.limit as usize;         path.push(ce.repo_name);          if let Ok(files) = fs::read_dir(path) {             tokio::spawn(async move {-                for entry in files {-                    if let Ok(en) = entry {-                        let en_path = en.path();-                        if en_path.is_file() {-                            if let Some(tag_str) = en_path.file_name() {-                                let tag = Tag {-                                    tag: tag_str.to_string_lossy().to_string(),-                                };-                                tx.send(Ok(tag)).await.expect("Error streaming tags");-                            }+                let mut paths: Vec<_> = files.map(|r| r.unwrap())+                    .collect();+                // sorting to adhere to spec:+                // https://github.com/opencontainers/distribution-spec/blob/master/spec.md#pagination+                paths.sort_by_key(|dir| dir.path());+                let it = paths.iter().take(limit);++                for entry in it {+                    let en_path = entry.path();+                    if en_path.is_file() {+                        if let Some(tag_str) = en_path.file_name() {+                            let tag = Tag {+                                tag: tag_str.to_string_lossy().to_string(),+                            };+                            tx.send(Ok(tag)).await.expect("Error streaming tags");

I'm sorry, I've wrecked this with the refactoring on master.

mcwienczek

comment created time in 5 days

Pull request review commentContainerSolutions/trow

WIP - sorting and limiting list_tag results

 message CatalogRequest {  message CatalogEntry {   string repo_name = 1;+  int32 limit = 2;+  string last_tag = 3;

I'm a bit surprised to see this in the return type. I think it should be in the request, but not the return?

mcwienczek

comment created time in 5 days

issue openedopencontainers/distribution-spec

Minor error in pagination section

Under https://github.com/opencontainers/distribution-spec/blob/master/spec.md#pagination

The text reads "If the value of n is 2, v1 and v1 will be returned", presumably this should be "If the value of n is 2, v1 and v2 will be returned".

created time in 5 days

delete branch ContainerSolutions/trow

delete branch : delete_manifest

delete time in 5 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 136ffe4b822408e9a1bb0f515606a5e39efb270e

Add missing file.

view details

Adrian Mouat

commit sha ecf460ae7fc02ba0f49a214542acea8b607e9454

Merge branch 'master' of github.com:ContainerSolutions/trow

view details

push time in 5 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha e9084a35e39a1f2671d50451ac134f7cb0e14755

Delete manifest (#50) Code, tests and refactorings for deleting manifests.

view details

push time in 6 days

PR merged ContainerSolutions/trow

Delete manifest

Code and tests for deleting manifests.

Also contains a bunch of refactorings to the storage system.

Would be good to create some docs on how stuff gets stored.

+276 -129

0 comment

7 changed files

amouat

pr closed time in 6 days

PR opened ContainerSolutions/trow

Delete manifest

Code and tests for deleting manifests.

Also contains a bunch of refactorings to the storage system.

Would be good to create some docs on how stuff gets stored.

+276 -129

0 comment

7 changed files

pr created time in 6 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 1a0cb5e28621c1f0eba596954286349f8e791b97

Refactor tests.

view details

push time in 6 days

issue openedContainerSolutions/trow

Document certs needed for development

To run cargo test, the developer will need to first create a certificate for Trow to use. We should document this better.

created time in 6 days

delete branch ContainerSolutions/trow

delete branch : dockerfile-travis-rustfmt-fix

delete time in 6 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 14173d16d45f18d2fe89d3dbba2e96858324c67f

Pin Dockerfiles and Travis to working version of rust. (#48) Need nightly with rustfmt.

view details

push time in 6 days

push eventContainerSolutions/trow

Michal Cwienczek

commit sha 310cbef39f58781197d45fb676a15fcfe844e5f1

Fixed tests on mac platform (#46)

view details

push time in 6 days

PR merged ContainerSolutions/trow

Fixed tests on mac platform

Tests did not pass on MacOS because of invalid certificates generated for the test. macOS requires more sohisticated self-signed certificate to work and it's not as simple to generate one (make-certs.sh does not generate correct certificate for MacOS platform at the moment and adding such certificate to MacOS keychain does not help).

Therefore we have enabled client in the tests to allow invalid certificates.

+264 -252

0 comment

5 changed files

mcwienczek

pr closed time in 6 days

create barnchContainerSolutions/trow

branch : dockerfile-travis-rustfmt-fix

created branch time in 6 days

delete branch ContainerSolutions/trow

delete branch : docker-travis-rustfmt

delete time in 6 days

create barnchContainerSolutions/trow

branch : docker-travis-rustfmt

created branch time in 6 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha f033669c3988b653f7730ccbdcc90b5b5ccb7eee

WIP. Refactored to iter. Still need to get rid of unwraps.

view details

Adrian Mouat

commit sha 7f6543c5ff2a2a8dcc2f5c565d776f9c15d59079

WIP. Refactored. Got rid of unwraps, if a bit messily. Still want to improve tests a bit.

view details

push time in 7 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 8e5131113db2d2ae030a87f6c2bfa4a428d601e6

Working! Still needs refactoring.

view details

push time in 8 days

create barnchContainerSolutions/trow

branch : delete_manifest

created branch time in 8 days

push eventContainerSolutions/trow

David Zisky

commit sha d064ca156ce06c21fb7b617c58fb90ea17e4ceca

Update copy-certs.sh (#44) Small redesign of if statement

view details

push time in 10 days

PR merged ContainerSolutions/trow

Update copy-certs.sh

Small redesign of if statement

+4 -3

1 comment

1 changed file

DavidZisky

pr closed time in 10 days

pull request commentContainerSolutions/trow

Update copy-certs.sh

Travis failed, but it's due to a network problem in the CI, nothing to do with the code.

DavidZisky

comment created time in 10 days

Pull request review commentContainerSolutions/trow

Ability to select namespace during quick install

 set -eo pipefail unset CDPATH IFS=$'\n\t' +namespace='kube-public'+if [ ! -z "$1" ]

True. I'll merge a PR if you open one :)

mcwienczek

comment created time in 10 days

startedContainerSolutions/trow

started time in 10 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha ab3b3799e4e6f344a42956e97bc4bf5e30ffa146

Add missing file... Ooops.

view details

push time in 11 days

create barnchContainerSolutions/trow

branch : delete_blob

created branch time in 11 days

delete branch ContainerSolutions/trow

delete branch : delete_blob

delete time in 11 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha b173d0428e7cac0302d45ab03caba2fd0c52754a

Support delete blob. (#42) I have big questions about how this should work. I don't think it should be possible to delete blobs that are referenced by manifests. For the minute, it is doing this. In future, need to clarify with OCI what the intention and use-case is.

view details

push time in 11 days

PR merged ContainerSolutions/trow

Support delete blob.

I have big questions about how this should work. I don't think it should be possible to delete blobs that are referenced by manifests. For the minute, it is doing this. In future, need to clarify with OCI what the intention and use-case is.

+204 -81

0 comment

7 changed files

amouat

pr closed time in 11 days

PR opened ContainerSolutions/trow

Support delete blob.

I have big questions about how this should work. I don't think it should be possible to delete blobs that are referenced by manifests. For the minute, it is doing this. In future, need to clarify with OCI what the intention and use-case is.

+204 -81

0 comment

7 changed files

pr created time in 11 days

create barnchContainerSolutions/trow

branch : delete_blob

created branch time in 11 days

delete branch ContainerSolutions/trow

delete branch : revert-28-fix-copy

delete time in 11 days

delete branch ContainerSolutions/trow

delete branch : smoke-test

delete time in 11 days

delete branch ContainerSolutions/trow

delete branch : qinstall

delete time in 11 days

delete branch ContainerSolutions/trow

delete branch : fix-digest

delete time in 11 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha f7db8e223e7baba0d1c58ff0905a25524d7d97f6

Save manifests by digest and tag (#41) * Added test and refactor digest handling. Test currently failing. Need to fix how manifests are saved. Which is currently badly. * Save manifests as blobs and tags

view details

push time in 11 days

PR opened ContainerSolutions/trow

Save manifests by digest and tag
+223 -139

0 comment

5 changed files

pr created time in 11 days

create barnchContainerSolutions/trow

branch : fix-digest

created branch time in 11 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 4046e72554a2a02519fa294822657cabbb356c95

Minor UI improvements for quick install & namespaces (#40) * WIP - ability to select namespace during quick install * Finished issue #27 * Small fixes to echo messages * Double quoted namespace variables in few more places * Double quoted namespace variables in few more places * better parameter handling for configure-host.sh * Make namespace handling a bit nicer for the user. Co-authored-by: Michal Cwienczek <michael.cwienczek@gmail.com>

view details

push time in 12 days

PR merged ContainerSolutions/trow

Reviewers
Minor UI improvements for quick install & namespaces

Check if namespace exists and offer to create if it doesn't.

+37 -0

0 comment

1 changed file

amouat

pr closed time in 12 days

PR opened ContainerSolutions/trow

Minor UI improvements for quick install & namespaces

Check if namespace exists and offer to create if it doesn't.

+37 -0

0 comment

1 changed file

pr created time in 12 days

create barnchContainerSolutions/trow

branch : qinstall

created branch time in 12 days

push eventContainerSolutions/trow

Michal Cwienczek

commit sha 950344867151e459e0e570e6e87617a6faede764

Ability to select namespace during quick install (#38) * WIP - ability to select namespace during quick install * Finished issue #27 * Small fixes to echo messages * Double quoted namespace variables in few more places * Double quoted namespace variables in few more places * better parameter handling for configure-host.sh * Removed debugging info from scripts * Fixed typo in yaml file

view details

push time in 12 days

issue closedContainerSolutions/trow

Allow setting of namespace in quick install

The user should be able to choose which namespace to install Trow to in the quick install (standard install can already be easily changed).

Fix should include some form of test.

closed time in 12 days

amouat

pull request commentContainerSolutions/trow

Ability to select namespace during quick install

After learning my lesson the hard way, let me do a quick manual check before hitting merge...

mcwienczek

comment created time in 13 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha d68b5e09af35043dfcf9f8ec1a0af7f2345da1f4

Ignore Docker test by default. It will confuse new users otherwise.

view details

Adrian Mouat

commit sha c82702fdbe61900dbbd72398c91fd511b4e8f20f

Merge branch 'master' of github.com:ContainerSolutions/trow

view details

Adrian Mouat

commit sha 0349aee6b65e7f189de1fa9a3188a486b06d0593

Complete sentence. ::face-palm::

view details

push time in 13 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha d68b5e09af35043dfcf9f8ec1a0af7f2345da1f4

Ignore Docker test by default. It will confuse new users otherwise.

view details

push time in 13 days

push eventContainerSolutions/trow

Adrian Mouat

commit sha 7680056b5acab6ee09f31ea8f6c7208e2dcdd793

Add smoke test that do does a docker push/pull. Don't like the explicit dependency on Docker, but this should catch some basic mistakes.

view details

Adrian Mouat

commit sha a03550a4b6f4ed9b78d35ff61e38e8c32c7cf48e

Merge pull request #39 from ContainerSolutions/smoke-test Add smoke test that do does a docker push/pull.

view details

push time in 13 days

more