message: quay-enterprise/: Versions s/2.3.1/2.3.2/

diff:
@@ -28,7 +28,7 @@ One or more build workers will communicate with Quay Enterprise to build new con
Pull down the latest copy of the image. **Make sure to pull the version tagged matching your Quay Enterprise version**.
```sh
-docker pull quay.io/coreos/quay-builder:v2.3.1
+docker pull quay.io/coreos/quay-builder:v2.3.2
```
### Run the build worker image
@@ -45,7 +45,7 @@ Use the environment variable `SERVER` to tell the worker the hostname at which Q
Here's what the full command looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.1
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.2
```
When the container starts, each build worker will auto-register and start building containers once a job is triggered and it is assigned to a worker.
@@ -53,7 +53,7 @@ When the container starts, each build worker will auto-register and start buildi
If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate directory found at the host's `/path/to/ssl` looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.1 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.2 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
```
### Setup GitHub build (optional)

diff:
@@ -46,7 +46,7 @@ The `config.json` file will look like this:
}
```
-`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.3.1` to download the container.
+`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.3.2` to download the container.
## Setting up the directories
@@ -62,7 +62,7 @@ mkdir config
Run the following command, replacing `/local/path/to/the/config/directory` and `/local/path/to/the/storage/directory` with the absolute paths to the directories created above:
```
-sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.3.1
+sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.3.2
```
<img src="img/db-setup-full.png" class="img-center" alt="Quay Enterprise Setup Screen"/>

diff:
@@ -34,7 +34,7 @@ Obtain the quay container's `CONTAINER ID` with `docker ps`:
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
-5a3e82c4a75f quay.io/coreos/quay:v2.3.1 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
+5a3e82c4a75f quay.io/coreos/quay:v2.3.2 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
```
Restart the container with that ID:

diff:
@@ -22,7 +22,7 @@ spec:
secretName: quay-enterprise-config-secret
containers:
- name: quay-enterprise-app
- image: quay.io/coreos/quay:v2.3.1
+ image: quay.io/coreos/quay:v2.3.2
ports:
- containerPort: 80
volumeMounts:


message: insert-custom-cert: Denit k8s section

change_type: MODIFY

diff:
@@ -58,7 +58,7 @@ When deployed on Kubernetes, QE mounts in a secret as a volume to store config a
To get around this error, a base64 encoded certificate can be added to the secret *after* Quay Enterprise has been deployed.
-Begin by base64 encoing the contents of the certificate:
+Begin by base64 encoding the contents of the certificate:
```
$ cat ca.crt
@@ -87,7 +87,4 @@ Add an entry for the cert and paste the full base64 encoded string under the ent
c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
```
-Finally, recycle all QE pods for the certificate to be added to the QE container.
-
-
-
+Finally, recycle all QE pods. Use `kubectl delete` to remove all QE pods. The QE Deployment will automatically schedule replacement pods with the new certificate data.

license: Apache License 2.0

repo: coreos/docs

original_message: insert-custom-cert: Denit k8s section


message: polish words

diff:
@@ -4,15 +4,19 @@ etcd is an open-source distributed key value store that provides shared configur
Application containers running on your cluster can read and write data into etcd. Common examples are storing database connection details, cache settings, feature flags, and more. This guide will walk you through a basic example of reading and writing to etcd then proceed to other features like TTLs, directories and watching a prefix. This guide is way more fun when you've got at least one Container Linux machine up and running — try it on [Amazon EC2](../os/booting-on-ec2.md) or locally with [Vagrant](../os/booting-on-vagrant.md).
-*Are you installing/running etcd on Container Linux? Check out the [etcd on Container Linux FAQ][os-faq] to clarify some common misconceptions.*
-
Complete etcd API Docs
+The [version 3 series is the current edition of etcd][etcd3-blog]. Version 3 etcd binaries are *not* included in the Container Linux filesystem. Instead, etcd is distributed in a container fetched by an included system service. Read on below in [setting up etcd][setup-internal-anchor] and see the [etcd on Container Linux FAQ][os-faq] for more details on etcd v3 in a container on Container Linux.
+
## Setting up etcd
Container Linux's `etcd-member.service` systemd unit knows how to fetch and run the current etcd v3.x container image, providing etcd v3 without requiring the binary to be present in every default OS installation.
-etcd v3 startup can be configured at a new node's first boot with a [Container Linux Config][cl-configs]. To upgrade an existing etcd v2 cluster rather than deploy a new one, start with the [etcd v2 to v3 upgrade doc][etcd-v3-upgrade]. A Container Linux Config can be used to set any etcd option, like in this example:
+etcd v3 startup can be configured at a new node's first boot with a [Container Linux Config][cl-configs].
+
+To upgrade an existing etcd v2 cluster rather than deploy a new one, start with the [etcd v2 to v3 upgrade doc][etcd-v3-upgrade].
+
+A Container Linux Config can be used to set any etcd option, like in this example:
```container-linux-config
etcd:
@@ -226,6 +230,8 @@ $ curl http://127.0.0.1:2379/v2/keys/foo
Projects using etcd
-[etcd-v3-upgrade]: https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md
[cl-configs]: ../os/provisioning.md
+[etcd3-blog]: https://coreos.com/blog/toward-etcd-v3-in-container-linux.html
+[etcd-v3-upgrade]: https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md
[os-faq]: os-faq.md
+[setup-internal-anchor]: #setting-up-etcd

original_message: polish words


message: polish faq to suit

diff:
# etcd on Container Linux FAQ
-Are you planning on running etcd on CoreOS Container Linux? The following FAQ clarifies some common misconceptions.
+Questions often asked when using etcd v3 on CoreOS Container Linux
## What is the current version of etcd?
-[v3][etcd-latest-version].
+The version 3 series is the latest edition of the etcd binary and API. The [current release is the latest release in the version 3 series][etcd-latest-version].
## Where do I find etcd v3 in Container Linux?
-Container Linux includes a systemd service, [etcd-member.service][etcd-member-service], which pulls and runs a desired version of etcd (defaults to v3) in a rkt container. This functions as if the etcd binary was being run, but does not require the binary to be installed on your Container Linux node.
+Container Linux includes a systemd service, [etcd-member.service][etcd-member-service], that knows how to fetch and run etcd v3 in a Linux container. No etcd v3-series binary is directly included in the Container Linux filesystem.
-Newer versions of the etcd binary (v3) are not planned to be included in the OS.
+## Why is etcd v2 still part of the Container Linux filesystem?
-## Why is etcd v2 still in the os?
+For reasons of compatibility, previous, deprecated versions of etcd, named `etcd` and `etcd2`, are included in the Container Linux filesystem until they complete their [sunset schedules][etcd3-blog] and are finally removed.
-The etcd binary will be included in the OS until June, 2018.
+The etcd (v0) binary will be removed from Container Linux in May, 2017.
-The preferred way to run etcd in Container Linux is to use the etcd-member service mentioned above in the first question.
+The etcd2 binary will be included in the OS until June, 2018.
-## When will v3 be included in the OS image?
+The recommended way to run etcd on Container Linux is to use the etcd-member service.
-Never.
+## When will v3 be included in the OS image?
-Etcd v3 is shipped as a container and used via the etcd-member systemd service (see the first question for more information).
+Version 3-series etcd binaries are packaged in a Linux container and instantiated by the `etcd-member.service` systemd unit.
# Can I curl the v3 api?
-No.
-
-The etcd v3 API uses gRPC, which can not be interacted with via curl. Use etcdctl to interact with etcd clusters as this can be used to interact with a given cluster's v3 *and* v2 APIs.
-
-# How do I provision machines with etcd and config?
+No. The etcd v3 API uses gRPC rather than plain text HTTP. Use `etcdctl` to interact with the etcd v3 API.
-The preferred way to provision *any* Container Linux machine is to write a [Container Linux Config][clconfig]. This config allows easy configuration of networking, storage, users, docker, flannel, etcd, systemd, update channel, image verification, and locksmith.
+# How do I provision etcd cluster members?
-As part of the installation process, this YAML file is converted into an Ignition config. On first system boot the Container Linux node is configured into the desired state specified in the Container Linux Config. See an example of how to use this in the [Getting started with etcd][getting-started] guide.
+The preferred way to provision *any* Container Linux machine is with a [Container Linux Config][clconfig]. See an example Container Linux Config for etcd in the [getting started with etcd guide][getting-started].
# Can etcd be configured with cloud-config?
The preferred way to configure a Container Linux machine is with Container Linux configs and Ignition. The Container Linux Config Transpiler docs include [an etcd configuration example][clct-etcd-example].
-Cloud-Config is still a supported configuration method, however it does not have any etcd v3 specific support.
+[etcd3-blog]: https://coreos.com/blog/toward-etcd-v3-in-container-linux.html
[etcd-latest-version]: https://github.com/coreos/etcd/releases
[etcd-member-service]: https://github.com/coreos/coreos-overlay/blob/master/app-admin/etcd-wrapper/files/etcd-member.service
[getting-started]: https://coreos.com/etcd/docs/latest/getting-started-with-etcd.html

original_message: polish faq to suit


message: quay-enterprise/: Update version string from 2.3.2 to 2.3.3

diff:
@@ -28,7 +28,7 @@ One or more build workers will communicate with Quay Enterprise to build new con
Pull down the latest copy of the image. **Make sure to pull the version tagged matching your Quay Enterprise version**.
```sh
-docker pull quay.io/coreos/quay-builder:v2.3.2
+docker pull quay.io/coreos/quay-builder:v2.3.3
```
### Run the build worker image
@@ -45,7 +45,7 @@ Use the environment variable `SERVER` to tell the worker the hostname at which Q
Here's what the full command looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.2
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.3
```
When the container starts, each build worker will auto-register and start building containers once a job is triggered and it is assigned to a worker.
@@ -53,7 +53,7 @@ When the container starts, each build worker will auto-register and start buildi
If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate directory found at the host's `/path/to/ssl` looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.2 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.3 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
```
### Setup GitHub build (optional)

diff:
@@ -46,7 +46,7 @@ The `config.json` file will look like this:
}
```
-`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.3.2` to download the container.
+`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.3.3` to download the container.
## Setting up the directories
@@ -62,7 +62,7 @@ mkdir config
Run the following command, replacing `/local/path/to/the/config/directory` and `/local/path/to/the/storage/directory` with the absolute paths to the directories created above:
```
-sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.3.2
+sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.3.3
```
<img src="img/db-setup-full.png" class="img-center" alt="Quay Enterprise Setup Screen"/>

diff:
@@ -34,7 +34,7 @@ Obtain the quay container's `CONTAINER ID` with `docker ps`:
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
-5a3e82c4a75f quay.io/coreos/quay:v2.3.2 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
+5a3e82c4a75f quay.io/coreos/quay:v2.3.3 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
```
Restart the container with that ID:

diff:
@@ -22,7 +22,7 @@ spec:
secretName: quay-enterprise-config-secret
containers:
- name: quay-enterprise-app
- image: quay.io/coreos/quay:v2.3.2
+ image: quay.io/coreos/quay:v2.3.3
ports:
- containerPort: 80
volumeMounts:


message: STYLE: cf Economist on hyphens

diff:
@@ -14,7 +14,7 @@ There are a few other common ways to write or not write things:
* Expand acronyms on their introduction in a document, with the short form following in parentheses: Trusted Platform Module (TPM).
* Terms of art that are not commands or other literal text should often be italicized on their first appearance in a document: *Kubernetes* is a good example.
-* The hyphen is overused and most English compounds do not require it.
+* The [hyphen is overused and most English compounds do not require it][economist-hyphens].
* There is one space (` `) after a period (aka *full stop*, `.`), comma (`,`), semicolon (`;`) and other marks of punctuation.
### Specifics
@@ -240,6 +240,7 @@ Things you can use when you don't want to expose working URLs, IP Addresses, or
[command-line-grammar]: #command-line-grammar
[configuring-dns]: os/configuring-dns.md
[coreos-docs]: https://coreos.com/docs/
+[economist-hyphens]: http://www.economist.com/news/books-and-arts/21723088-hyphens-can-be-tricky-they-need-not-drive-you-crazy-hysteria-over-hyphens
[eos]: https://faculty.washington.edu/heagerty/Courses/b572/public/StrunkWhite.pdf "The Elements of Style"
[githubmd]: https://help.github.com/articles/github-flavored-markdown/
[headings]: #headings

original_message: STYLE: cf Economist on hyphens


message: STYLE: Reorg CLI grammar. Add links to docu RFCs.

diff:
@@ -42,6 +42,52 @@ CoreOS is written in CamelCase. The Linux distribution is called CoreOS Containe
These capitalization rules are traditional and arcane. They should eventually give way to all project and product names being capitalized as proper nouns, except when given literally, e.g., `rkt run docker://nginx` or `/var/lib/rkt`.
+## Unix style: Command line grammar
+
+*Commands* *invoke* or *execute* programs. Commands *take* *arguments* and *accept* *options*, which themselves may be *set* to *values*.
+
+### Example: Documenting `echo(1)`
+
+In this simple command line:
+
+```sh
+$ echo -n Example
+Example
+```
+
+`echo` is the command, and `Example` is the argument. The option `-n` suppresses the terminating newline usually emitted by `echo`. A binary option represented by a single letter, like `-n`, is sometimes called a *flag*. The `echo(1)` command prints its argument on the standard output, and a good shell excerpt often includes the expected output of commands, as shown here. The shell prompt character `$` distinguishes input from output.
+
+### Example: Documenting subcommands
+
+Some command lines are more complex. Many commands operate through a set of *subcommands*. `rkt` and several other relevant programs follow this pattern.
+
+```sh
+$ rkt run --debug example.aci
+[...]
+```
+
+In this case the argument to `rkt`, `run`, is a subcommand. `run` in turn accepts the `--debug` option to modify how it executes the ACI image specified by its own argument, `example.aci`
+
+### Example: Documenting long command lines
+
+Some commands pack many subcommands, arguments, and options on a single line. It is good practice to break such long command lines with newlines, escaped with backslash (`\`), because lines inside code blocks are not soft-wrapped in most presentations. For very long command lines, choose points that break the parameters into logical groups. Lines so wrapped are not indented for vertical alignment.
+
+```sh
+$ docker run --name docsbuilder \
+-i -t \
+-p 80:9001 -p 443:9443 \
+-v /home/core/site:/app:rw \
+-v /etc/ssl/certs:/etc/ssl/certs:ro \
+quay.io/coreosinc/coreos-pages-builder scripts/deploy stage
+```
+
+### Placeholder conventions
+
+Use these standard example entities to avoid exposing real URLs, IP Addresses, or other data.
+
+* URL: [example.com][rfc2606s3]
+* IP Address: [Any in the range 203.0.113.0/24][rfc5737]
+
## Source formatting
CoreOS documentation is written in [Markdown][mdhome], a simple way to annotate text to indicate presentation typesetting. Markdown source is intended to be a plain text human-readable version of the document, even before conversion to HTML for the browser or other display.
@@ -102,6 +148,12 @@ The abridged skeletal markdown source for this document's headings:
[...]
+## Unix style: Command line grammar
+
+### Example: Documenting `echo(1)`
+
+[...]
+
## Hyperlink considerations
### Naming
@@ -112,12 +164,6 @@ The abridged skeletal markdown source for this document's headings:
[...]
-## Command line grammar
-
-### Example: Documenting `echo(1)`
-
-[...]
-
## File name extension conventions
```
@@ -163,45 +209,6 @@ For example, there are two ways to refer to the [CoreOS quick start guide][quick
CoreOS documents have two major publication targets: the [coreos.com documentation library][coreos-docs], and [GitHub's Markdown presentation][githubmd]. The deployment scripts used to build the CoreOS site handle some of the wrinkles arising between the two targets. These scripts expect links to other CoreOS project documentation to refer to the Markdown source; that is, to end with the `.md` file extension. The deployment scripts rewrite hyperlinks to replace that extension with `.html` for presentation. This allows the links to be valid in either context. External links are not rewritten.
-## Command line grammar
-
-*Commands* *invoke* or *execute* programs. Commands *take* *arguments* and *accept* *options*, which themselves may be *set* to *values*.
-
-### Example: Documenting `echo(1)`
-
-In this simple command line:
-
-```sh
-$ echo -n Example
-Example
-```
-
-`echo` is the command, and `Example` is the argument. The option `-n` suppresses the terminating newline usually emitted by `echo`. A binary option represented by a single letter, like `-n`, is sometimes called a *flag*. The `echo(1)` command prints its argument on the standard output, and a good shell excerpt often includes the expected output of commands, as shown here. The shell prompt character `$` distinguishes input from output.
-
-### Example: Documenting subcommands
-
-Some command lines are more complex. Many commands operate through a set of *subcommands*. `rkt` and several other relevant programs follow this pattern.
-
-```sh
-$ rkt run --debug example.aci
-[...]
-```
-
-In this case the argument to `rkt`, `run`, is a subcommand. `run` in turn accepts the `--debug` option to modify how it executes the ACI image specified by its own argument, `example.aci`
-
-### Example: Documenting long command lines
-
-Some commands pack many subcommands, arguments, and options on a single line. It is good practice to break such long command lines with newlines, escaped with backslash (`\`), because lines inside code blocks are not soft-wrapped in most presentations. For very long command lines, choose points that break the parameters into logical groups. Lines so wrapped are not indented for vertical alignment.
-
-```sh
-$ docker run --name docsbuilder \
--i -t \
--p 80:9001 -p 443:9443 \
--v /home/core/site:/app:rw \
--v /etc/ssl/certs:/etc/ssl/certs:ro \
-quay.io/coreosinc/coreos-pages-builder scripts/deploy stage
-```
-
## Example: Documenting code blocks
Insert triple backtick (grave accent) characters on a new line before and after a block of code. A tag, such as `yaml`, `sh`, `json`, or `ini`, can be placed after the opening backticks to declare the language in the block. Markdown syntax is not interpreted within the gated code block, but special characters are replaced with HTML entities.
@@ -230,12 +237,6 @@ Some file types are commonly identified with more than one file name extension.
* YAML: `file.yaml` is preferred to `file.yml`
* HTML: `file.html`, not `file.htm`
-## Placeholder conventions
-
-Things you can use when you don't want to expose working URLs, IP Addresses, or other info.
-
-* URL: example.com
-* IP Address: Any in the range 203.0.113.0/24
[command-line-grammar]: #command-line-grammar
[configuring-dns]: os/configuring-dns.md
@@ -247,4 +248,6 @@ Things you can use when you don't want to expose working URLs, IP Addresses, or
[hyperlink-considerations]: #hyperlink-considerations
[mdhome]: https://daringfireball.net/projects/markdown/syntax
[quickstart]: os/quickstart.md "Relative link from here to CoreOS Quick Start"
+[rfc2606s3]: https://tools.ietf.org/html/rfc2606#section-3
+[rfc5737]: https://tools.ietf.org/html/rfc5737
[style]: STYLE.md "CoreOS Documentation Style"


message: quay-enterprise: add doc on using helm registry with self-signed cert

change_type: ADD

diff:
+## Using Helm Registry Plug-in with a self-signed certificate
+
+
+
+This document assumes you have deployed Quay Enterprise with a self-signed certificate.
+
+[Appr](https://github.com/app-registry/appr) makes use of the python requests library, which by default only trusts a standard set of certificates. This prevents helm from interacting with a Quay Enterprise instance that is using a self-signed certificate.
+
+The error is reported as a connection error when attempting to interact with the registry:
+
+```
+$ helm registry version https://reg.example.com
+Api-version: .. Connection error
+Client-version: 0.3.7
+```
+
+To get around this restriction add the CA for the self signed certificate to the default list of trusted Certificate Authorities. The following links highlight how this can be accomplished:
+
+[Container Linux](https://coreos.com/os/docs/latest/adding-certificate-authorities.html)
+
+[Red Hat](https://access.redhat.com/solutions/1519813)
+
+[Ubuntu/Debian](https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate)
+
+
+
+### Add an environment variable that points python-requests to the correct certificate chain:
+
+```
+$ export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
+```
+
+
+This will allow helm to connect to Quay Enterprise:
+
+````
+$ helm registry version reg.example.com
+Api-version: {u'cnr-api': u'0.2.7'}
+Client-version: 0.3.7
+````


message: quay-enterprise: fixes for custom-cert-kube-apps.md

diff:
## Using Helm Registry Plug-in with a self-signed certificate
+This document assumes you have deployed [Quay Enterprise with a self-signed certificate.][self-signed]
-
-This document assumes you have deployed Quay Enterprise with a self-signed certificate.
-
-[Appr](https://github.com/app-registry/appr) makes use of the python requests library, which by default only trusts a standard set of certificates. This prevents helm from interacting with a Quay Enterprise instance that is using a self-signed certificate.
+[Appr](https://github.com/app-registry/appr) uses a [Python Requests library][python-requests], which trusts only a standard set of certificates by default. This prevents Helm from interacting with a Quay Enterprise instance that is using a self-signed certificate.
The error is reported as a connection error when attempting to interact with the registry:
@@ -14,27 +12,28 @@ Api-version: .. Connection error
Client-version: 0.3.7
```
-To get around this restriction add the CA for the self signed certificate to the default list of trusted Certificate Authorities. The following links highlight how this can be accomplished:
-
-[Container Linux](https://coreos.com/os/docs/latest/adding-certificate-authorities.html)
+To work around this restriction, add the CA for the self-signed certificate to the default list of trusted Certificate Authorities. This process is described for the following platforms:
-[Red Hat](https://access.redhat.com/solutions/1519813)
+[Container Linux][container-linux]
+[Red Hat][red-hat]
+[Ubuntu/Debian][ubuntu]
-[Ubuntu/Debian](https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate)
-
-
-### Add an environment variable that points python-requests to the correct certificate chain:
+### Add an environment variable that points Python Requests to the correct certificate chain:
```
$ export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
```
-
-This will allow helm to connect to Quay Enterprise:
+This will allow Helm to connect to Quay Enterprise:
````
$ helm registry version reg.example.com
Api-version: {u'cnr-api': u'0.2.7'}
Client-version: 0.3.7
````
+[self-signed]: quay-ssl.md
+[python-requests]: http://docs.python-requests.org/en/master/
+[container-linux]: https://coreos.com/os/docs/latest/adding-certificate-authorities.html
+[red-hat]: https://access.redhat.com/solutions/1519813
+[ubuntu]: https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate


message: quay-enterprise: custom-cert-kube-apps.md add dashes for platforms

diff:
@@ -14,9 +14,9 @@ Client-version: 0.3.7
To work around this restriction, add the CA for the self-signed certificate to the default list of trusted Certificate Authorities. This process is described for the following platforms:
-[Container Linux][container-linux]
-[Red Hat][red-hat]
-[Ubuntu/Debian][ubuntu]
+- [Container Linux][container-linux]
+- [Red Hat][red-hat]
+- [Ubuntu/Debian][ubuntu]
### Add an environment variable that points Python Requests to the correct certificate chain:
@@ -32,6 +32,8 @@ $ helm registry version reg.example.com
Api-version: {u'cnr-api': u'0.2.7'}
Client-version: 0.3.7
````
+
+
[self-signed]: quay-ssl.md
[python-requests]: http://docs.python-requests.org/en/master/
[container-linux]: https://coreos.com/os/docs/latest/adding-certificate-authorities.html


message: quay-enterprise: custom-cert-kube-apps.md grammar link fix

diff:
This document assumes you have deployed [Quay Enterprise with a self-signed certificate.][self-signed]
-[Appr](https://github.com/app-registry/appr) uses a [Python Requests library][python-requests], which trusts only a standard set of certificates by default. This prevents Helm from interacting with a Quay Enterprise instance that is using a self-signed certificate.
+[Appr][appr] uses the [Python Requests library][python-requests], which trusts only a standard set of certificates by default. This prevents Helm from interacting with a Quay Enterprise instance that is using a self-signed certificate.
The error is reported as a connection error when attempting to interact with the registry:
@@ -18,7 +18,6 @@ To work around this restriction, add the CA for the self-signed certificate to t
- [Red Hat][red-hat]
- [Ubuntu/Debian][ubuntu]
-
### Add an environment variable that points Python Requests to the correct certificate chain:
```
@@ -34,6 +33,7 @@ Client-version: 0.3.7
````
+[appr]: https://github.com/app-registry/appr
[self-signed]: quay-ssl.md
[python-requests]: http://docs.python-requests.org/en/master/
[container-linux]: https://coreos.com/os/docs/latest/adding-certificate-authorities.html


message: quay-enterprise/: Update version 2.4.0

diff:
@@ -28,7 +28,7 @@ One or more build workers will communicate with Quay Enterprise to build new con
Pull down the latest copy of the image. **Make sure to pull the version tagged matching your Quay Enterprise version**.
```sh
-docker pull quay.io/coreos/quay-builder:v2.3.4
+docker pull quay.io/coreos/quay-builder:v2.4.0
```
### Run the build worker image
@@ -45,7 +45,7 @@ Use the environment variable `SERVER` to tell the worker the hostname at which Q
Here's what the full command looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.4
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.4.0
```
When the container starts, each build worker will auto-register and start building containers once a job is triggered and it is assigned to a worker.
@@ -53,7 +53,7 @@ When the container starts, each build worker will auto-register and start buildi
If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate directory found at the host's `/path/to/ssl` looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.3.4 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.4.0 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
```
### Setup GitHub build (optional)

diff:
@@ -46,7 +46,7 @@ The `config.json` file will look like this:
}
```
-`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.3.4` to download the container.
+`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.4.0` to download the container.
## Setting up the directories
@@ -62,7 +62,7 @@ mkdir config
Run the following command, replacing `/local/path/to/the/config/directory` and `/local/path/to/the/storage/directory` with the absolute paths to the directories created above:
```
-sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.3.4
+sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.4.0
```
<img src="img/db-setup-full.png" class="img-center" alt="Quay Enterprise Setup Screen"/>

diff:
@@ -34,7 +34,7 @@ Obtain the quay container's `CONTAINER ID` with `docker ps`:
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
-5a3e82c4a75f quay.io/coreos/quay:v2.3.4 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
+5a3e82c4a75f quay.io/coreos/quay:v2.4.0 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
```
Restart the container with that ID:

diff:
@@ -22,7 +22,7 @@ spec:
secretName: quay-enterprise-config-secret
containers:
- name: quay-enterprise-app
- image: quay.io/coreos/quay:v2.3.4
+ image: quay.io/coreos/quay:v2.4.0
ports:
- containerPort: 80
volumeMounts:

original_message: quay-enterprise/: Update version 2.4.0


message:
quay-enterprise:
- adds a doc that describes the process to redirect quay-enterprise logs to stdout.
- edit to clair.md to reflect how the CA cert must be passed when using a self-signed cert for qe

diff:
@@ -225,7 +225,7 @@ Similar to the process for setting up Docker to [trust your self-signed certific
2. Make sure the `ca.crt` file is mounted inside the Clair container under `/usr/local/share/ca-certificates/` as in the example below:
```
-docker run --restart=always -p 6060:6060 -p 6061:6061 -v /path/to/clair/config/directory:/config -v /path/to/quay/cert/directory:/usr/local/share/ca-certificates quay.io/coreos/clair-jwt:v2.0.0
+docker run --restart=always -p 6060:6060 -p 6061:6061 -v /path/to/clair/config/directory:/config -v /path/to/quay/cert/ca.crt:/usr/local/share/ca-certificates/ca.crt quay.io/coreos/clair-jwt:v2.0.0
```
Now Clair will be able to trust the source of your TLS certificates and use them to secure communication between Clair and Quay.

diff:
+## Redirecting syslog to /dev/stdout
+
+By default, Quay Enterprise logs most relevant for debugging to `/var/log/syslog` within the container. [syslog-ng](https://en.wikipedia.org/wiki/Syslog-ng) can be configured to redirect these logs to `/dev/stdout` which will allow for collection by most logging solutions:
+
+Create `syslog-ng-extra.conf` with the following content:
+
+```
+source s_docker_syslog { file("/var/log/syslog"); };
+destination d_docker_syslog { file("/dev/stdout"); };
+log {
+ source(s_docker_syslog);
+ destination(d_docker_syslog);
+
+};
+```
+### Single Container
+
+Place the `syslog-ng-extra.conf` file into the configuration directory:
+
+```
+$ ls quay/config/
+config.yaml license ssl.cert ssl.key syslog-ng-extra.conf
+```
+
+Restart the Quay Enterprise container:
+
+```
+$ docker ps
+0f6c27088c32 quay.io/coreos/quay:v2.4.0 "/sbin/my_init" 27 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp epic_banach
+
+docker restart 0f6c27088c32
+```
+
+### Kubernetes
+
+base64 encode the `syslog-ng-extra.conf` file:
+
+```
+$ cat /config/syslog-ng-extra.conf | base64 -w 0
+
+c291cmNlIHNfZG9ja2VyX3N5c2xvZyB7IGZpbGUoIi92YXIvbG9nL3N5c2xvZyIpOyB9Owpk
+ZXN0aW5hdGlvbiBkX2RvY2tlcl9zeXNsb2cgeyBmaWxlKCIvZGV2L3N0ZG91dCIpOyB9Owpsb
+2cgeyAKCXNvdXJjZShzX2RvY2tlcl9zeXNsb2cpOyAKCWRlc3RpbmF0aW9uKGRfZG9ja2VyX
+3N5c2xvZyk7IAoKfTsK
+```
+
+Edit the Quay Enterprise config secret file:
+
+```
+$ kubectl --namespace quay-enterprise edit secret/quay-enterprise-config-secret
+```
+
+Add an entry for the `syslog-ng-extra.conf` file:
+
+```
+syslog-ng-extra.conf:
+<-base64 encoded syslog-ng-extra.conf->
+```
+
+Delete `quay-enterprise-app` pods to trigger the quay-enterprise deployment to schedule pods with the updated configuration:
+
+```
+$ kubectl -n quay-enterprise get pods
+NAME READY STATUS RESTARTS AGE
+quay-enterprise-app-1576414776-vv4vv 1/1 Running 0 3h
+quay-enterprise-app-1623234786-twrc2 1/1 Running 0 3h
+quay-enterprise-redis-3163299701-mdw95 1/1 Running 0 3h
+```
+
+```
+$ kubectl -n quay-enterprise delete pod/quay-enterprise-app-1576414776-vv4vv
+$ kubectl -n quay-enterprise delete pod/quay-enterprise-app-1623234786-twrc2
+```


message: quay-enterprise: update configure-syslog-ng.md

diff:
## Redirecting syslog to /dev/stdout
-By default, Quay Enterprise logs most relevant for debugging to `/var/log/syslog` within the container. [syslog-ng](https://en.wikipedia.org/wiki/Syslog-ng) can be configured to redirect these logs to `/dev/stdout` which will allow for collection by most logging solutions:
+By default, Quay Enterprise saves logs most relevant for debugging to `/var/log/syslog` within the container. [syslog-ng][syslog-ng] can be configured to redirect these logs to `/dev/stdout` which will allow for collection by most logging solutions:
Create `syslog-ng-extra.conf` with the following content:
@@ -71,3 +71,6 @@ quay-enterprise-redis-3163299701-mdw95 1/1 Running 0 3h
$ kubectl -n quay-enterprise delete pod/quay-enterprise-app-1576414776-vv4vv
$ kubectl -n quay-enterprise delete pod/quay-enterprise-app-1623234786-twrc2
```
+
+[syslog-ng]: https://en.wikipedia.org/wiki/Syslog-ng
+


message: quay-enterprise/*: Update version strings to 2.5.0

diff:
@@ -28,7 +28,7 @@ One or more build workers will communicate with Quay Enterprise to build new con
Pull down the latest copy of the image. **Make sure to pull the version tagged matching your Quay Enterprise version**.
```sh
-docker pull quay.io/coreos/quay-builder:v2.4.0
+docker pull quay.io/coreos/quay-builder:v2.5.0
```
### Run the build worker image
@@ -45,7 +45,7 @@ Use the environment variable `SERVER` to tell the worker the hostname at which Q
Here's what the full command looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.4.0
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.5.0
```
When the container starts, each build worker will auto-register and start building containers once a job is triggered and it is assigned to a worker.
@@ -53,7 +53,7 @@ When the container starts, each build worker will auto-register and start buildi
If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate directory found at the host's `/path/to/ssl` looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.4.0 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.5.0 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
```
### Setup GitHub build (optional)

diff:
@@ -26,7 +26,7 @@ Restart the Quay Enterprise container:
```
$ docker ps
-0f6c27088c32 quay.io/coreos/quay:v2.4.0 "/sbin/my_init" 27 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp epic_banach
+0f6c27088c32 quay.io/coreos/quay:v2.5.0 "/sbin/my_init" 27 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp epic_banach
docker restart 0f6c27088c32
```

diff:
@@ -46,7 +46,7 @@ The `config.json` file will look like this:
}
```
-`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.4.0` to download the container.
+`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.5.0` to download the container.
## Setting up the directories
@@ -62,7 +62,7 @@ mkdir config
Run the following command, replacing `/local/path/to/the/config/directory` and `/local/path/to/the/storage/directory` with the absolute paths to the directories created above:
```
-sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.4.0
+sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.5.0
```
<img src="img/db-setup-full.png" class="img-center" alt="Quay Enterprise Setup Screen"/>

diff:
@@ -34,7 +34,7 @@ Obtain the quay container's `CONTAINER ID` with `docker ps`:
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
-5a3e82c4a75f quay.io/coreos/quay:v2.4.0 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
+5a3e82c4a75f quay.io/coreos/quay:v2.5.0 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
```
Restart the container with that ID:

diff:
@@ -22,7 +22,7 @@ spec:
secretName: quay-enterprise-config-secret
containers:
- name: quay-enterprise-app
- image: quay.io/coreos/quay:v2.4.0
+ image: quay.io/coreos/quay:v2.5.0
ports:
- containerPort: 80
volumeMounts:


message: q-e/*: Update version strings to v2.6.0

diff:
@@ -28,7 +28,7 @@ One or more build workers will communicate with Quay Enterprise to build new con
Pull down the latest copy of the image. **Make sure to pull the version tagged matching your Quay Enterprise version**.
```sh
-docker pull quay.io/coreos/quay-builder:v2.5.0
+docker pull quay.io/coreos/quay-builder:v2.6.0
```
### Run the build worker image
@@ -45,7 +45,7 @@ Use the environment variable `SERVER` to tell the worker the hostname at which Q
Here's what the full command looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.5.0
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.6.0
```
When the container starts, each build worker will auto-register and start building containers once a job is triggered and it is assigned to a worker.
@@ -53,7 +53,7 @@ When the container starts, each build worker will auto-register and start buildi
If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate directory found at the host's `/path/to/ssl` looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.5.0 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.6.0 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
```
### Setup GitHub build (optional)

diff:
@@ -26,7 +26,7 @@ Restart the Quay Enterprise container:
```
$ docker ps
-0f6c27088c32 quay.io/coreos/quay:v2.5.0 "/sbin/my_init" 27 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp epic_banach
+0f6c27088c32 quay.io/coreos/quay:v2.6.0 "/sbin/my_init" 27 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp epic_banach
docker restart 0f6c27088c32
```

diff:
@@ -46,7 +46,7 @@ The `config.json` file will look like this:
}
```
-`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.5.0` to download the container.
+`config.json` contains your credentials for the `quay.io/coreos/quay` repository. Save this file to your Container Linux machine in `/home/core/.docker/config.json` and `/root/.docker/config.json`. You should now be able to execute `docker pull quay.io/coreos/quay:v2.6.0` to download the container.
## Setting up the directories
@@ -62,7 +62,7 @@ mkdir config
Run the following command, replacing `/local/path/to/the/config/directory` and `/local/path/to/the/storage/directory` with the absolute paths to the directories created above:
```
-sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.5.0
+sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /local/path/to/the/config/directory:/conf/stack -v /local/path/to/the/storage/directory:/datastorage -d quay.io/coreos/quay:v2.6.0
```
<img src="img/db-setup-full.png" class="img-center" alt="Quay Enterprise Setup Screen"/>

diff:
@@ -34,7 +34,7 @@ Obtain the quay container's `CONTAINER ID` with `docker ps`:
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
-5a3e82c4a75f quay.io/coreos/quay:v2.5.0 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
+5a3e82c4a75f quay.io/coreos/quay:v2.6.0 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 8443/tcp grave_keller
```
Restart the container with that ID:

diff:
@@ -22,7 +22,7 @@ spec:
secretName: quay-enterprise-config-secret
containers:
- name: quay-enterprise-app
- image: quay.io/coreos/quay:v2.5.0
+ image: quay.io/coreos/quay:v2.6.0
ports:
- containerPort: 80
volumeMounts:

original_message: q-e/*: Update version strings to v2.6.0


message: qe: fix quay-builder ssl cert command

diff:
@@ -45,15 +45,15 @@ Use the environment variable `SERVER` to tell the worker the hostname at which Q
Here's what the full command looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.6.0
+docker run --restart on-failure -e SERVER=ws://myquayenterprise -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.6.0
```
When the container starts, each build worker will auto-register and start building containers once a job is triggered and it is assigned to a worker.
-If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate directory found at the host's `/path/to/ssl` looks like:
+If Quay is setup to use a SSL certificate that is not globally trusted, for example a self-signed certificate, Quay's public SSL certificates must be mounted onto the `quay-builder` container's SSL trust store. An example command to mount a certificate found at the host's `/path/to/ssl/rootCA.pem` looks like:
```sh
-docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl:/usr/local/share/ca-certificates -v /var/run/docker.sock:/var/run/docker.sock quay.io/coreos/quay-builder:v2.6.0 /bin/sh -c "/usr/sbin/update-ca-certificates ; /quay-builder"
+docker run --restart on-failure -e SERVER=wss://myquayenterprise -v /path/to/ssl/rootCA.pem:/usr/local/share/ca-certificates/rootCA.pem -v /var/run/docker.sock:/var/run/docker.sock --entrypoint /bin/sh quay.io/coreos/quay-builder:v2.6.0 -c '/usr/sbin/update-ca-certificates && quay-builder'
```
### Setup GitHub build (optional)

original_message: qe: fix quay-builder ssl cert command


message: add doc on configuring quay-enterprise with tectonic-identity

diff:
+# Quay Enterprise OIDC Auth with Tectonic Identity
+
+This document explains how to configure Quay Enterprise to use Tectonic Identity as an OIDC provider for authorization and authentication.
+
+## Export certificate information for TLS verification of Tectonic Identity:
+
+```
+kubectl -n tectonic-system get secret tectonic-ca-cert-secret -o json | jq -r '.data[]' | base64 -d >> tectonic-ca-ingress.crt
+kubectl -n tectonic-system get secret tectonic-ingress-tls-secret -o json | jq -r '.data["tls.crt"]' | base64 -d >> tectonic-ca-ingress.crt
+```
+
+## Upload certificate to Quay Enterprise
+
+Upload the `tectonic-ca-ingress.crt` certificate to to Quay Enterprise through the superuser panel, or follow [Adding TLS Certificates to the Quay Enterprise Container][add-certs] to upload manually.
+
+## Configure Tectonic Identity
+
+Edit the tectonic-identity configmap:
+
+```
+kubectl -n tectonic-system edit cm tectonic-identity
+```
+
+Add an client definition under the `staticClients` section for Quay Enterprise:
+
+```
+ - id: quay-enterprise
+ name: Quay Enterprise
+ secret: rEpLaCeThIs
+ redirectURIs:
+ - 'https://reg.example.com/oauth2/tectonicidentity/callback'
+ - 'https://reg.example.com/oauth2/tectonicidentity/callback/attach'
+ - 'https://reg.example.com/oauth2/tectonicidentity/callback/cli'
+```
+
+__secret:__ a user generated string that will later be passed to Quay Enterprise. `date | md5sum` or `openssl rand -base64 15` may be used to generate a random string.
+
+__redirectURIs:__ callback URLs that must be passed to the tectonic-identity configmap. Replace reg.example.com with the Server Hostname of the registry. These values can be copied from the superuser panel if the oidc provider is added to Quay Enterprise before this configmap change is saved.
+
+Save the changes to the `tectonic-identity` configmap and issue a `kubectl patch` to update the deployment:
+
+```
+kubectl --namespace tectonic-system patch deployment tectonic-identity \
+ --patch "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
+```
+
+## Add an OIDC Provider for Tectonic Identity
+
+Navigate to the superuser panel, then to External Authorization, click the button: __Add OIDC Provider__, and type `tectonicidentity` in the prompt.
+
+__OIDC Server:__ FQDN of the Tectonic cluster with `/identity/` appended. Most easily found in the tectonic-identity configmap as the `issuer:` parameter. The forwardslash at the end is important! Example: `https://tectonic.example.com/identity/`
+
+__Client ID:__ `quay-enterprise`
+
+__Client Secret:__ string passed as `secret` to tectonic-identity configmap.
+
+__Service Name:__ will be displayed on the login page. Suggested Value: `Tectonic Identity`
+
+## Configure Access Settings
+
+__Enable Open User Creation__ must be checked to allow for new users to be created.
+
+__Enable Invite-only User Creation__ can be used to restrict access based on email invitations to organization teams. This requires an SMTP server.
+
+__Allow external application tokens__ if checked, users will be able to generate external application tokens for use with the docker and rkt CLI. Consider the Internal Authentication before choosing.
+
+## Configure Internal Authentication
+
+__Local Database__ can be used if traditional username/password authentication with the docker cli is desired. This will require that oidc users create a password from Account Settings after initial sign up.
+
+__External Application Token__ requires enabling `Allow external application tokens` in Access Settings. This option will disable username/password in favor of a token generated from Account Settings. It is suggested to set an expiration date. This option provides a single sign on experience and minimizes password complication.
+
+## Save Configuration
+
+Click "Save Configuration Changes", then "Save Configuration", and finally "Restart Now" or restart the Quay Enterprise container with a `docker restart` or `kubectl delete pod <quay-enterprise-pod-name>`.
+
+[add-certs]: insert-custom-cert.md
+
+


message: qe: fixes to quay-tectonic-identity.md

diff:
This document explains how to configure Quay Enterprise to use Tectonic Identity as an OIDC provider for authorization and authentication.
-## Export certificate information for TLS verification of Tectonic Identity:
+## Export certificate information for TLS verification of Tectonic Identity
```
kubectl -n tectonic-system get secret tectonic-ca-cert-secret -o json | jq -r '.data[]' | base64 -d >> tectonic-ca-ingress.crt
@@ -15,13 +15,13 @@ Upload the `tectonic-ca-ingress.crt` certificate to to Quay Enterprise through t
## Configure Tectonic Identity
-Edit the tectonic-identity configmap:
+Edit the Tectonic Identity ConfigMap:
```
kubectl -n tectonic-system edit cm tectonic-identity
```
-Add an client definition under the `staticClients` section for Quay Enterprise:
+Add a client definition under the `staticClients` section for Quay Enterprise:
```
- id: quay-enterprise
@@ -33,42 +33,42 @@ Add an client definition under the `staticClients` section for Quay Enterprise:
- 'https://reg.example.com/oauth2/tectonicidentity/callback/cli'
```
-__secret:__ a user generated string that will later be passed to Quay Enterprise. `date | md5sum` or `openssl rand -base64 15` may be used to generate a random string.
+__secret:__ a user generated string that will later be passed to Quay Enterprise. Use `date | md5sum` or `openssl rand -base64 15` to generate a random string.
-__redirectURIs:__ callback URLs that must be passed to the tectonic-identity configmap. Replace reg.example.com with the Server Hostname of the registry. These values can be copied from the superuser panel if the oidc provider is added to Quay Enterprise before this configmap change is saved.
+__redirectURIs:__ callback URLs that must be passed to the Tectonic Identity ConfigMap. Replace reg.example.com with the Server Hostname of the registry. These values can be copied from the superuser panel if the OIDC provider is added to Quay Enterprise before this ConfigMap change is saved.
-Save the changes to the `tectonic-identity` configmap and issue a `kubectl patch` to update the deployment:
+Save the changes to the Tectonic Identity ConfigMap and issue a `kubectl patch` to update the deployment:
```
kubectl --namespace tectonic-system patch deployment tectonic-identity \
--patch "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
```
-## Add an OIDC Provider for Tectonic Identity
+## OIDC Provider for Tectonic Identity
-Navigate to the superuser panel, then to External Authorization, click the button: __Add OIDC Provider__, and type `tectonicidentity` in the prompt.
+Navigate to the superuser panel, then to External Authorization, click "Add OIDC Provider" and type `tectonicidentity` in the prompt.
-__OIDC Server:__ FQDN of the Tectonic cluster with `/identity/` appended. Most easily found in the tectonic-identity configmap as the `issuer:` parameter. The forwardslash at the end is important! Example: `https://tectonic.example.com/identity/`
+__OIDC Server:__ FQDN of the Tectonic cluster with `/identity/` appended. Most easily found in the tectonic-identity configmap as the `issuer` parameter. Be certain to include the forward slash at the end of the domain name. Example: `https://tectonic.example.com/identity/`
__Client ID:__ `quay-enterprise`
__Client Secret:__ string passed as `secret` to tectonic-identity configmap.
-__Service Name:__ will be displayed on the login page. Suggested Value: `Tectonic Identity`
+__Service Name:__ will be displayed on the login page. Suggested value: `Tectonic Identity`
## Configure Access Settings
__Enable Open User Creation__ must be checked to allow for new users to be created.
-__Enable Invite-only User Creation__ can be used to restrict access based on email invitations to organization teams. This requires an SMTP server.
+__Enable Invite-only User Creation__ used to restrict access based on email invitations to organization teams. This requires an SMTP server.
-__Allow external application tokens__ if checked, users will be able to generate external application tokens for use with the docker and rkt CLI. Consider the Internal Authentication before choosing.
+__Allow external application tokens__ if checked, users will be able to generate external application tokens for use with the docker and rkt CLIs. Consider the means of internal authentication before selecting this option.
## Configure Internal Authentication
-__Local Database__ can be used if traditional username/password authentication with the docker cli is desired. This will require that oidc users create a password from Account Settings after initial sign up.
+__Local Database__ can be used if traditional username/password authentication with the docker CLI is desired. This will require that OIDC users create a password from Account Settings after initial sign up.
-__External Application Token__ requires enabling `Allow external application tokens` in Access Settings. This option will disable username/password in favor of a token generated from Account Settings. It is suggested to set an expiration date. This option provides a single sign on experience and minimizes password complication.
+__External Application Token__ requires enabling `Allow external application tokens` in Access Settings. This option will disable username/password in favor of a token generated from Account Settings. This option provides a single sign on experience, and minimizes password complication. If enabled, set an expiration date for the token.
## Save Configuration

original_message: qe: fixes to quay-tectonic-identity.md


message: spelling and format updates

diff:
-# Configure CoreUpdate to Serve Packages from AWS S3
+# Configure CoreUpdate to serve packages from AWS S3
The [updateservicectl][updateservicectl] tool can be used to fetch Container Linux updates from upstream and push the update payload to AWS S3. This process is documented for a general file server at: [CoreUpdate - Air Gapped Package Management][airgap]
@@ -8,7 +8,7 @@ Download the update payload from the upstream public CoreUpdate instance. The co
$ updateservicectl --server=https://public.update.core-os.net package download --dir=/packages/ --version=1632.2.1
```
-Now the /packages/ directory contains a json file with update metadata and the gzipped update payload:
+Now the /packages/ directory contains a JSON file with update metadata and the Gzipped update payload:
```
$ tree packages
@@ -19,7 +19,7 @@ packages
0 directories, 2 files
```
-Use the `updateservicectl package create bulk` command to create the package on an CoreUpdate instance. In the example below, CoreUpdate is running at: `http://coreupdate.example.com:8000`.
+Use the `updateservicectl package create bulk` command to create the package on a CoreUpdate instance. In the example below, CoreUpdate is running at: `http://coreupdate.example.com:8000`.
```
$ updateservicectl --server=http://coreupdate.example.com:8000 --user=admin --key=4025a24d-b1e4-4294-b0ca package create bulk --base-url=https://s3-us-west-1.amazonaws.com/core-update-support --dir=/packages
@@ -37,7 +37,7 @@ On successful creation of the package, the output of this command will state whe
2018/02/06 15:59:41 Please upload payloads to https://s3-us-west-1.amazonaws.com/core-update-support.
```
-Upload the update package to s3:
+Upload the update package to the S3 bucket:
```
aws s3 cp /packages/e96281a6-d1af-4bde-9a0a-97b76e56dc57_1632.2.1_update.gz s3://core-update-support
@@ -51,8 +51,9 @@ curl -L https://s3-us-west-1.amazonaws.com/core-update-support/e96281a6-d1af-4bd
Consult the document [CoreUpdate - Configure Machines][core-update-config] for details on configuring a Container Linux host to use CoreUpdate.
+
[updateservicectl]: https://github.com/coreos/updateservicectl/releases
-[airgap]: https://coreos.com/products/coreupdate/docs/latest/on-premises-deployment.html#air-gapped-package-management
+[airgap]: on-premises-deployment.html#air-gapped-package-management
[aws-endpoints]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
-[core-update-config]: https://coreos.com/products/coreupdate/docs/latest/configure-machines.html
+[core-update-config]: configure-machines.html

original_message: spelling and format updates


message: os: add Ignition example for grub.cfg

diff:
@@ -82,6 +82,27 @@ Further details can be found in the systemd man pages:
The Container Linux bootloader parses the configuration file `/usr/share/oem/grub.cfg`, where custom kernel boot options may be set.
+The `/usr/share/oem/grub.cfg` file can be configured with Ignition. Note that Ignition runs after GRUB. Therefore, the GRUB configuration won't take effect until the next reboot of the node.
+
+Here's an example configuration:
+
+```yaml container-linux-config
+storage:
+ filesystems:
+ - name: "OEM"
+ mount:
+ device: "/dev/disk/by-label/OEM"
+ format: "ext4"
+ files:
+ - filesystem: "OEM"
+ path: "/grub.cfg"
+ mode: 0644
+ append: true
+ contents:
+ inline: |
+ set linux_append="$linux_append coreos.autologin=tty1"
+```
+
### Enable CoreOS Container Linux autologin
To login without a password on every boot, edit `/usr/share/oem/grub.cfg` to add the line:

original_message: os: add Ignition example for grub.cfg


message: fixed missing call setIcons() method

diff:
@@ -129,6 +129,9 @@ public class IconicsTextView extends AppCompatTextView {
//setting obtained attributes :D
setAttributes();
+
+ //setting created icons
+ setIcons();
}
private void setAttributes(){

repo: mikepenz/android-iconics

original_message: fixed missing call setIcons() method


message:
Update README.md
- Changed showcase from deprecated method `actionBarSize()` to `anctionBar()`
- Updated showcase with setting properties equal `anctionBar()`

diff:
@@ -264,10 +264,12 @@ new Iconics.IconicsBuilder().ctx(this)
### String icon-key or typeface enum
Sometimes you won't like to use the icon-key ("faw-adjust") like this, but use the enum provided by a specific font. Both is valid:
```java
- new IconicsDrawable(this, "faw-adjust").actionBarSize()
+ new IconicsDrawable(this, "faw-adjust").actionBar()
```
```java
- new IconicsDrawable(this, FontAwesome.Icon.faw_adjust).sizeDp(24)
+ new IconicsDrawable(this, FontAwesome.Icon.faw_adjust)
+ .sizeDp(IconicsDrawable.ANDROID_ACTIONBAR_ICON_SIZE_DP) //24dp
+ .paddingDp(IconicsDrawable.ANDROID_ACTIONBAR_ICON_SIZE_PADDING_DP) // 1dp
```


message: Added methods for plain text icons

diff:
@@ -69,25 +69,25 @@ import static android.support.annotation.Dimension.PX;
public class IconicsDrawable extends Drawable {
/**
* Size of {@link android.support.v7.widget.Toolbar} icon in dp
- * */
+ */
@Dimension(unit = DP)
public static final int TOOLBAR_ICON_SIZE = 24;
/**
* Size of {@link android.support.v7.widget.Toolbar} icon padding in dp
- * */
+ */
@Dimension(unit = DP)
public static final int TOOLBAR_ICON_PADDING = 1;
/**
* @deprecated use {@link #TOOLBAR_ICON_SIZE} instead
- * */
+ */
@Deprecated
public static final int ANDROID_ACTIONBAR_ICON_SIZE_DP = TOOLBAR_ICON_SIZE;
/**
* @deprecated use {@link #TOOLBAR_ICON_PADDING} instead
- * */
+ */
@Deprecated
public static final int ANDROID_ACTIONBAR_ICON_SIZE_PADDING_DP = TOOLBAR_ICON_PADDING;
@@ -215,6 +215,17 @@ public class IconicsDrawable extends Drawable {
return iconText(icon.toString());
}
+ /**
+ * Loads and draws given.
+ *
+ * @param icon
+ * @param typeface
+ * @return The current IconExtDrawable for chaining.
+ */
+ public IconicsDrawable icon(Character icon, Typeface typeface) {
+ return iconText(icon.toString(), typeface);
+ }
+
/**
* Loads and draws given text
*
@@ -222,9 +233,20 @@ public class IconicsDrawable extends Drawable {
* @return The current IconExtDrawable for chaining.
*/
public IconicsDrawable iconText(String icon) {
+ return iconText(icon, Typeface.DEFAULT);
+ }
+
+ /**
+ * Loads and draws given text
+ *
+ * @param icon
+ * @param typeface
+ * @return The current IconExtDrawable for chaining.
+ */
+ public IconicsDrawable iconText(String icon, Typeface typeface) {
mPlainIcon = icon;
mIcon = null;
- mIconPaint.setTypeface(Typeface.DEFAULT);
+ mIconPaint.setTypeface(typeface);
invalidateSelf();
return this;
}

original_message: - Added methods for plain text icons


message:
Update IconicsArrayBuilder.java
Added support typefaces for icons

diff:
@@ -9,24 +9,34 @@ import java.util.ArrayList;
*/
public class IconicsArrayBuilder {
private IconicsDrawable mIconBase;
- private ArrayList<Object> mIcons = new ArrayList<>();
+ private ArrayList<Pair<Object, Typeface>> mIcons = new ArrayList<>();
public IconicsArrayBuilder(IconicsDrawable iconicsDrawable) {
this.mIconBase = iconicsDrawable;
}
public IconicsArrayBuilder add(IIcon icon) {
- mIcons.add(icon);
+ mIcons.add(Pair.create(icon, null));
return this;
}
public IconicsArrayBuilder add(String icon) {
- mIcons.add(icon);
+ mIcons.add(Pair.create(icon, Typeface.DEFAULT));
return this;
}
public IconicsArrayBuilder add(Character icon) {
- mIcons.add(icon);
+ mIcons.add(Pair.create(icon, Typeface.DEFAULT));
+ return this;
+ }
+
+ public IconicsArrayBuilder add(String icon, Typeface typeface) {
+ mIcons.add(Pair.create(icon, typeface));
+ return this;
+ }
+
+ public IconicsArrayBuilder add(Character icon, Typeface typeface) {
+ mIcons.add(Pair.create(icon, typeface));
return this;
}
@@ -34,12 +44,13 @@ public class IconicsArrayBuilder {
IconicsDrawable[] iconicsDrawables = new IconicsDrawable[mIcons.size()];
for (int i = 0; i < mIcons.size(); i++) {
- if (mIcons.get(i) instanceof IIcon) {
- iconicsDrawables[i] = mIconBase.clone().icon((IIcon) mIcons.get(i));
- } else if (mIcons.get(i) instanceof Character) {
- iconicsDrawables[i] = mIconBase.clone().icon((Character) mIcons.get(i));
- } else if (mIcons.get(i) instanceof String) {
- iconicsDrawables[i] = mIconBase.clone().iconText((String) mIcons.get(i));
+ Pair<Object, Typeface> pair = mIcons.get(i);
+ if (pair.first instanceof IIcon) {
+ iconicsDrawables[i] = mIconBase.clone().icon((IIcon) pair.first);
+ } else if (pair.first instanceof Character) {
+ iconicsDrawables[i] = mIconBase.clone().icon((Character) pair.first, pair.second);
+ } else if (pair.first instanceof String) {
+ iconicsDrawables[i] = mIconBase.clone().iconText((String) pair.first, pair.second);
}
}

original_message:
Update IconicsArrayBuilder.java

- Added support typefaces for icons


message: Added checking nullable typeface

diff:
@@ -246,7 +246,7 @@ public class IconicsDrawable extends Drawable {
public IconicsDrawable iconText(String icon, Typeface typeface) {
mPlainIcon = icon;
mIcon = null;
- mIconPaint.setTypeface(typeface);
+ mIconPaint.setTypeface(typeface == null ? Typeface.DEFAULT : typeface);
invalidateSelf();
return this;
}

original_message: - Added checking nullable typeface


diff:
package com.mikepenz.iconics;
+import android.graphics.Typeface;
+import android.util.Pair;
+
import com.mikepenz.iconics.typeface.IIcon;
import java.util.ArrayList;
@@ -21,13 +24,11 @@ public class IconicsArrayBuilder {
}
public IconicsArrayBuilder add(String icon) {
- mIcons.add(Pair.create(icon, Typeface.DEFAULT));
- return this;
+ return add(icon, Typeface.DEFAULT);
}
public IconicsArrayBuilder add(Character icon) {
- mIcons.add(Pair.create(icon, Typeface.DEFAULT));
- return this;
+ return add(icon, Typeface.DEFAULT);
}
public IconicsArrayBuilder add(String icon, Typeface typeface) {

original_message: - Added imports and refactored methods logic


diff:
@@ -17,9 +17,6 @@ package com.mikepenz.iconics.view;
import android.content.Context;
import android.content.res.TypedArray;
-import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.annotation.DimenRes;
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.v7.widget.AppCompatImageView;
@@ -28,7 +25,6 @@ import android.util.AttributeSet;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.internal.IconicsView;
import com.mikepenz.iconics.internal.IconicsViewsAttrsReader;
-import com.mikepenz.iconics.typeface.IIcon;
import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
@@ -74,172 +70,6 @@ public class IconicsImageView extends AppCompatImageView implements IconicsView
setImageDrawable(mIcon = icon);
}
- //region deprecated methods
- /**
- * @deprecated use {@link IconicsDrawable#icon(Character) getIcon().icon(Character)} instead
- * */
- @Deprecated
- public void setIcon(Character icon) {
- if (mIcon != null) {
- mIcon.icon(icon);
- } else {
- setIcon(new IconicsDrawable(getContext(), icon));
- }
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#icon(String) getIcon().icon(String)} instead
- * */
- @Deprecated
- public void setIcon(String icon) {
- if (mIcon != null) {
- mIcon.icon(icon);
- } else {
- setIcon(new IconicsDrawable(getContext(), icon));
- }
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#icon(IIcon) getIcon().icon(IIcon)} instead
- * */
- @Deprecated
- public void setIcon(IIcon icon) {
- if (mIcon != null) {
- mIcon.icon(icon);
- } else {
- setIcon(new IconicsDrawable(getContext(), icon));
- }
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#iconText(String) getIcon().iconText(String)} instead
- * */
- @Deprecated
- public void setIconText(String iconText) {
- setIcon(new IconicsDrawable(getContext()).iconText(iconText));
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#color(int) getIcon().color(@ColorInt int)} instead
- * */
- @Deprecated
- public void setColor(@ColorInt int color) {
- mIcon.color(color);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#colorRes(int) getIcon().colorRes(@ColorRes int)} instead
- * */
- @Deprecated
- public void setColorRes(@ColorRes int colorRes) {
- mIcon.colorRes(colorRes);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#paddingPx(int) getIcon().paddingPx(int)} instead
- * */
- @Deprecated
- public void setPaddingPx(int padding) {
- mIcon.paddingPx(padding);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#paddingDp(int) getIcon().paddingDp(int)} instead
- * */
- @Deprecated
- public void setPaddingDp(int paddingDp) {
- mIcon.paddingDp(paddingDp);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#paddingRes(int)} getIcon().paddingRes(@DimenRes int)} instead
- * */
- @Deprecated
- public void setPaddingRes(@DimenRes int paddingRes) {
- mIcon.paddingRes(paddingRes);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#contourColor(int) getIcon().contourColor(@ColorInt int)} instead
- * */
- @Deprecated
- public void setContourColor(@ColorInt int color) {
- mIcon.contourColor(color);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#contourColorRes(int) getIcon().contourColorRes(@ColorRes int)} instead
- * */
- @Deprecated
- public void setContourColorRes(@ColorRes int colorRes) {
- mIcon.contourColorRes(colorRes);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#contourWidthPx(int) getIcon().contourWidthPx(int)} instead
- * */
- @Deprecated
- public void setContourWidthPx(int contourWidth) {
- mIcon.contourWidthPx(contourWidth);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#contourWidthDp(int) getIcon().contourWidthDp(int)} instead
- * */
- @Deprecated
- public void setContourWidthDp(int contourWidthDp) {
- mIcon.contourWidthDp(contourWidthDp);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#contourWidthRes(int) getIcon().contourWidthRes(@DimenRes int)} instead
- * */
- @Deprecated
- public void setContourWidthRes(@DimenRes int contourWidthRes) {
- mIcon.contourWidthRes(contourWidthRes);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#backgroundColor(int) getIcon().backgroundColor(@ColorInt int) instead
- * */
- @Deprecated
- public void setBackgroundColor(@ColorInt int color) {
- mIcon.backgroundColor(color);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#backgroundColorRes(int) getIcon().backgroundColorRes(@ColorRes int)} instead
- * */
- @Deprecated
- public void setBackgroundColorRes(@ColorRes int colorRes) {
- mIcon.backgroundColorRes(colorRes);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#roundedCornersPx(int) getIcon()roundedCornersPx(int)} instead
- * */
- @Deprecated
- public void setRoundedCornersPx(int cornerRadius) {
- mIcon.roundedCornersPx(cornerRadius);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#roundedCornersDp(int) getIcon().roundedCornersDp(int)} instead
- * */
- @Deprecated
- public void setRoundedCornersDp(int cornerRadiusDp) {
- mIcon.roundedCornersDp(cornerRadiusDp);
- }
-
- /**
- * @deprecated use {@link IconicsDrawable#roundedCornersRes(int) getIcon().roundedCornersRes(@DimenRes int)} instead
- * */
- @Deprecated
- public void setRoundedCornersRes(@DimenRes int cornerRadiusRes) {
- mIcon.roundedCornersRes(cornerRadiusRes);
- }
- //endregion
-
public IconicsDrawable getIcon() {
if (getDrawable() instanceof IconicsDrawable) {
return ((IconicsDrawable) getDrawable());

diff:
@@ -80,18 +80,6 @@ public class IconicsDrawable extends Drawable {
@Dimension(unit = DP)
public static final int TOOLBAR_ICON_PADDING = 1;
- /**
- * @deprecated use {@link #TOOLBAR_ICON_SIZE} instead
- */
- @Deprecated
- public static final int ANDROID_ACTIONBAR_ICON_SIZE_DP = TOOLBAR_ICON_SIZE;
-
- /**
- * @deprecated use {@link #TOOLBAR_ICON_PADDING} instead
- */
- @Deprecated
- public static final int ANDROID_ACTIONBAR_ICON_SIZE_PADDING_DP = TOOLBAR_ICON_PADDING;
-
private Context mContext;
private int mSizeX = -1;
@@ -547,17 +535,6 @@ public class IconicsDrawable extends Drawable {
return this;
}
- /**
- * Set the size of this icon to the standard Android ActionBar.
- *
- * @return The current IconExtDrawable for chaining.
- * @deprecated use actionBar() instead
- */
- @Deprecated
- public IconicsDrawable actionBarSize() {
- return sizeDp(TOOLBAR_ICON_SIZE);
- }
-
/**
* Sets the size and the Padding to the correct values to be used for the actionBar / toolBar
*

diff:
@@ -50,7 +50,7 @@ public class GenericsUtil {
* @return a String[] with the string ids we need
*/
private static String[] getDefinedFonts(Context ctx, Field[] fields) {
- ArrayList<String> fieldArray = new ArrayList<String>();
+ ArrayList<String> fieldArray = new ArrayList<>();
for (Field field : fields) {
if (field.getName().contains("define_font_")) {
fieldArray.add(getStringResourceByName(ctx, field.getName()));

original_message:
- Removed deprecated methods and fields
  Fields count - 2
  Methods count - 20


message:
Optimized IconicsImageView
Small refactoring

diff:
@@ -24,10 +24,11 @@ import com.mikepenz.iconics.IconicsDrawable;
import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
/**
- * @author zTrap (09.07.2017)
+ * @author pa.gulko zTrap (09.07.2017)
*/
@RestrictTo(LIBRARY_GROUP)
public interface CheckedCompoundIconicsDrawables {
+
IconicsDrawable getCheckedIconicsDrawableStart();
IconicsDrawable getCheckedIconicsDrawableTop();

diff:
@@ -28,6 +28,7 @@ import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
*/
@RestrictTo(LIBRARY_GROUP)
public interface CompoundIconicsDrawables {
+
IconicsDrawable getIconicsDrawableStart();
IconicsDrawable getIconicsDrawableTop();

diff:
@@ -23,7 +23,7 @@ import android.util.AttributeSet;
import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
/**
- * @author zTrap (09.07.2017)
+ * @author pa.gulko zTrap (09.07.2017)
*/
@RestrictTo(LIBRARY_GROUP)
public interface IconicsView {

diff:
@@ -19,8 +19,10 @@ package com.mikepenz.iconics.internal;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
+import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.text.TextUtils;
+import android.util.AttributeSet;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.context.IconicsAttrsReader;
@@ -78,10 +80,24 @@ public class IconicsViewsAttrsReader extends IconicsAttrsReader {
icon.backgroundContourWidthPx(backgroundContourWidth);
}
}
+
+ @Nullable
+ public static IconicsDrawable getIconicsImageViewDrawable(Context context, AttributeSet attrs){
+ IconicsDrawable drawable = null;
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.IconicsImageView);
+
+ String icon = a.getString(R.styleable.IconicsImageView_iiv_icon);
+ if (!TextUtils.isEmpty(icon)) {
+ drawable = new IconicsDrawable(context, icon);
+ readIconicsImageView(a, drawable);
+ }
+
+ a.recycle();
+ return drawable;
+ }
//endregion
//region IconicsTextView
-
/**
* Attributes priority:
* <p>
@@ -471,7 +487,6 @@ public class IconicsViewsAttrsReader extends IconicsAttrsReader {
//endregion
//region IconicsCheckableTextView
-
/**
* Attributes priority:
* <p>

diff:
package com.mikepenz.iconics.utils;
import android.content.Context;
-import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.util.AttributeSet;
import android.util.Xml;
import android.view.Menu;
import android.view.MenuInflater;
-import android.view.MenuItem;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.internal.IconicsViewsAttrsReader;
-import com.mikepenz.iconics.view.R;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -88,7 +85,7 @@ public class IconicsMenuInflaterUtil {
do {
if (eventType == XmlPullParser.START_TAG) {
tagName = parser.getName();
- if (tagName.equals(XML_MENU)) {
+ if (XML_MENU.equals(tagName)) {
// Go to next tag
eventType = parser.next();
break;
@@ -109,29 +106,24 @@ public class IconicsMenuInflaterUtil {
tagName = parser.getName();
switch (tagName) {
case XML_ITEM:
- HashMap<String, String> attr = new HashMap<>();
+ HashMap<String, String> attrsMap = new HashMap<>();
for (int i = 0; i < parser.getAttributeCount(); i++) {
- attr.put(parser.getAttributeName(i), parser.getAttributeValue(i));
+ attrsMap.put(parser.getAttributeName(i), parser.getAttributeValue(i));
+ }
+ IconicsDrawable icon = IconicsViewsAttrsReader.getIconicsImageViewDrawable(context, attrs);
+ if (icon != null) {
+ int id = Integer.parseInt(attrsMap.get("id").replace("@", ""));
+ menu.findItem(id).setIcon(icon);
}
- //region trying to set normal icon
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.IconicsImageView);
- IconicsDrawable icon = new IconicsDrawable(context);
-
- IconicsViewsAttrsReader.readIconicsImageView(a, icon);
-
- int id = Integer.parseInt(attr.get("id").replace("@", ""));
- MenuItem item = menu.findItem(id);
- item.setIcon(icon);
- a.recycle();
- //endregion
break;
- case XML_MENU:
+ case XML_MENU:
// TODO: maybe we must pass in the sub menu in this case, not sure if the function menu.findItem(id) will search through sub items
if (checkSubMenus) {
parseMenu(context, attrs, parser, menu, checkSubMenus);
}
break;
+
default:
lookingForEndOfUnknownTag = true;
unknownTagName = tagName;
@@ -144,7 +136,7 @@ public class IconicsMenuInflaterUtil {
if (lookingForEndOfUnknownTag && tagName.equals(unknownTagName)) {
lookingForEndOfUnknownTag = false;
unknownTagName = null;
- } else if (tagName.equals(XML_MENU)) {
+ } else if (XML_MENU.equals(tagName)) {
reachedEndOfMenu = true;
}
break;
@@ -152,7 +144,6 @@ public class IconicsMenuInflaterUtil {
case XmlPullParser.END_DOCUMENT:
throw new RuntimeException("Unexpected end of document");
}
-
eventType = parser.next();
}
}

diff:
@@ -140,7 +140,6 @@ public class IconicsCheckableTextView extends IconicsTextView implements Checkab
}
mBroadcasting = false;
}
-
}
public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {

diff:
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.mikepenz.iconics.view;
import android.content.Context;
-import android.content.res.TypedArray;
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.v7.widget.AppCompatImageView;
@@ -29,7 +29,6 @@ import com.mikepenz.iconics.internal.IconicsViewsAttrsReader;
import static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
public class IconicsImageView extends AppCompatImageView implements IconicsView {
- private IconicsDrawable mIcon;
public IconicsImageView(Context context) {
this(context, null);
@@ -49,25 +48,20 @@ public class IconicsImageView extends AppCompatImageView implements IconicsView
@Override
@RestrictTo(LIBRARY_GROUP)
public void initialize(Context context, AttributeSet attrs, int defStyle) {
- mIcon = new IconicsDrawable(context);
- applyAttr(context, attrs, defStyle);
//set the scale type for this view
setScaleType(ScaleType.CENTER_INSIDE);
- //set our values for this view
- setImageDrawable(mIcon);
+
+ applyAttr(context, attrs, defStyle);
}
@Override
@RestrictTo(LIBRARY_GROUP)
public void applyAttr(Context context, AttributeSet attrs, int defStyle) {
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.IconicsImageView, defStyle, 0);
- IconicsViewsAttrsReader.readIconicsImageView(a, mIcon);
- a.recycle();
+ setIcon(IconicsViewsAttrsReader.getIconicsImageViewDrawable(context, attrs));
}
public void setIcon(@Nullable IconicsDrawable icon) {
- //set the imageDrawable
- setImageDrawable(mIcon = icon);
+ setImageDrawable(icon);
}
public IconicsDrawable getIcon() {

diff:
</declare-styleable>
<declare-styleable name="IconicsTextView">
+ <!--region start icon-->
<attr name="iiv_start_icon" format="string" />
<attr name="iiv_start_color" format="color|reference" />
<attr name="iiv_start_size" format="dimension|reference" />
<attr name="iiv_start_corner_radius" format="dimension|reference" />
<attr name="iiv_start_background_contour_color" format="color|reference" />
<attr name="iiv_start_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
+ <!--region top icon-->
<attr name="iiv_top_icon" format="string" />
<attr name="iiv_top_color" format="color|reference" />
<attr name="iiv_top_size" format="dimension|reference" />
<attr name="iiv_top_corner_radius" format="dimension|reference" />
<attr name="iiv_top_background_contour_color" format="color|reference" />
<attr name="iiv_top_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
+ <!--region end icon-->
<attr name="iiv_end_icon" format="string" />
<attr name="iiv_end_color" format="color|reference" />
<attr name="iiv_end_size" format="dimension|reference" />
<attr name="iiv_end_corner_radius" format="dimension|reference" />
<attr name="iiv_end_background_contour_color" format="color|reference" />
<attr name="iiv_end_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
+ <!--region bottom icon-->
<attr name="iiv_bottom_icon" format="string" />
<attr name="iiv_bottom_color" format="color|reference" />
<attr name="iiv_bottom_size" format="dimension|reference" />
<attr name="iiv_bottom_corner_radius" format="dimension|reference" />
<attr name="iiv_bottom_background_contour_color" format="color|reference" />
<attr name="iiv_bottom_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
+ <!--region all icons-->
<attr name="iiv_all_icon" format="string" />
<attr name="iiv_all_color" format="color|reference" />
<attr name="iiv_all_size" format="dimension|reference" />
<attr name="iiv_all_corner_radius" format="dimension|reference" />
<attr name="iiv_all_background_contour_color" format="color|reference" />
<attr name="iiv_all_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
</declare-styleable>
<declare-styleable name="IconicsCompoundButton">
+ <!--region checked icons-->
<attr name="iiv_checked_icon" format="string" />
<attr name="iiv_checked_color" format="color|reference" />
<attr name="iiv_checked_size" format="dimension|reference" />
<attr name="iiv_checked_corner_radius" format="dimension|reference" />
<attr name="iiv_checked_background_contour_color" format="color|reference" />
<attr name="iiv_checked_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
+ <!--region unchecked icons-->
<attr name="iiv_unchecked_icon" format="string" />
<attr name="iiv_unchecked_color" format="color|reference" />
<attr name="iiv_unchecked_size" format="dimension|reference" />
<attr name="iiv_unchecked_corner_radius" format="dimension|reference" />
<attr name="iiv_unchecked_background_contour_color" format="color|reference" />
<attr name="iiv_unchecked_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
</declare-styleable>
<declare-styleable name="IconicsCheckableTextView">
-
- <!--region all icons-->
- <attr name="iiv_all_checked_icon" format="string" />
- <attr name="iiv_all_checked_color" format="color|reference" />
- <attr name="iiv_all_checked_size" format="dimension|reference" />
- <attr name="iiv_all_checked_padding" format="dimension|reference" />
- <attr name="iiv_all_checked_contour_color" format="color|reference" />
- <attr name="iiv_all_checked_contour_width" format="dimension|reference" />
- <attr name="iiv_all_checked_background_color" format="color|reference" />
- <attr name="iiv_all_checked_corner_radius" format="dimension|reference" />
- <attr name="iiv_all_checked_background_contour_color" format="color|reference" />
- <attr name="iiv_all_checked_background_contour_width" format="dimension|reference" />
- <!--endregion-->
-
<!--region start icon-->
<attr name="iiv_start_checked_icon" format="string" />
<attr name="iiv_start_checked_color" format="color|reference" />
<attr name="iiv_bottom_checked_background_contour_color" format="color|reference" />
<attr name="iiv_bottom_checked_background_contour_width" format="dimension|reference" />
<!--endregion-->
+
+ <!--region all icons-->
+ <attr name="iiv_all_checked_icon" format="string" />
+ <attr name="iiv_all_checked_color" format="color|reference" />
+ <attr name="iiv_all_checked_size" format="dimension|reference" />
+ <attr name="iiv_all_checked_padding" format="dimension|reference" />
+ <attr name="iiv_all_checked_contour_color" format="color|reference" />
+ <attr name="iiv_all_checked_contour_width" format="dimension|reference" />
+ <attr name="iiv_all_checked_background_color" format="color|reference" />
+ <attr name="iiv_all_checked_corner_radius" format="dimension|reference" />
+ <attr name="iiv_all_checked_background_contour_color" format="color|reference" />
+ <attr name="iiv_all_checked_background_contour_width" format="dimension|reference" />
+ <!--endregion-->
</declare-styleable>
</resources>
\ No newline at end of file

diff:
@@ -38,7 +38,7 @@ public class IconicsAttrsReader {
protected final static int DEF_SIZE = -1;
@Nullable
- public static IconicsDrawable readIconics(Context context, AttributeSet attrs) {
+ public static IconicsDrawable getIconicsDrawable(Context context, AttributeSet attrs) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Iconics);
IconicsDrawable icon;

diff:
@@ -41,7 +41,7 @@ class IconicsFactory {
}
if (view instanceof ActionMenuItemView) {
- IconicsDrawable drawable = IconicsAttrsReader.readIconics(context, attrs);
+ IconicsDrawable drawable = IconicsAttrsReader.getIconicsDrawable(context, attrs);
if (drawable != null) {
((ActionMenuItemView) view).setIcon(drawable);
}
@@ -71,7 +71,7 @@ class IconicsFactory {
}
});
} else if (view instanceof ImageView) {
- IconicsDrawable drawable = IconicsAttrsReader.readIconics(context, attrs);
+ IconicsDrawable drawable = IconicsAttrsReader.getIconicsDrawable(context, attrs);
if (drawable != null) {
((ImageView) view).setImageDrawable(drawable);
}

original_message:
- Optimized IconicsImageView
- Small refactoring