GithubHelp home page GithubHelp logo

mesosphere / universe Goto Github PK

View Code? Open in Web Editor NEW
303.0 165.0 427.0 8.62 MB

The Mesosphere Universe package repository.

Home Page: http://mesosphere.github.io/universe

License: Apache License 2.0

Shell 0.09% Python 0.77% Makefile 0.02% Dockerfile 0.02% Mustache 99.11%
package-manager python dcos package repository dcos-data-services-guild

universe's Introduction

Mesosphere Universe

Build Status
CI Build Status
Universe Server Build Status

Mesosphere Universe registry of packages made available for DC/OS Clusters.

Table of Contents

Universe Purpose

You can publish and store packages in the Universe repository. The packages can then be consumed by DC/OS. This git repo facilitates these three necessary functions - to publish, store and consume packages. You can publish and store packages in the Universe repository. The packages can then be consumed by DC/OS. If you are new to Universe and Packages, this Get Started Guide is highly recommended.

Library dependencies

  • jq is installed in your environment.
  • python3 is installed in your environment (minimum python3.5).
  • Docker is installed in your environment.

Publish a Package

To publish a package to Universe, fork this repo and open a Pull Request. A set of automated builds will be run against the Pull Request to ensure the modifications made in the PR leave the Universe well formed. See Creating a Package for details.

Registry of Packages

The registry of published packages is maintained as the contents of this repo in the repo/packages directory. As of repository version 3.0 multiple packaging versions are allowed to co-exist in the same repository. Validation of packages are coordinated based on the packaging version defined in package.json.

Repository Consumption

In order for published packages to be consumed and installed in a DC/OS Cluster the Universe Server needs to be built and run in a location accessible by the DC/OS Cluster. See Universe Server for details on building the Universe artifacts and Server.

Publish a Package

Creating a Package

Each package has its own directory, with one subdirectory for each package revision. Each package revision directory contains the set of files necessary to create a consumable package that can be used by a DC/OS Cluster to install the package.

└── repo/package/F/foo
    ├── 0
    │   ├── command.json
    │   ├── config.json
    │   ├── marathon.json.mustache
    │   ├── resource.json
    │   └── package.json
    ├── 1
    │   ├── command.json
    │   ├── config.json
    │   ├── marathon.json.mustache
    │   ├── resource.json
    │   └── package.json
    └── ...

package.json

Packaging Version
2.0 required
3.0 required
4.0 required

Every package in Universe must have a package.json file which specifies the high level metadata about the package.

Currently, a package can specify one of three values for .packagingVersion either 2.0 or 3.0 or 4.0; which version is declared will dictate which other files are required for the complete package as well as the schema(s) all the files must adhere to. Below is a snippet that represents a version 4.0 package.

See repo/meta/schema/package-schema.json for the full json schema outlining what properties are available for each corresponding version of a package.

{
  "packagingVersion": "4.0",
  "name": "foo",
  "version": "1.2.3",
  "tags": ["mesosphere", "framework"],
  "maintainer": "[email protected]",
  "description": "Does baz.",
  "scm": "https://github.com/bar/foo.git",
  "website": "http://bar.io/foo",
  "framework": true,
  "upgradesFrom": ["1.2.2"],
  "downgradesTo": ["1.2.2"],
  "minDcosReleaseVersion": "1.10",
  "postInstallNotes": "Have fun foo-ing and baz-ing!",
  "licenses": [{"name": "My license", "url": "http://example.com/license_url"}]
}

For the first version of the package, add this line to the beginning of preInstallNotes: This DC/OS Service is currently in preview. There may be bugs, incomplete features, incorrect documentation, or other discrepancies. Preview packages should never be used in production! It will be removed once the package has been tested and used by the community.

.minDcosReleaseVersion
Packaging Version
2.0 not supported
3.0 optional
4.0 optional

Introduced in packagingVersion 3.0, .minDcosReleaseVersion can be specified as a property of package.json. When .minDcosReleaseVersion is specified the package will only be made available to DC/OS clusters with a DC/OS Release Version greater than or equal to (>=) the value specified.

For example, "minDcosReleaseVersion" : "1.8" will prevent the package from being installed on clusters older than DC/OS 1.8.

.upgradesFrom
Packaging Version
2.0 not supported
3.0 not supported
4.0 optional

Introduced in packagingVersion 4.0, .upgradesFrom can be specified as a property of package.json. When .upgradesFrom is specified this indicates to users that the package is able to upgrade from any of the versions listed in the property. It is the resposibility of the package creator to make sure that this is indeed the case.

.downgradesTo
Packaging Version
2.0 not supported
3.0 not supported
4.0 optional

Introduced in packagingVersion 4.0, .downgradesTo can be specified as a property of package.json. When .downgradesTo is specified this indicates to users that the package is able to downgrade to any of the versions listed in the property. It is the resposibility of the package creator to make sure that this is indeed the case.

config.json

Packaging Version
2.0 optional
3.0 optional
4.0 optional

This file describes the configuration properties supported by the package, represented as a json-schema. Each property can specify whether or not it is required, a default value, as well as some basic validation.

Users can then override specific values at installation time by passing an options file to the DC/OS CLI or by setting config values through the DC/OS UI (since DC/OS 1.7).

{
  "type": "object",
  "properties": {
    "foo": {
      "type": "object",
      "properties": {
        "baz": {
          "type": "integer",
          "description": "How many times to do baz.",
          "minimum": 0,
          "maximum": 16,
          "required": false,
          "default": 4
        }
      },
      "required": ["baz"]
    }
  },
  "required": ["foo"]
}

marathon.json.mustache

Packaging Version
2.0 required
3.0 optional
4.0 optional

This file is a mustache template that when rendered will create a Marathon app definition capable of running your service.

Variables in the mustache template will be evaluated from a union object created by merging three objects in the following order:

  1. Defaults specified in config.json

  2. User supplied options from either the DC/OS CLI or the DC/OS UI

  3. The contents of resource.json

{
  "id": "foo",
  "cpus": 1.0,
  "mem": 1024,
  "instances": 1,
  "args": ["{{{foo.baz}}}"],
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "{{resource.assets.container.docker.foo23b1cfe8e04a}}",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 8080,
          "hostPort": 0,
          "servicePort": 0,
          "protocol": "tcp"
        }
      ]
    }
  }
}

See the Marathon API Documentation for more detailed instruction on app definitions.

command.json

Packaging Version
2.0 optional
3.0 optional [Deprecated]
4.0 not supported

As of packagingVersion 3.0, command.json is deprecated in favor of the .cli property of resource.json. See CLI Resources for details.

Describes how to install the package's CLI via pip, the Python package manager. This document represents the format of a Pip requirements file where each element in the array is a line in the requirements file.

{
  "pip": [
    "https://pypi.python.org/packages/source/f/foo/foo-1.2.3.tar.gz"
  ]
}

Packaging version 4.0 does not support command.json. The presence of command.json in the directory will fail the universe validation.

resource.json

Packaging Version
2.0 optional
3.0 optional
4.0 optional

This file contains all of the externally hosted resources (E.g. Docker images, HTTP objects and images) needed to install the application.

See repo/meta/schema/v2-resource-schema.json and repo/meta/schema/v3-resource-schema.json for the full json schema outlining what properties are available for each corresponding version of a package.

{
  "images": {
    "icon-small": "http://some.org/foo/small.png",
    "icon-medium": "http://some.org/foo/medium.png",
    "icon-large": "http://some.org/foo/large.png",
    "screenshots": [
      "http://some.org/foo/screen-1.png",
      "http://some.org/foo/screen-2.png"
    ]
  },
  "assets": {
    "uris": {
      "log4j-properties": "http://some.org/foo/log4j.properties"
    },
    "container": {
      "docker": {
        "23b1cfe8e04a": "some-org/foo:1.0.0"
      }
    }
  }
}
Docker Images

For the Docker image, please use the image ID for the referenced image. You can find this by pulling the image locally and running docker images some-org/foo:1.0.0.

Images

While images is an optional field, it is highly recommended you include icons and screenshots in resource.json and update the path definitions accordingly. Specifications are as follows:

  • icon-small: 48px (w) x 48px (h)
  • icon-medium: 96px (w) x 96px (h)
  • icon-large: 256px (w) x 256px (h)
  • screenshots[...]: 1200px (w) x 675px (h)

NOTE: To ensure your service icons look beautiful on retina-ready displays, please supply 2x versions of all icons. No changes are needed to resource.json - simply supply an additional icon file with the text @2x in the name before the file extension. For example, the icon icon-cassandra-small.png would have a retina-ready alternate image named [email protected].

CLI Resources
Packaging Version
2.0 not supported
3.0 optional
4.0 optional

The new .cli property allows for a package to configure native CLI subcommands for several platforms and architectures.

{
  "cli":{
    "binaries":{
      "darwin":{
        "x86-64":{
          "contentHash":[
            { "algo": "sha256", "value": "..." }
          ],
          "kind": "executable",
          "url":"https://some.org/foo/1.0.0/cli/darwin/dcos-foo"
        }
      },
      "linux":{
        "x86-64":{
          "contentHash":[
            { "algo":"sha256", "value":"..." }
          ],
          "kind":"executable",
          "url":"https://some.org/foo/1.0.0/cli/linux/dcos-foo"
        }
      },
      "windows":{
        "x86-64":{
          "contentHash":[
            { "algo":"sha256", "value":"..." }
          ],
          "kind":"executable",
          "url":"https://some.org/foo/1.0.0/cli/windows/dcos-foo"
        }
      }
    }
  }
}

Submit your Package

Developers are invited to publish a package containing their DC/OS Service by submitting a Pull Request targeted at the version-3.x branch of this repo.

Full Instructions:

  1. Fork this repo and clone the fork:
git clone https://github.com/<user>/universe.git /path/to/universe
  1. Run the verification and build script:
scripts/build.sh
  1. Verify all build steps completed successfully

  2. Ensure the license field in package.json is completed. Without a license attribution we cannot accept pull requests.

  3. Submit a pull request against the version-3.x branch with your changes. Every pull request opened will have a set of automated verifications run against it. These automated verification are reported against the pull request using the GitHub status API. All verifications must pass in order for a pull request to be eligible for merge.

  4. Respond to manual review feedback provided by the DC/OS Community.

  • Each Pull Request to Universe will also be manually reviewed by a member of the DC/OS Community. To ensure your package is able to be made available to users as quickly as possible be sure to respond to the feedback provided.
  1. Add a getting started example of how to install and use the DC/OS package. To add the example, fork the examples repo and send in a pull request. Re-use the format from the existing examples there.

Repository Consumption

In order for Universe to be consumed by DC/OS the build process needs to be run to create the Universe Server. This section describes how to test a package before releasing it to public Universe. See Local Universe for running universe server on air-gapped clusters.

Universe Server

Universe Server is a new component introduce alongside packagingVersion 3.0. In order for Universe to be able to provide packages for many versions of DC/OS at the same time, it is necessary for a server to be responsible for serving the correct set of packages to a cluster based on the cluster's version.

All Pull Requests opened for Universe and the version-3.x branch will have their Docker image built and published to the DockerHub image mesosphere/universe-server. In the artifacts tab of the build results you can find docker/server/marathon.json which can be used to run the Universe Server for testing in your DC/OS cluster. For each Pull Request, click the details link of the "Universe Server Docker image" status report to view the build results.

Build Universe Server locally

  1. Validate and build the Universe artifacts
scripts/build.sh
  1. Build the Universe Server Docker image
DOCKER_IMAGE="my-org/my-image" DOCKER_TAG="my-package" docker/server/build.bash

This will create a Docker image universe-server:my-package and docker/server/target/marathon.json on your local machine

  1. If you would like to publish the built Docker image, run
DOCKER_IMAGE="my-org/my-image" DOCKER_TAG="my-package" docker/server/build.bash publish

Run Universe Server

Using the marathon.json that is created when building Universe Server we can run a Universe Server in our DC/OS Cluster which can then be used to install packages.

Run the following commands to configure DC/OS to use the custom Universe Server (DC/OS 1.8+):

dcos marathon app add marathon.json
dcos package repo add --index=0 dev-universe http://universe.marathon.mesos:8085/repo

For DC/OS 1.7, a different URL must be used:

dcos marathon app add marathon.json
dcos package repo add --index=0 dev-universe http://universe.marathon.mesos:8085/repo-1.7

Consumption Protocol

A DC/OS Cluster can be configured to point to multiple Universe Servers; each Universe Server will be fetched via HTTPS or HTTP. When a DC/OS Cluster attempts to fetch the package set from a Universe Server, the Universe Server will provide ONLY those packages which can be run on the cluster.

For example: A DC/OS 1.6.1 Cluster will only receive packages with a minDcosReleaseVersion less than or equal to (<=) 1.6.1 in the format the DC/OS Cluster expects.

 +----------------------+   +-----------------------+
 │public universe server│   │private universe server│
 +----------------------+   +-----------------------+
                http \         / http
                      \       /
                       \     /
                       +-----+           +--------+
                       │DC/OS│-----------│Marathon│
                       +-----+    http   +--------+

Supported DC/OS Versions

Currently Universe Server provides support for the following versions of DC/OS

DC/OS Release Version Support Level
1.6.1 Deprecated
1.7 Deprecated
1.8 Full Support
1.9 Full Support
1.10 Full Support
1.11 Full Support
1.12 Full Support
1.13 Full Support
2.0 Full Support

universe's People

Contributors

alq666 avatar aquamatthias avatar bamarni avatar benwhitehead avatar brndnmtthws avatar connordoyle avatar dbtucker avatar deric avatar disrani-px avatar dmitrypekar avatar elingg avatar gabrielhartmann avatar gisjedi avatar grampelberg avatar jdef avatar jsancio avatar kensipe avatar mattj-io avatar mesosphere-ci avatar mgummelt avatar nlsun avatar piyush-nimbalkar avatar rishabh96b avatar ryadav88 avatar siggy avatar ssk2 avatar takirala avatar tnachen avatar triclambert avatar vespian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

universe's Issues

memsql and mesos authentication: docker container missing libsasl2-modules

The memsql package does not work when mesos authentication is turned on. Even if you enable authentication with a valid principal and secret using an options file, it will fail with an error like:

Failed to authenticate with master [email protected]:15050: Failed to start the SASL client: SASL(-4): no mechanism available: No worthy mechs found

The solution is to install the libsasl2-modules package in the Docker image. I was able to build a new image with:

FROM memsql/mesos-scheduler
RUN apt-get -y install libsasl2-modules

After tweaking the marathon.json to use my image, the memsql framework was able to start up successfully with mesos authentication enabled.

I'm not sure this is the right place for this issue. It does not appear that the memsql/mesos-scheduler docker image is open source - at least nowhere that I could find. I did send the same issue through memsql's bug tracker. But, if there is another place I should open this issue, please let me know where.

A non-obtrusive convention for documenting packages?

As others have noted it can be difficult to mentally parse each of the different configurations, versions, schemas, etc. for all of these different packages. Personally, I've noticed everything tends to blur together when navigating between package folders -- a problem that will obviously get worse as the repo grows.

One solution I'd like to propose is adopting the convention of adding a README.md scoped to either the package or each package version. This README would include human readable documentation along with a description, a manifest of all the configuration options, examples, and so on, perhaps similar to the information as shown in the DCOS docs (https://docs.mesosphere.com/services/spark/), but more concise.

Consider it like a "man page", that doesn't depend on a Unix environment.

Here's an example:

└── foo
    ├── 0
    │   ├── command.json
    │   ├── config.json
    │   ├── marathon.json
    │   ├── package.json
    │   └── README.md
    ├── 1
    │   ├── command.json
    │   ├── config.json
    │   ├── marathon.json
    │   ├── package.json
    │   └── README.md
    └── ...

The README could be optionally scoped to the package folder level as well, giving precedence to the README local to that version where present:

└── foo
    ├── README.md
    ├── 0
    │   ├── command.json
    │   ├── config.json
    │   ├── marathon.json
    │   ├── package.json
    │   └── README.md
    ├── 1
    │   ├── command.json
    │   ├── config.json
    │   ├── marathon.json
    │   └── package.json
    └── ...

