Skip to content

Comments

Add python additionalFiles option#125

Merged
brendandburns merged 5 commits intometaparticle-io:masterfrom
wagoodman:add-python-additional-files
Jun 6, 2018
Merged

Add python additionalFiles option#125
brendandburns merged 5 commits intometaparticle-io:masterfrom
wagoodman:add-python-additional-files

Conversation

@wagoodman
Copy link
Contributor

@wagoodman wagoodman commented Apr 22, 2018

Here's a rough cut at issue #2... once there is general agreement on this approach, I'll fill in some tests and start filling this out for other languages.

This example isn't working yet since the metaparticle lib within the container is unaware of the new functionality (specifically, the PackageFile is seen as a bad import)... otherwise this example appears to be working.

I decided to go with an class over a simple dictionary of { dest: src} because now it is

  • a bit more testable (todo: add test for this :) ),
  • allows for extra options such as mode very easily without refactors later, and
  • allows any validations or other logic to be confined to the class if necessary.

However, I think it would be a good time to discuss having mixed objects in the Containerize definition or to instead always use dict/list primitives when possible... e.g. something like this instead:

@Containerize(
    package={
        'name': 'file-example',
        'repository': 'docker.io/brendanburns',
        'publish': False,
        'additionalFiles': {
            './data.json': '/some/container/path',
            './get_data.sh': '/another/container/path',
        }
    }
)

@wagoodman wagoodman force-pushed the add-python-additional-files branch from 9db2bbd to 13af64c Compare April 22, 2018 00:30
@wagoodman wagoodman force-pushed the add-python-additional-files branch from 13af64c to fc57263 Compare April 22, 2018 12:04
@brendandburns
Copy link
Contributor

Needs a rebase since I merged your other PR...

@wagoodman
Copy link
Contributor Author

@brendandburns : rebased. Do you have any opinions around providing a list of files via a list of rich objects (implemented in the PR) or by instead a simple dictionary (example given in the description)?

@brendandburns
Copy link
Contributor

I think that nested is great actually, it looks more expressive to me.

Once this is fully ready and working, I'd be ok to merge.

Thanks!
--brendan

@wagoodman
Copy link
Contributor Author

wagoodman commented Jun 2, 2018

Just to double check, @brendandburns, by "nested" do you mean the alternative example above:

@Containerize(
    package={
        'name': 'file-example',
        'repository': 'docker.io/brendanburns',
        'publish': False,
        'additionalFiles': {
            './data.json': '/some/container/path',
            './get_data.sh': '/another/container/path',
        }
    }
)

or do you mean what's implemented in this PR? e.g.:

@Containerize(
    package={
        'name': 'file-example',
        'repository': 'docker.io/brendanburns',
        'publish': False,
        'additionalFiles': [
            PackageFile(src='./data.json', dest= '/some/container/path', mode='0400'),
            PackageFile(src='./get_data.sh', dest='/another/container/path'),
        ]
    }
)

@brendandburns brendandburns merged commit a48452c into metaparticle-io:master Jun 6, 2018
@wagoodman wagoodman deleted the add-python-additional-files branch June 7, 2018 01:18
srini85 added a commit to srini85/package that referenced this pull request Sep 19, 2018
* Updated Java package tutorial instructions (metaparticle-io#110)

* Correct the expected value of the @Package/repository value
* Mention the need for the @Package/publish=true field
* Removed use of the @Runtime/publicAddress field since the tutorial does not appear to be ACI specific
* Correct the type of service created on the remote Kubernetes cluster

* Added missing unit test dependencies (metaparticle-io#109)

* Update README.md (metaparticle-io#106)

Slight typo. "a nd language of choice" ===> "and language of choice"

* Create dotnet testrunner (metaparticle-io#87)

* fix up examples and documentation

* fix up indenting

* add initial code for a dotnet test runner as part of metaparticle

* add missed file

* renamed env vars to be conssitent and also moved braces to new lines

* Add travis for dotnet (#3)

* add initial travis file

* fix up missing dash

* try again going into the right directory this time

* no need for mono and we can set the dotnet core version

* make build.sh executable

* see what directory we are on

* set to unix type

* build the examples

* move tests to attributes rather than using env var

* Initial Set of Unit Tests For DotNet Metaparticle.Package (metaparticle-io#111)

* Create unit test project and added tests for Metaparticle.Package.Config

* Added unit tests for Config and an initial set of tests for the Driver

* Minor update to Java sharding tutorial instructions (metaparticle-io#112) (metaparticle-io#113)

* Fix typo in tutorial (metaparticle-io#114)

* Support containerizing of Spring Boot apps (metaparticle-io#115)

* Necessary to upgrade PowerMock version in order to run tests
* Additions to gitignore file

* Support sharding. (metaparticle-io#118)

* Update definition of local functions with explicit const (metaparticle-io#120)

* Add some words on Spring Boot support to package Java tutorial (metaparticle-io#121)

* Follow up to previous PR for issue metaparticle-io#6

* Lazy intialize the Docker client. (metaparticle-io#119)

* Fix missing comma, go fmt (metaparticle-io#122)

* Adding rust (metaparticle-io#86)

* learned a touch of rust

* no decorator

* base rust entrypoint

* with bare docker builder and executor (#3)

* Real traits jim (#4)

* add placeholder functions for actual interface
* move builder trait into builder module
* move docker builder struct into correct module
* move existing functions onto trait implementation
* move executor trait to appropriate module
* move executor struct into correct module

* initial builder working

* added docker run support; cleaned up command execs

* refactor to str refs; added readme

* We need strings here, I think

The result of the format! call is a string, (as is the result
of other ways of getting a u64 into a string).

This change makes the method compile without changing anything's
type signature. There might be other was to accomplish this,
but I haven't found one.

* added web example

* use executable's path as Docker context

* wrapped docker cmds in sh

* write dockerfile to docker context explicitly

* fix copy paste error in README

* Python fix + cleanup (metaparticle-io#123)

* general cleanup

* nested options should be processed into objects from dictionaries

* comments on logging; pythonic json read

* Drive-by cleanups (metaparticle-io#126)

* Let requirements match the latest version

* Make print statements Python3-compatible

* insulate more against Py2 -> Py3 changes

* Add python additionalFiles option (metaparticle-io#125)

* add python additionalFiles option

* in case a dir is given

* added tests for additionalFiles

* Lazy intialize the Docker client. (metaparticle-io#127)

* more efficient base image (metaparticle-io#131)

* more efficient base image

* squashed layers

* removed breaking character

* adding certs

* sized down to 6mb and tested with simple http server
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants