giseldo/neodataset huggingface dataset:
STORAGE BUG: A storage purchase didn’t unlock a project for a customer

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "bug" label in relevant trackers:

- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug
- https://gitlab.com/gitlab-org/customers-gitlab-com/issues?label_name%5B%5D=bug


Do not include confidential information!
--->


### Summary


A storage purchase for the client didn't unblock the project. The purchase was successful and the `Usage Quotas` page was showing  Purchased storage available as 28.3 out of 30 Gib. Despite that, the customer's project was blocked in read-only mode. 

The project in question is nested under another namespace. Not sure if that is related though. 


### Steps to reproduce

Issue is reproducible for locked projects in a sub-group:

* Create sub-group
* Create a project in the sub group with at least one file (e.g. 2mb file)
* Set a low repo size limit (e.g. 1mb) so that the storage limit is reached by that repo (via Admin > Settings > General > Account and limit > Size limit per repository)
* Purchase a storage pack to unlock the namespace
* Attempt to create a new branch in the project - error shown as below

### What is the current *bug* behavior?

The project wasn't unblocked.

### What is the expected *correct* behavior?

Once the storage purchase is completed all the project over 10Gb should be unlocked if there is anough additional storage.

### Relevant logs and/or screenshots

Kibana logs about rejecting push: https://log.gprd.gitlab.net/goto/f086203335b19efeed4424ea34a39682. There you can see the POST attempting to create the branch `test_test` and then a reply back when querying `/api/:version/internal/allowed` with a status code of 401

The error message in UI was:
![image](/uploads/bf0d88b6dd94d90d81491436b3356da2/image.png)


### Workarounds