Benefits:

  • Github treats the README.md differently than other files, rendering formatted markdown in the browser when navigating a repo.
  • "OCP" friendly: extends rather than modifies existing functionality, and doesn't require any initial burden of code implementation or modification.
  • Markdown renders to HTML so this could be embedded in the online documentation, rather than requiring unnecessary duplication.
  • Enables simple and accessible documentation from the command line in the form of something like dcos package spark --help or dcos package --info spark. This sort of documentation seems to be currently lacking within the dcos package subcommand (I always seem to be going back and forth between my terminal and several tabs of DCOS documentation in my browser).

Anyhow, just wanted to throw this out there and hear any comments/feedback/criticisms.

Downloads from downloads.mesosphere.* using wrong URL

All things which download stuff from downloadse.mesosphere.com should use the url: https://downloads.mesosphere.com.

Old URLs that are bad:
s3-direct: https://s3.amazonaws.com/*
Old domain: https://downloads.mesosphere.io
Non-https: http://*.mesosphere.{io,com}

Change file name of marathon template

It's conventional for mustache-templated files to be named with a .mustache suffix. Consider changing the name of the marathon template to marathon.json.mustache.

The provided scripts generate invalid json schema

I have following installation:
python 2.7.9
jsonschema 2.5.1

If I build the package with the script provided ./scripts/build.sh, an invalid json is generated.
The first entry of the packages looks like this:

{
  "packages":[
    {
      "versions":{}
    },

What am I doing wrong?

Add a latest.json to each package

This makes it so a client can just get: repo/packages/C/chronos/latest.json to figure out the url for the latest package.json, marathon.json, and related files. Otherwise clients have to implement searching directories for the newest version.

config.json should be documented

It's unclear what config.json is for, and it seems that at least the "properties" property is required, which is undocumented. I was only able to continue by creating a dummy config.json.

Marathon-user framework registers using hostname instead of LIBPROCESS_IP

It seems that the marathon-user framework is improperly registering in zookeeper the hostname of the agent and not LIBPROCESS_IP. Here is what I'm seeing on my DCOS on Ubuntu test environment:

[2015-12-10 23:10:10,015] INFO Starting Marathon 0.11.1 with --master zk://master.mesos:2181/mesos --checkpoint --decline_offer_duration 5000 --http_port 23898 --event_stream_max_outstanding_messages 50 --failover_timeout 604800 --framework_name marathon-user --ha --leader_proxy_connection_timeout 5000 --leader_proxy_read_timeout 10000 --local_port_max 20000 --local_port_min 10000 --marathon_store_timeout 2000 --max_tasks_per_offer 1 --max_tasks_per_offer_cycle 1000 --min_revive_offers_interval 5000 --revive_offers_for_new_apps --scale_apps_initial_delay 15000 --scale_apps_interval 300000 --zk_session_timeout 1800000 --zk zk://master.mesos:2181/universe --mesos_leader_ui_url /mesos --zk_compression --zk_compression_threshold 65536 (mesosphere.marathon.Main$:86)
[2015-12-10 23:10:12,764] INFO Connecting to Zookeeper... (mesosphere.marathon.Main$:38)
[2015-12-10 23:10:12,793] INFO Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,793] INFO Client environment:host.name=slaveprivate0 (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,794] INFO Client environment:java.version=1.8.0_66-internal (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,794] INFO Client environment:java.vendor=Oracle Corporation (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,794] INFO Client environment:java.home=/usr/lib/jvm/java-8-openjdk-amd64/jre (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,795] INFO Client environment:java.class.path=./bin/../target/marathon-assembly-0.11.1.jar (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,795] INFO Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,795] INFO Client environment:java.io.tmpdir=/tmp (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,796] INFO Client environment:java.compiler=<NA> (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,796] INFO Client environment:os.name=Linux (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,796] INFO Client environment:os.arch=amd64 (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,796] INFO Client environment:os.version=4.2.0-19-generic (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,797] INFO Client environment:user.name=root (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,797] INFO Client environment:user.home=/root (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,804] INFO Client environment:user.dir=/marathon (org.apache.zookeeper.ZooKeeper:100)
[2015-12-10 23:10:12,805] INFO Initiating client connection, connectString=master.mesos:2181 sessionTimeout=10000 watcher=com.twitter.common.zookeeper.ZooKeeperClient$3@741b3bc3 (org.apache.zookeeper.ZooKeeper:438)
[2015-12-10 23:10:12,848] INFO Opening socket connection to server 10.0.4.7/10.0.4.7:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn:975)
[2015-12-10 23:10:13,132] INFO Socket connection established to 10.0.4.7/10.0.4.7:2181, initiating session (org.apache.zookeeper.ClientCnxn:852)
[2015-12-10 23:10:13,197] INFO Session establishment complete on server 10.0.4.7/10.0.4.7:2181, sessionid = 0x1518d951e660005, negotiated timeout = 10000 (org.apache.zookeeper.ClientCnxn:1235)
[2015-12-10 23:10:14,109] WARN Method [public javax.ws.rs.core.Response mesosphere.marathon.api.MarathonExceptionMapper.toResponse(java.lang.Throwable)] is synthetic and is being intercepted by [mesosphere.marathon.DebugModule$MetricsBehavior@1e6b9a95]. This could indicate a bug.  The method may be intercepted twice, or may not be intercepted at all. (com.google.inject.internal.ProxyFactory:101)
[2015-12-10 23:10:14,738] INFO Logging initialized @5629ms (org.eclipse.jetty.util.log:186)
[2015-12-10 23:10:15,950] INFO Registering in Zookeeper with hostPort:slaveprivate0:23898 (mesosphere.marathon.MarathonModule:240)
[2015-12-10 23:10:16,110] INFO Calling reviveOffers is enabled. Use --disable_revive_offers_for_new_apps to disable. (mesosphere.marathon.core.flow.FlowModule:42)

