From f6a53f7cc50a69510274e8b5b087177a3be02b1e Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Mon, 2 Nov 2015 14:16:04 -0500 Subject: [PATCH] Change all Quay.io references to Quay, fix tour and change logo Fixes #741 --- README.md | 6 +- ROADMAP.md | 2 +- config.py | 4 +- endpoints/api/discovery.py | 6 +- .../repo-view/repo-panel-settings.html | 2 +- static/directives/tour-content.html | 194 +----------------- static/img/quay-logo-old.png | Bin 0 -> 11191 bytes static/img/quay-logo.png | Bin 11191 -> 36645 bytes static/js/app.js | 4 +- static/js/pages/about.js | 2 +- static/js/pages/tour.js | 2 +- static/js/pages/tutorial.js | 2 +- static/js/services/plan-service.js | 2 +- static/partials/about.html | 35 +--- static/partials/plans.html | 12 +- static/partials/security.html | 12 +- templates/500.html | 2 +- templates/base.html | 3 +- templates/confirmerror.html | 2 +- templates/disclaimer.html | 4 +- templates/error.html | 2 +- templates/generatedtoken.html | 2 +- templates/index.html | 2 +- templates/message.html | 2 +- templates/oauthorize.html | 2 +- templates/ologinerror.html | 4 +- templates/privacy.html | 4 +- templates/tos.html | 6 +- util/invoice.tmpl | 4 +- util/useremails.py | 2 +- 30 files changed, 56 insertions(+), 270 deletions(-) create mode 100644 static/img/quay-logo-old.png diff --git a/README.md b/README.md index a5e9ea86a..c09a7a367 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Quay.io - container image registry +# Quay - container image registry -`master` branch build status: ![Docker Repository on Quay.io](https://quay.io/repository/quay/quay/status?token=7bffbc13-8bb0-4fb4-8a70-684a0cf485d3 "Docker Repository on Quay.io") +`master` branch build status: ![Docker Repository on Quay](https://quay.io/repository/quay/quay/status?token=7bffbc13-8bb0-4fb4-8a70-684a0cf485d3 "Docker Repository on Quay") -Quay.io is a container image registry with managements APIs, a Docker registry API, a container build system. +Quay is a container image registry with managements APIs, a Docker registry API, a container build system. The application is implemented as a set of API endpoints written in python and an Angular.js frontend. ## Setup Development Environment diff --git a/ROADMAP.md b/ROADMAP.md index d94d81588..b2edd0717 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,4 +1,4 @@ -# Quay.io Roadmap +# Quay Roadmap **work in progress** diff --git a/config.py b/config.py index f97447f45..fd7813c67 100644 --- a/config.py +++ b/config.py @@ -46,8 +46,8 @@ class DefaultConfig(object): PREFERRED_URL_SCHEME = 'http' SERVER_HOSTNAME = 'localhost:5000' - REGISTRY_TITLE = 'CoreOS Enterprise Registry' - REGISTRY_TITLE_SHORT = 'Enterprise Registry' + REGISTRY_TITLE = 'Quay Enterprise' + REGISTRY_TITLE_SHORT = 'Quay Enterprise' CONTACT_INFO = [ 'mailto:support@quay.io', diff --git a/endpoints/api/discovery.py b/endpoints/api/discovery.py index bcf45428b..70a48664d 100644 --- a/endpoints/api/discovery.py +++ b/endpoints/api/discovery.py @@ -241,10 +241,10 @@ def swagger_route_data(include_internal=False, compact=False): ], 'info': { 'version': 'v1', - 'title': 'Quay.io Frontend', + 'title': 'Quay Frontend', 'description': ('This API allows you to perform many of the operations required to work ' - 'with Quay.io repositories, users, and organizations. You can find out more ' - 'at Quay.io.'), + 'with Quay repositories, users, and organizations. You can find out more ' + 'at Quay.'), 'termsOfService': 'https://quay.io/tos', 'contact': { 'email': 'support@quay.io' diff --git a/static/directives/repo-view/repo-panel-settings.html b/static/directives/repo-view/repo-panel-settings.html index d6c6d7996..600f8073d 100644 --- a/static/directives/repo-view/repo-panel-settings.html +++ b/static/directives/repo-view/repo-panel-settings.html @@ -87,7 +87,7 @@ + data-title="Container Repository on Quay"> diff --git a/static/directives/tour-content.html b/static/directives/tour-content.html index f569f5a82..ad5b90a70 100644 --- a/static/directives/tour-content.html +++ b/static/directives/tour-content.html @@ -198,205 +198,17 @@
-
Run Quay.io Behind Your Firewall
+
-
- - + - -
- Quay.io has partnered with CoreOS to offer Enterprise Registry, a version - of Quay.io that can be hosted behind your firewall. + Run a private instance of Quay behind your firewall, with all the same build features and geo-replication. Fixed price for unlimited users and repositories.
-
-
-
-
- - - - - - - - - -
-

Deployment Made Easy

-

Trigger container builds when your code is checked into GitHub and passes tests. Automatically pushed into your repository for immediate access by your servers.

-
-
-
- - - - - - - - - - - - - - - - - - - - - - -
-

Teamwork Optimized

-

Control how the different teams and projects within your enterprise collaborate on repositories.

-
-
-
- - - - - - - - - - - - - - - -
-

Secure, Private Storage

-

Containers often contain keys and passwords — take control of your registry by running it behind your firewall on CoreOS Managed Linux.

-
-
-
diff --git a/static/img/quay-logo-old.png b/static/img/quay-logo-old.png new file mode 100644 index 0000000000000000000000000000000000000000..3f7faf4c86fe946b91fbf31498af6ba6b4edb64b GIT binary patch literal 11191 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 V{cpFz@}d9$002ovPDHLkV1nPu5*h#i literal 0 HcmV?d00001 diff --git a/static/img/quay-logo.png b/static/img/quay-logo.png index 3f7faf4c86fe946b91fbf31498af6ba6b4edb64b..4cf1219ed4a8a7632d40273dc66027db8994b2ff 100644 GIT binary patch literal 36645 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 V{cpFz@}d9$002ovPDHLkV1nPu5*h#i diff --git a/static/js/app.js b/static/js/app.js index 26c6c10fe..33747af7a 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -74,7 +74,7 @@ quayApp.config(['$tooltipProvider', function ($tooltipProvider) { // Configure the routes. quayApp.config(['$routeProvider', '$locationProvider', 'pages', function($routeProvider, $locationProvider, pages) { - var title = window.__config['REGISTRY_TITLE'] || 'Quay.io'; + var title = window.__config['REGISTRY_TITLE'] || 'Quay'; $locationProvider.html5Mode(true); @@ -203,7 +203,7 @@ if (window.__config && window.__config.SENTRY_PUBLIC_DSN) { quayApp.run(['$location', '$rootScope', 'Restangular', 'UserService', 'PlanService', '$http', '$timeout', 'CookieService', 'Features', '$anchorScroll', 'UtilService', 'MetaService', 'UIService', function($location, $rootScope, Restangular, UserService, PlanService, $http, $timeout, CookieService, Features, $anchorScroll, UtilService, MetaService, UIService) { - var defaultTitle = window.__config['REGISTRY_TITLE'] || 'Quay.io'; + var defaultTitle = window.__config['REGISTRY_TITLE'] || 'Quay'; // Handle session security. Restangular.setDefaultRequestParams(['post', 'put', 'remove', 'delete'], {'_csrf_token': window.__token || ''}); diff --git a/static/js/pages/about.js b/static/js/pages/about.js index 0423cf9f6..303e2936c 100644 --- a/static/js/pages/about.js +++ b/static/js/pages/about.js @@ -5,7 +5,7 @@ angular.module('quayPages').config(['pages', function(pages) { pages.create('about', 'about.html', null, { 'title': 'About Us', - 'description': 'About Quay.io' + 'description': 'About Us' }); }]); }()); \ No newline at end of file diff --git a/static/js/pages/tour.js b/static/js/pages/tour.js index 47ca8ea4c..a9a8ce530 100644 --- a/static/js/pages/tour.js +++ b/static/js/pages/tour.js @@ -5,7 +5,7 @@ angular.module('quayPages').config(['pages', function(pages) { pages.create('tour', 'tour.html', TourCtrl, { 'title': 'Feature Tour', - 'description': 'Take a tour of Quay.io\'s features' + 'description': 'Take a tour of Quay\'s features' }); }]); diff --git a/static/js/pages/tutorial.js b/static/js/pages/tutorial.js index aaf8a9be5..67fa3bae3 100644 --- a/static/js/pages/tutorial.js +++ b/static/js/pages/tutorial.js @@ -6,7 +6,7 @@ pages.create('tutorial', 'tutorial.html', TutorialCtrl, { 'newLayout': true, 'title': 'Tutorial', - 'description': 'Basic tutorial on using Quay.io' + 'description': 'Basic tutorial on using Quay' }) }]); diff --git a/static/js/services/plan-service.js b/static/js/services/plan-service.js index eb841db36..972b341ab 100644 --- a/static/js/services/plan-service.js +++ b/static/js/services/plan-service.js @@ -363,7 +363,7 @@ function(KeyService, UserService, CookieService, ApiService, Features, Config) { email: email, amount: planDetails.price, currency: 'usd', - name: 'Quay.io ' + planDetails.title + ' Subscription', + name: 'Quay ' + planDetails.title + ' Subscription', description: 'Up to ' + planDetails.privateRepos + ' private repositories', panelLabel: opt_title || 'Subscribe', token: submitToken, diff --git a/static/partials/about.html b/static/partials/about.html index 01c40f277..5fcb36b07 100644 --- a/static/partials/about.html +++ b/static/partials/about.html @@ -25,7 +25,7 @@
Local Worker Bees
- 2 + 7
@@ -40,36 +40,9 @@

Our Story

-

Quay.io was originally created out of necessity when we wanted to use Docker containers with our original IDE product. We were using Docker containers to host and isolate server processes invoked on behalf of our users and often running their code. We started by building the Docker image dynamically whenever we spun up a new host node. The image was monolithic. It was too large, took too long to build, and was hard to manage conflicts. It was everything that Docker wasn't supposed to be. When we decided to split it up into pre-built images and host them somewhere, we noticed that there wasn't a good place to host images securely. Determined to scratch our own itch, we built Quay.io, and officially launched it as an aside in our presentation to the Docker New York City Meetup on October 2nd, 2013.

-

After launch, our customers demanded that Quay.io become our main focus. They rely on us to make sure they can store and distribute their Docker images, and we understand that solemn responsibility. Our customers have been fantastic with giving us great feedback and suggestions.

-

In August, 2014, Quay.io joined CoreOS to provide registry support for the enterprise. As ever, we are working as hard as we can to deliver on the promise and execute our vision of what a top notch Docker registry should be. -

-
- -
-
-

The Quay.io Team at CoreOS

- The Quay.io team is composed of two software engineers: -
-
-
-
-

Jacob Moshenko
- Co-Founder

-
- -
-

Jacob graduated from The University of Michigan with a Bachelors in Computer Engineering. From there he allowed his love of flight and mountains to lure him to Seattle where he took a job with Boeing Commercial Airplanes working on the world's most accurate flight simulator. When he realized how much he also loved web development, he moved to Amazon to work on the e-commerce back-end. Finally, desiring to move to New York City, he moved to Google, where he worked on several products related to Google APIs.

-
-
-
-
-

Joseph Schorr
- Co-Founder

-
- -
-

Joseph graduated from University of Pennsylvania with a Bachelors and Masters in Computer Science. After a record setting (probably) five internships with Google, he took a full time position there to continue his work on exciting products such as Google Spreadsheets, the Google Closure Compiler, and Google APIs.

+