An admin user can manually adjust [storage limit](https://docs.gitlab.com/ee/user/admin_area/settings/account_and_limit_settings.html#how-it-works) for the specific project.

### Reported examples

1. https://gitlab.zendesk.com/agent/tickets/182522 
1. https://gitlab.zendesk.com/agent/tickets/185258
1. https://gitlab.zendesk.com/agent/tickets/184715
1. https://gitlab.zendesk.com/agent/tickets/186346
1. https://gitlab.zendesk.com/agent/tickets/185306
1. https://gitlab.zendesk.com/agent/tickets/186907
1. https://gitlab.zendesk.com/agent/tickets/190409

<!---
Please add both severity and priority level according to: https://docs.gitlab.com/ee/development/contributing/issue_workflow.html#severity-labels
--->

Story points: 3.0
Create slack notification for end-to-end test report for CustomersDot

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

Currently we notify failed test runs in the [#s_fulfillment_status](https://gitlab.slack.com/archives/CL7SX4N86/p1606248137066300) and in [#qa-staging](https://gitlab.slack.com/archives/CBS3YKMGD/p1606248136454400) as part of each deployment. Along with test status, it will be helpful to have an overview of **E2E Quarantined report** similar to how we have for GitLab QA. The objective being, as we continue to add more test cases and add the capabilities to identify and marking a test case as flaky or bug, this report will provide a consolidated view of the health of our end-to-end test.  

### Proposal

Initially lets go with what we have for GitLab QA e2e - https://gitlab.slack.com/archives/CGZQCTU8J/p1606785178174300
![Screen_Shot_2020-12-01_at_3.34.00_PM](/uploads/1a76c17b5b86d9a4ef6a05f295e93f64/Screen_Shot_2020-12-01_at_3.34.00_PM.png)

### Result
Consolidated view of the health of our end-to-end test.  

### How will we measure success?
More awareness!!!

Story points: 2.0
Create RAKE command to run to migrate auto_renew__c

As part of the parent issue https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/2081, we need to migrate the auto renew from the Zuora field to the custom auto renew `AutoRenew__c`. To avoid problem where we do not have issues when we turn off Zuora and some issue arises then it would be nice to create another column in orders and mark the order as auto_renew.

Also create another reverse flow to read the `AutoRenew__c` and mark the auto_renew as true and do not do the auto renew from the CustomersDot

Story points: 3.0
Upload source-maps to sentry as part of release

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

We shut off source-map fetching on the frontend for security reasons.

This means that we get minified stack traces like https://sentry.gitlab.net/gitlab/customersgitlabcom/issues/2397046/?referrer=slack

### Proposal

As part of our pipeline, upload source-maps to Sentry: https://docs.sentry.io/platforms/javascript/sourcemaps/

### Result

Sentry reports have stack traces we can make sense of.

Story points: 3.0
Holistic approach to frontend errors

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

We're currently using generic error messages to let the user know something went wrong.

![Screenshot_2020-11-30_at_14.54.00](/uploads/d64d4282ba81c156e630c6581dd1cdfa/Screenshot_2020-11-30_at_14.54.00.png)

These error message strings are scattered throughout the codebase, and not consistent between each other.

```
❯ git grep "A unexpected error occurred"
app/frontend/javascripts/subscription/components/add_seats_form.vue:          this.$emit('error', 'A unexpected error occurred');
app/frontend/javascripts/subscription/components/change_namespace_form.vue:          this.$emit('error', 'A unexpected error occurred');
app/frontend/javascripts/subscription/components/change_namespace_form.vue:          this.$emit('error', 'A unexpected error occurred');
spec/frontend/subscription/components/add_seats_form_spec.js:      expect(wrapper.emitted().error).toStrictEqual([[''], [''], ['A unexpected error occurred']]);
```

Due to the use of `Sentry.captureException` on objects instead of `Error`s we're also getting unhelpful Sentry messages like 

* https://sentry.gitlab.net/gitlab/customersgitlabcom/issues/2459991/?referrer=slack

### Proposal

Create a standard way for purchase flows to show error messages to the user and log to Sentry.

* De-duplicate shared code between pages. Use mixins, generic helper functions, [composition api](https://github.com/vuejs/composition-api)
* Provide as specific an error message to the user as possible. Fall back to generic error message

More background details here https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/2080

Story points: 5.0
SaaS manual renew: Ensure CTA for Renew is not displayed for addon only purchases

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

We've recently introduced SaaS manual renew. However a user can have subscriptions with only addon products (CI minutes and Storage), and those subscriptions can not be renewed. Leading to an empty page if the user tries to push the renew button.

Note that this currently sits behind the feature flag `saas_manual_renew `

![Screenshot_2020-11-27_at_13.16.05](/uploads/c34068ac75255f6294f7f174cd725477/Screenshot_2020-11-27_at_13.16.05.png)

### Proposal

Do not render a Renew button for addon-only subscriptions.

I _think_ we can use a check like `subscription.belongs_to_gitlab_com_without_add_ons_plan?` as per this: https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/123eb8b641b25657798feaf2391e72af16cfbcbd/app/presenters/subscription_presenter.rb#L97 

### Result

Users do not get a button urging them to hit a page that is broken

Story points: 2.0
Checkmark in input field for add more seats

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

![Screenshot_2020-11-27_at_13.01.12](/uploads/fc8e54df7e0bf7f4892c0f3da952f97c/Screenshot_2020-11-27_at_13.01.12.png)

![Screenshot_2020-11-27_at_12.54.38](/uploads/8c8a433c27931e1d774016d8732cea2c/Screenshot_2020-11-27_at_12.54.38.png)

When hitting "Add more seats" for subscriptions, we see a green checkmark in the input field

### Proposal

1. Figure out why the green checkmark is there
2. Fix the issue
3. If this is a systematic issue fix other occurrences

### Result

Input fields contain numbers and no checkmarks

### Next steps (if any)

### How will we measure success?

Story points: 2.0
Angelo @ Codemotion Italy

### Workshop plan

The demo will walk over those steps (broadly taken from here), roughly what I have in mind:
- forking a project / creating a project form a template
- set up AutoDevops and deploy to a Kubernetes cluster
- create an Issue
- set up a Board to manage the workflow (displaying the Issue in various states)
- create a MR linked to the Issue and merge it
- review the generated pipeline and deploy the changes

### Follow-up

* [ ] Present experience (sync or async) to the Fulfillment team (FE only or to the entire team)
* [ ] Present experience to FE department

Story points: 5.0
[UX] Move the GitLab.com storage purchase flow to GitLab.com

This is the UX issues for https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/1994

## Designs

[Figma link](https://www.figma.com/file/aE37P8UXh9svMN2G8bJMJQ/Moving-SaaS-purchase-flows-in-app?node-id=19%3A1281)

Story points: 3.0
Some products in Zuora production are missing from Sandbox

# Background

Zuora sandbox has been maintained separately from Zuora production for a while.  The product catalog in Zuora sandbox does not reflect that of Zuora production, both in the amount of products offered and the structure of the products, rate plans, and rate plan charges.

For example, many of the support plans (sold via sales-assisted deals) are not part of sandbox, and therefore are not listed in [the `config/application.yml`](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/a7e53acf6a9c04c20be85de28175433e36d6a690/config%2Fapplication.yml).  Any plans like this are not covered in automated tests and not able to be tested manually.

Also, the structure of the product catalog is different which can lead to confusion.  For example, the Silver Plan is [listed here in Sandbox](https://apisandbox.zuora.com/apps/Product.do?method=view&id=2c92c0f85aac66b3015aaea7163344f7) as a top-level product.  However, it is nested inside of [the Product "GitLab.com" in production](https://www.zuora.com/apps/Product.do?method=view&id=2c92a0fe5a83f009015aa3ccb71426ff).

# Purpose

The purpose of this issue is to clean-up these inconsistencies and allow us to test all types of products that are supported in Production.  This will require a lot of coordination with engineers to pull off successfully as Sandbox is used by engineers for local development/testing, CI, and Staging.

Note: There is a related task, https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/655, to create a production-copy for sandbox.

## Follow-up from:

The following discussion from !2257 should be addressed:

- [ ] @tyleramos started a [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/2257#note_453002903):  (+2 comments)

Story points: 8.0
Evaluate using TransactionLineItem vs extracting invoice item to its own component

We've some repeated code in `renew subscription form`, `dotcom subscription form` and in `add seats invoice` where we show the invoice data.

We need to consider using [`TransactionLineItem`](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/4b10b9b77811eb6d2da74f7d13d40dedd7212419/app/frontend/javascripts/purchase/components/transaction_line_item.vue) vs extracting the repeated code into its own component.

The idea started in [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/2197#note_453393036) from !2197 

### `TransactionLineItem`

```
  <div>
    <hr v-if="topBorderEnabled" class="gl-my-5" />
    <div class="gl-display-flex gl-justify-content-space-between">
      <strong data-testid="label">{{ label }}</strong>
      <div class="gl-my-auto">
        <gl-loading-icon v-if="isLoading" />
        <span v-else-if="value" data-testid="value">{{ value }}</span>
      </div>
    </div>
    <div v-if="description && !isLoading" data-testid="description" class="text-muted gl-mt-3">
      {{ description }}
    </div>
  </div>
```

![Screenshot_2020-11-24_at_15.39.36](/uploads/95b0cec30d518b467b9ea98bd440b0fe/Screenshot_2020-11-24_at_15.39.36.png)


### [what's used in the renew transactions]

```
<div class="d-flex justify-content-between py-3 border-top border-light">
  <h3 class="gl-text-black-normal gl-my-auto">Sub-total</h3>
  <gl-loading-icon v-if="isLoading" inline />
  <p v-else-if="subTotal" class="gl-text-gray-900 gl-font-lg gl-my-auto">
    {{ formatMoney(subTotal) }}
  </p>
</div>
```

### Availability & Testing

<!-- This section needs to be retained and filled in during the workflow planning breakdown phase of this feature proposal, if not earlier.

What risks does this change pose to our availability? How might it affect the quality of the product? What additional test coverage or changes to tests will be needed? Will it require cross-browser testing?

Please list the test areas (unit, integration and end-to-end) that needs to be added or updated to ensure that this feature will work as intended. Please use the list below as guidance.
* Unit test changes
* Integration test changes
* End-to-end test change

See the test engineering planning process and reach out to your counterpart Software Engineer in Test for assistance: https://about.gitlab.com/handbook/engineering/quality/test-engineering/#test-planning -->

![Screenshot_2020-11-24_at_15.24.20](/uploads/3f265ffd95c42d2d92eddf5afb4d3f02/Screenshot_2020-11-24_at_15.24.20.png)

Story points: 2.0
Fix lefthook failing on danger commit_messages rule

### Problem

When rebasing local changes on staging, we get error messages from dangerbot complaining about commit from staging that does not belong to the local changes we made, and we end up disabling lefthook to continue pushing the code `LEFTHOOK=0 git push`.

The same commit_messages rule will show on GitLab MRs as a warning, but locally it shows as an error.

Error sample:

``` 
Lefthook v0.7.2
RUNNING HOOKS GROUP: pre-push
  EXECUTE > danger
Results:
Errors:
- [ ] 059b45b4581d988ecdbc2cf81c30262d5a176907: The commit subject must contain at least 3 words. For more information, take a look at our [Commit message guidelines](https://docs.gitlab.com/ee/development/contributing/merge_request_workflow.html#commit-messages-guidelines).
Warnings:
- [ ] This merge request is definitely too big (more than 11051 lines changed), please split it into multiple merge requests.
- [ ] This merge request includes more than 10 commits. Each commit should meet the following criteria:
```
### Proposal

Update `danger/commit_messages/Dangerfile` to handle commit_messages offenses as warnings, not failures.

### Result

No blocking for team members when pushing changes after rebasing on `staging` to get the latest changes.

Story points: 2.0
Clean up unused Zuora dev pages

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

## I've got a development page and I'd like to keep it

Great! Just make a comment here below with `I want to keep [name-of-page]`.

## I've got a development page and it is safe to remove it

Great! You don't need to do anything here.

### Problem

We have 67 (at the time of writing) hosted pages in our [Zuora sandbox](https://apisandbox.zuora.com/apps/HostedPageLite.do) which makes it difficult to get an overview of which pages are in use and not.

### Proposal

Announce that pages are scheduled to be deleted and give engineers a chance to respond here if they want to keep their page around.

### Result

Less noise in the sandbox.


### Current pages

<details>
<summary>List of current pages</summary>

```
ACH - Test
Aish ACH test
Aish's test page
Alex' test page
Alina's test page
Alper Test Zuora & Customers
Ammar CC page
Amparo Luna Test Page
Andrei's Hosted Page
Angelo Gulina CC Payment
appsec-testpage
AppSecTest
Baus test page
Brandon Labs
CC osw-customers-app.serveo.net
CC Payment
CC waldo.ngrok.io test
Chris CC Page
CI Pipelines
CI Pipelines (New)
Corinna's CC page
CreditCard HPM
Dallas’s Test Page
ddavison CC Payments
Dennis' Test Page
Design Team
Design Team ACH
Dhiraj's CC Payment
DParker's CC Page
DParker's GDK Page
Emilys Test Page
Etienne's CC Page
https://waldo.ngrok.io CC test
Jacki Test Page
Jackie F's Test CC Page
jagood CC Payment
Jake's CC Payment
Jeremy Test Gateway
Jerome's Test Page
jjackson - Test Hosted Page
Josie's CC Payment
jswain - Test Hosted Page
Kirstie CC Page
Krasimir Angelov CC Payment
Lena's Test Page
Mark Chao Test Page
Nicolas - Test Page
Paid Signup Flow Dev
Paid Signup Flow Staging
pcalder - test hosted page
Production ACH Hosted Page
Production CC Hosted Page
Qingyu CC payment
Ragnar's CC Page
rcobb - cc payment
Reuben's CC payment
Ruben's test page
Shreyas' Credit card
Taurie's Test HPP
Terri's Hosted Page
Tim CC page
Tyler's CC Page
Vij's CC Payment
Vitaly's Test Page
yliu payment page
Staging ACH
Staging CC
```
</details>

Story points: 1.0
Angelo @ Open Source Week 2020 (Italian Field Marketing Collab)

This Issue is a pin for the work @agulina is doing with @ccasella for the OSW 2020. A list of tasks and busy day tbd soon!

### Tasks
- [x] Work on the workshop repo: `THU 2020/11/24 14:00 - TBD`
- [ ] Workshop recording: `THU 2020/11/26 9:00 - 12:00`

### Follow-up (optional)

- [ ] Present experience (sync or async) to the Fulfillment team (FE only or to the entire team)
- [ ] Present experience to FE department

/cc @rhardarson

Story points: 2.0
OSS - allow subscribers to purchase discounted support

## Summary

When a community member is approved for one of GitLab's free Gold/Ultimate programs (OSS/EDU/Startups), we create a $0.00 subscription utilizing a specific program-based sku for the 12 month term applicable for the subscription.

We want to allow community members participating in these programs the ability to purchase support at a discounted rate.

## Proposal

Conditionally display `purchase support` button on the subscription card based on the sku associated with the active subscription.

For example, for active subscription utilizing the EDU/OSS $0.00 Gold/ULtimate skus, display a new button which would kick off a paid purchase flow for paid (discounted) support service.

Designs: https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/2345/

## Success Criteria

1. [ ] The discount should be coded as part of the sku and not required to be calculated by CustomersDot
1. [ ] The user should be able to check out in customers.gitlab.com using a credit card
1. [ ] The paid support add-on should coterm with the existing EDU/OSS subscription
1. [ ] The purchase support information should be sent to SFDC so the support level can be updated in SFDC

Story points: 5.0
Allow EDU and OSS to self-serve add-on users

## Summary

Allow EDU and OSS program members to add seats during the subscription term.

## Success Criteria

1. [ ] The add seats button should be added to the `Manage purchases` page
1. [ ] The add-on amendment should net $0.00 (noting associated skus are already set to $0.00 in Zuora)
1. [ ] ~~For EDU, we should not allow more than `x` total subscribed users~~
1. [ ] ~~For OSS, we should not allow more than `y` total subscribed users~~
1. [ ] ~~If the cap is reached, pop message (tbd) and block sale~~

2021-02-25 updating to remove 3-5 due to confirmation that a user cap is not needed here: https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/2247#note_517560855

Story points: 2.0
Ensure Zuora iframe load fail does not block the user

https://sentry.gitlab.net/gitlab/customersgitlabcom/issues/2387703/?referrer=gitlab_plugin

```
TypeError: Cannot read property 'includes' of undefined
  at Object.prepopulate (/packs/js/application-ea6950edbe9eacff9e63.chunk.js:2:30298)
  at HTMLIFrameElement.<anonymous> (/packs/js/application-ea6950edbe9eacff9e63.chunk.js:2:34727)
  at HTMLIFrameElement.r (/packs/js/20-a0d8eb0d718eefc7c67d.chunk.js:2:59241)
```

We've got a handful of users where the initial load of the zuora iframe fails.

* https://gitlab.zendesk.com/agent/tickets/181197

The failure happens in this line of our 3rd party code https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/4beaa415df8cbba6898cdfe88967be1ce9c761b1/vendor/assets/javascripts/zuora/index.js#L255

There aren't any reproduction steps for this error as it's not clear _what_ causes this, and this doesn't happen all the time (which sort of suggests a race condition or failed HTTP call).

### TODO

- [ ] Investigate if we're misusing the 3rd party code (iframe hasn't been mounted to the DOM before we make the iframe params fetch)
- [ ] Make the UI resilient against this error (a failure should show an alert to the user, not just stay on the loading spinner)

Story points: 3.0