Note the line INFO Registering in Zookeeper with hostPort:slaveprivate0:23898. This hostname can not be relied on as being globally resolvable on a DCOS cluster. I suspect a simple fix would be adding to the marathon startup cmd the following flag: --hostname $LIBPROCESS_IP.

./scripts/build.sh

The requirement for contributors to run ./scripts/build.sh is undocumented. Better yet, maybe it could be made into a commit hook.

HelloWorld is not available from public internet

Now that we have public vs. private slaves, we may want to tell Marathon to deploy HelloWorld to a public slave (via acceptedResourceRoles) so that users can actually see it. Alternatively, we'll have to add a router/LB for HelloWorld.
Since not all universe users are on DCOS-proper, let's make this a configuration parameter, not hardcoded in.

pre-commit hook not working?

Hi!
Is the pre-commit hook working for anyone?

My issue is that the pre-commit hook sets UNIVERSE_DIR=$GIT_HOOKS_DIR/.. but this is not correct as the dir structure is universe/.git/hooks . Thus UNIVERSE_DIR is set to universe/.git and all subsequent script calls fail because UNIVERSE_DIR/scripts cannot be found (since bash is looking for the non-existing universe/.git/.scripts dir).

I'm looking into the simplest way to fix this.
Looks like updating to UNIVERSE_DIR=$GIT_HOOKS_DIR/../.. does the trick.

Mustache templates are holding us back!

Mustache templates are very limited (by design), and IMO make it difficult to implement certain features in the Universe. I'd like it if we could explore some more useful templating systems. For example, dealing with trailing commas in JSON (such as in a list or set, or at the end of a JSON block) with mustache is pretty much impossible.

Kafka broker param defaults aren't great