Quay was originally created out of necessity when we wanted to use Docker containers with our original IDE product. We were using Docker containers to host and isolate server processes invoked on behalf of our users and often running their code. We started by building the Docker image dynamically whenever we spun up a new host node. The image was monolithic. It was too large, took too long to build, and was hard to manage conflicts. It was everything that Docker wasn't supposed to be. When we decided to split it up into pre-built images and host them somewhere, we noticed that there wasn't a good place to host images securely. Determined to scratch our own itch, we built Quay, and officially launched it as an aside in our presentation to the Docker New York City Meetup on October 2nd, 2013.

+

After launch, our customers demanded that Quay become our main focus. They rely on us to make sure they can store and distribute their container images, and we understand that solemn responsibility. Our customers have been fantastic with giving us great feedback and suggestions.

+

In August, 2014, Quay joined CoreOS to provide registry support for the enterprise. As ever, we are working as hard as we can to deliver on the promise and execute our vision of what a top notch container registry should be.

diff --git a/static/partials/plans.html b/static/partials/plans.html index f506e1326..4995598f9 100644 --- a/static/partials/plans.html +++ b/static/partials/plans.html @@ -290,7 +290,7 @@
  • 30-Day Free Trial -

    Your first 30 days are free on Quay.io. Test it out and start building containers!

    +

    Your first 30 days are free on Quay. Test it out and start building containers!

  • @@ -314,7 +314,7 @@
  • SSL Encryption -

    Transit between Quay.io and your servers is secured automatically.

    +

    Transit between Quay and your servers is secured automatically.

  • @@ -496,7 +496,7 @@
  • 30-Day Free Trial -

    Your first 30 days are free on Quay.io. Test it out and start building containers!

    +

    Your first 30 days are free on Quay. Test it out and start building containers!

  • @@ -520,7 +520,7 @@
  • SSL Encryption -

    Transit between Quay.io and your servers is secured automatically.

    +

    Transit between Quay and your servers is secured automatically.

  • @@ -569,9 +569,9 @@ -

    How is Quay Enterprise different than Quay.io?

    +

    How is Quay Enterprise different than Quay?

    -

    Quay Enterprise is closely related to Quay.io, but runs on your own hardware or in your cloud environment. Running the application yourself is more secure and is more performant when running on the same cluster as your containerized applications.

    +

    Quay Enterprise is closely related to Quay, but runs on your own hardware or in your cloud environment. Running the application yourself is more secure and is more performant when running on the same cluster as your containerized applications.

    When running behind your firewall, Quay Enterprise can connect to private Git repositories, LDAP insfrastructure, and more.

    diff --git a/static/partials/security.html b/static/partials/security.html index b807aa3a2..5dc46ef47 100644 --- a/static/partials/security.html +++ b/static/partials/security.html @@ -1,14 +1,14 @@
    -

    Quay.io Security

    -

    We understand that when you upload one of your repositories to Quay.io that you are trusting us with some potentially very sensitive data. On this page we will lay out our security features and practices to help you make an informed decision about whether you can trust us with your data.

    +

    Quay Security

    +

    We understand that when you upload one of your repositories to Quay that you are trusting us with some potentially very sensitive data. On this page we will lay out our security features and practices to help you make an informed decision about whether you can trust us with your data.

    SSL Everwhere

    -

    We expressly forbid connections to Quay.io using unencrypted HTTP traffic. This helps keep your data and account information safe on the wire. Our SSL traffic is decrypted on our application servers, so your traffic is encrypted even within the datacenter. We use a 4096-bit RSA key, and after the key exchange is complete, traffic is transferred using 256-bit AES, for the maximum encryption strength.

    +

    We expressly forbid connections to Quay using unencrypted HTTP traffic. This helps keep your data and account information safe on the wire. Our SSL traffic is decrypted on our application servers, so your traffic is encrypted even within the datacenter. We use a 4096-bit RSA key, and after the key exchange is complete, traffic is transferred using 256-bit AES, for the maximum encryption strength.

    @@ -20,13 +20,13 @@

    Passwords

    -

    There have been a number of high profile leaks recently where companies have been storing their customers' passwords in plain text, an unsalted hash, or a salted hash where every salt is the same. At Quay.io we use the bcrypt algorithm to generate a salted hash from your password, using a unique salt for each password. This method of storage is safe against rainbow attacks and is obviously superior to plain-text storage. Your credentials are also never written in plain text to our application logs, a leak that is commonly overlooked.

    +

    There have been a number of high profile leaks recently where companies have been storing their customers' passwords in plain text, an unsalted hash, or a salted hash where every salt is the same. At Quay we use the bcrypt algorithm to generate a salted hash from your password, using a unique salt for each password. This method of storage is safe against rainbow attacks and is obviously superior to plain-text storage. Your credentials are also never written in plain text to our application logs, a leak that is commonly overlooked.

    Access Controls

    -

    Repositories will only ever be shared with people to whom you delegate access. Repositories created from the Docker command line are private by default and repositories must subsequently made public with an explicit action in the Quay.io UI. We have a test suite which is run before every code push which tests all methods which expose private data with all levels of access to ensure nothing is accidentally leaked.

    +

    Repositories will only ever be shared with people to whom you delegate access. Repositories created from the Docker command line are private by default and repositories must subsequently made public with an explicit action in the Quay UI. We have a test suite which is run before every code push which tests all methods which expose private data with all levels of access to ensure nothing is accidentally leaked.

    @@ -38,7 +38,7 @@

    Data Resilience

    -

    While not related directly to security, many of you are probably worried about whether you can depend on the data you store in Quay.io. All binary data that we store is stored in Amazon S3 at the highest redundancy level, which Amazon claims provides 11-nines of durability. Our service metadata (e.g. logins, tags, teams) is stored in a database which is backed up nightly, and backups are preserved for 7 days.

    +

    While not related directly to security, many of you are probably worried about whether you can depend on the data you store in Quay. All binary data that we store is stored in Amazon S3 at the highest redundancy level, which Amazon claims provides 11-nines of durability. Our service metadata (e.g. logins, tags, teams) is stored in a database which is backed up nightly, and backups are preserved for 7 days.

    diff --git a/templates/500.html b/templates/500.html index 3335cea5f..ae80a1db5 100644 --- a/templates/500.html +++ b/templates/500.html @@ -1,7 +1,7 @@ {% extends "error.html" %} {% block title %} - Quay.io - Something went wrong! + Quay - Something went wrong! {% endblock %} {% block content %} diff --git a/templates/base.html b/templates/base.html index 61df8838e..e19d4b588 100644 --- a/templates/base.html +++ b/templates/base.html @@ -105,6 +105,7 @@ mixpanel.init("{{ mixpanel_key }}", { track_pageview : false, debug: {{ is_debug
    • ©2015 CoreOS, Inc.
    • +
    • Blog
    • Terms
    • Privacy
    • Security
    • @@ -128,7 +129,7 @@ mixpanel.init("{{ mixpanel_key }}", { track_pageview : false, debug: {{ is_debug
    diff --git a/templates/confirmerror.html b/templates/confirmerror.html index ee13778ee..3cbe3b15d 100644 --- a/templates/confirmerror.html +++ b/templates/confirmerror.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Confirmation error · Quay.io + Confirmation error · Quay {% endblock %} {% block body_content %} diff --git a/templates/disclaimer.html b/templates/disclaimer.html index 542d324f8..a220074f8 100644 --- a/templates/disclaimer.html +++ b/templates/disclaimer.html @@ -1,14 +1,14 @@ {% extends "base.html" %} {% block title %} - Docker Trademark Disclaimer · Quay.io + Docker Trademark Disclaimer · Quay {% endblock %} {% block body_content %}
    - Quay.io is in no way affiliated with or sponsored by Docker, Inc. Docker, Docker logo and dotCloud are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein. + Quay is in no way affiliated with or sponsored by Docker, Inc. Docker, Docker logo and dotCloud are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein.
    diff --git a/templates/error.html b/templates/error.html index de79500e3..21560cdbc 100644 --- a/templates/error.html +++ b/templates/error.html @@ -83,7 +83,7 @@
    - + {% block content %} {% endblock %} diff --git a/templates/generatedtoken.html b/templates/generatedtoken.html index a7e493216..5d259aa5a 100644 --- a/templates/generatedtoken.html +++ b/templates/generatedtoken.html @@ -1,5 +1,5 @@ - Quay.io + Quay diff --git a/templates/index.html b/templates/index.html index 26178c01d..df305e759 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Quay - Private Docker Repository + Quay - Private Docker Repository {% endblock %} {% block added_meta %} diff --git a/templates/message.html b/templates/message.html index a7754bdcb..1692dfff5 100644 --- a/templates/message.html +++ b/templates/message.html @@ -1,5 +1,5 @@ - Quay.io + Quay diff --git a/templates/oauthorize.html b/templates/oauthorize.html index 42aa44e08..1340d175e 100644 --- a/templates/oauthorize.html +++ b/templates/oauthorize.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Authorize {{ application.name }} · Quay.io + Authorize {{ application.name }} · Quay {% endblock %} {% block body_content %} diff --git a/templates/ologinerror.html b/templates/ologinerror.html index f32f2b60d..a420fe422 100644 --- a/templates/ologinerror.html +++ b/templates/ologinerror.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Error Logging in with {{ service_name }} · Quay.io + Error Logging in with {{ service_name }} · Quay {% endblock %} {% block body_content %} @@ -17,7 +17,7 @@ {% if user_creation %}
    Please register using the registration form to continue. - You will be able to connect your account to your Quay.io account + You will be able to connect your account to your Quay account in the user settings.
    {% endif %} diff --git a/templates/privacy.html b/templates/privacy.html index 4f82e12a3..46034d32f 100644 --- a/templates/privacy.html +++ b/templates/privacy.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Privacy Policy · Quay.io + Privacy Policy · Quay {% endblock %} {% block added_meta %} @@ -24,7 +24,7 @@

    CoreOS Privacy Policy

    Last Revised: February 2, 2015

    -

    Welcome to Quay.io from CoreOS, Inc. (“CoreOS”, “we”, “us” or “our”).

    +

    Welcome to Quay from CoreOS, Inc. (“CoreOS”, “we”, “us” or “our”).

    This privacy policy explains how we collect, use and disclose information about you when you use any of the websites owned or operated by CoreOS (the “Sites”) and any of the online products and services that link to this privacy policy (collectively, the “Services”) or when you otherwise interact with us. By using any of our Services, you consent to our collection, use and disclosure of your information as described in this privacy policy.

    The Services allow users to store, manage, and retrieve container repositories.

    We may change this privacy policy from time-to-time. If we make changes, we will notify you by revising the date at the top of the policy and, in some cases, we will provide you with additional notice (such as adding a statement to our homepage or sending you an email notification). We encourage you to review the privacy policy periodically to stay informed about our practices and the ways you can help protect your privacy.

    diff --git a/templates/tos.html b/templates/tos.html index b86128256..567f1face 100644 --- a/templates/tos.html +++ b/templates/tos.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Terms of Service · Quay.io + Terms of Service · Quay {% endblock %} {% block added_meta %} @@ -30,7 +30,7 @@

    CoreOS Terms of Service

    Last Revised: February 5, 2015

    -

    These Quay.io Terms of Service (these “Terms”) apply to the features and functions provided by CoreOS, Inc. (“CoreOS,” “our,” or “we”) via quay.io (the “Site”) (collectively, the “Services”). By accessing or using the Services, you agree to be bound by these Terms. If you do not agree to these Terms, do not use any of the Services. The “Effective Date” of these Terms is the date you first access any of the Services.

    +

    These Quay Terms of Service (these “Terms”) apply to the features and functions provided by CoreOS, Inc. (“CoreOS,” “our,” or “we”) via quay.io (the “Site”) (collectively, the “Services”). By accessing or using the Services, you agree to be bound by these Terms. If you do not agree to these Terms, do not use any of the Services. The “Effective Date” of these Terms is the date you first access any of the Services.

    If you are accessing the Services in your capacity as an employee, consultant or agent of a company (or other entity), you represent that you are an employee, consultant or agent of such company (or other entity) and you have the authority to agree (and be legally bound) on behalf of such company (or other entity) to all of the terms and conditions of these Terms.

    For the purpose of these Terms, you and, if applicable, such company (or other entity) constitutes “Customer” or “you”.

    CoreOS reserves the right to change or modify any of the terms and conditions contained in these Terms (or any policy or guideline of CoreOS) at any time and in its sole discretion by providing notice that these Terms have been modified. Such notice may be provided by sending an email, posting a notice on the Site, posting the revised Terms on the Site and revising the date at the top of these Terms or such other form of notice as determined by CoreOS. Any changes or modifications will be effective 30 days after providing notice that these Terms have been modified (the “Notice Period”). Your continued use of any of the Services following the Notice Period will constitute your acceptance of such changes or modifications. Therefore, you should review these Terms whenever you access the Services and at least every 30 days to make sure that you understand the terms and conditions that will apply to your use of the Services.

    @@ -74,7 +74,7 @@
  • Fees and Payment Terms -

    In exchange for your rights to the Services, you will pay to CoreOS the Subscription Fees. The Subscription Fees do not include taxes, and the Subscription Fees are payable in advance in accordance with your Quay.io Plan.

    +

    In exchange for your rights to the Services, you will pay to CoreOS the Subscription Fees. The Subscription Fees do not include taxes, and the Subscription Fees are payable in advance in accordance with your Quay Plan.

    Unless CoreOS states otherwise, all payments must be made (a) in U.S. Dollars; and (b) by payment card via an authorized CoreOS payment processor. If you pay via a payment card, you hereby (i) authorize CoreOS (or its authorized payment processor) to make automatic recurring charges to your designated payment card number in the applicable amount of the Subscription Fees on an annual or monthly basis (as applicable) for the duration of the Subscription Period, (ii) represent and warrant that you are authorized to use and have fees charged to the payment card number you provide to CoreOS, and (iii) understand that you may withdraw this consent by emailing CoreOS at support@quay.io. Accounts can be canceled at any time in the Plan and Usage section of your Account Settings. No refunds will be issued (unless expressly stated otherwise).

    Notwithstanding any terms to the contrary in these Terms, CoreOS, at its sole discretion, may modify its pricing during any Subscription Period and such modifications will be effective as of the directly subsequent Subscription Period.

    Interest on any late payments will accrue at the rate of 1.5% per month, or the highest rate permitted by law, whichever is lower, from the date such amount is due until the date such amount is paid in full. You will be responsible for, and will pay all sales and similar taxes on, all license fees and similar fees levied upon the provision of the Services provided under these Terms, excluding only taxes based solely on CoreOS’ net income. You will indemnify and hold CoreOS harmless from and against any and all such taxes and related amounts levied upon the provision of the Services and any costs associated with the collection or withholding thereof, including penalties and interest.

    diff --git a/util/invoice.tmpl b/util/invoice.tmpl index 68228886f..1e29cdadb 100644 --- a/util/invoice.tmpl +++ b/util/invoice.tmpl @@ -3,10 +3,10 @@
    - Quay.io + Quay -

    Quay.io

    +

    Quay

    CoreOS, Inc
    https://coreos.com
    diff --git a/util/useremails.py b/util/useremails.py index fb562fde4..f7b319a13 100644 --- a/util/useremails.py +++ b/util/useremails.py @@ -147,7 +147,7 @@ def send_org_invite_email(member_name, member_email, orgname, team, adder, code) def send_invoice_email(email, contents): # Note: This completely generates the contents of the email, so we don't use the # normal template here. - msg = Message('Quay.io payment received - Thank you!', recipients=[email]) + msg = Message('Quay payment received - Thank you!', recipients=[email]) msg.html = contents mail.send(msg)