At the moment, the default Kafka broker params are less than ideal. For example, the default number of partitions is 1 (which isn't very intuitive). It would be great if there was a way (through DCOS) to specify more appropriate defaults, or even just change the defaults. For example, the number of partitions should be a nice number like 12, 24, or 48.

In the meantime, I created my own package with the server config and my preferred defaults.

cc @joestein

We need a display name for packages

Right now in the /package/search and /package/list endpoints I get package name. These are all lowercase, and I guess have technical significance. Can we get a display name, that does not have a technical significance?

Cc. @ashenden and @rcorral

Add an object to the package metadata to describe images.

For example,

{
  "images": {
    "icon-small": "http://some.org/foo/small.png",
    "icon-medium": "http://some.org/foo/medium.png",
    "icon-large": "http://some.org/foo/large.png",
    "screenshots": [
      "http://some.org/foo/screen-1.png",
      "http://some.org/foo/screen-2.png",
      "http://some.org/foo/screen-3.png"
    ]
  }
}

We also should add size and format recommendations as non-normative elements of the spec.

Allow the specification of package dependencies.

How should this look?

Simple approach: pinned dependency versions.
e.g. Package A can declare a dependency on package B at version 1.2.3.

More complicated: semver-aware version expressions.
e.g. Package A can declare a dependency on package B at any version that satisfies 1.2.+.

Note that dependencies could be transitive, so we'll need logic to disallow cycles.

improve custom configuration options for hdfs

Right now, you can specify a custom mesos-site.xml via hdfs.custom-config in an options.json file when installing hdfs (although it currently does not get distributed to slaves - see https://github.com/mesosphere/dcos-hdfs/issues/5). However, you do not have the ability to specify any other *-site.xml configuration files (we need to customize hdfs-site.xml, for example). Currently, we can get past this by maintaining a custom package with our configuration and specifying the url to it in hdfs.scheduler-uris but it would be great if we didn't have to do this.

Kafka Package fails health check

After running dcos package install kafka, the Marathon healthcheck just hangs until it times out and fails the task, never getting the kafka service out of a deploying state. When I SSH onto the slave running the process, curling the port that kafka is running on at the /health location times out.

Remove hardcoded `hdfs://hdfs/` prefix from HDFS health check commands.

If any user has modified the cluster name to something other than 'hdfs', the current health check command won't work. We should double check the value of fs.default.name/fs.defaultFS that (a) DCOS-image ships with, and (b) the HDFS framework bundles in, since that's how hadoop fs is able to infer the hdfs://hdfs/ prefix.

incorrect marathon templates for cassandra

In the cassandra package, the keys (defined in config.json) for specifying mesos authentication principal and secret are "cassandra.framework.authentication.principal" and "cassandra.framework.authentication.secret". However, in the marathon.json template, the mustache sections are keyed with just "framework.authentication.principal" and "framework.authentication.secret":

https://github.com/mesosphere/universe/blob/version-1.x/repo/packages/C/cassandra/1/marathon.json#L67
https://github.com/mesosphere/universe/blob/version-1.x/repo/packages/C/cassandra/1/marathon.json#L70

So, if you turn on authentication using an options file when installing cassandra, the authentication information is never set and the cassandra package will not install correctly.

Cassandra sub-cli has hard dependency on DCOS_CONFIG ENV Variable

Cassandra package sub-cli seems to be misconfigured. Has a hard requirement for
DCOS_CONFIG ENV variable to be set. I thought these dependencies were removed.
Fix would be to force user to set the variable to dcos.toml file or update:
"/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcos/util.py"
to remove the requirement.

$ dcos cassandra node list --json cassandra.dcos
Traceback (most recent call last):
File "/Users/tkraus/.dcos/subcommands/cassandra/env/bin/dcos-cassandra", line 9, in
load_entry_point('dcoscassandra===SNAPSHOT', 'console_scripts', 'dcos-cassandra')()
File "/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcoscassandra/cli.py", line 47, in main
return _main()
File "/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcoscassandra/cli.py", line 63, in _main
return cmds.execute(_cmds(), args)
File "/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcos/cmds.py", line 43, in execute
return function(*params)
File "/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcoscassandra/cli.py", line 208, in _node_list
client = cassandra.create_client(service_name)
File "/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcoscassandra/cassandra.py", line 21, in create_client
config = util.get_config()
File "/Users/tkraus/.dcos/subcommands/cassandra/env/lib/python2.7/site-packages/dcos/util.py", line 115, in get_config
os.environ[constants.DCOS_CONFIG_ENV])
File "/Users/tkraus/.dcos/subcommands/cassandra/env/bin/../lib/python2.7/UserDict.py", line 23, in getitem
raise KeyError(key)
KeyError: 'DCOS_CONFIG'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.