Commit 38b0de9e authored by Michael Kozono's avatar Michael Kozono

Merge branch 'ce-10586-add-flag-to-object-storage-migration' into 'master'

CE Migration Backport: Add flag to object storage

See merge request gitlab-org/gitlab-ce!31695
parents 25cee3e0 411287c9
# frozen_string_literal: true
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class AddObjectStorageFlagToGeoNode < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
disable_ddl_transaction!
def up
add_column_with_default :geo_nodes, :sync_object_storage, :boolean, default: false
end
def down
remove_column :geo_nodes, :sync_object_storage
end
end
...@@ -1456,6 +1456,7 @@ ActiveRecord::Schema.define(version: 2019_08_06_071559) do ...@@ -1456,6 +1456,7 @@ ActiveRecord::Schema.define(version: 2019_08_06_071559) do
t.integer "container_repositories_max_capacity", default: 10, null: false t.integer "container_repositories_max_capacity", default: 10, null: false
t.datetime_with_timezone "created_at" t.datetime_with_timezone "created_at"
t.datetime_with_timezone "updated_at" t.datetime_with_timezone "updated_at"
t.boolean "sync_object_storage", default: false, null: false
t.index ["access_key"], name: "index_geo_nodes_on_access_key" t.index ["access_key"], name: "index_geo_nodes_on_access_key"
t.index ["name"], name: "index_geo_nodes_on_name", unique: true t.index ["name"], name: "index_geo_nodes_on_name", unique: true
t.index ["primary"], name: "index_geo_nodes_on_primary" t.index ["primary"], name: "index_geo_nodes_on_primary"
......
...@@ -10,7 +10,7 @@ GET /geo_nodes ...@@ -10,7 +10,7 @@ GET /geo_nodes
``` ```
```bash ```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/geo_nodes curl --header "PRIVATE-TOKEN: <your_access_token>" https://primary.example.com/api/v4/geo_nodes
``` ```
Example response: Example response:
...@@ -29,7 +29,13 @@ Example response: ...@@ -29,7 +29,13 @@ Example response:
"repos_max_capacity": 25, "repos_max_capacity": 25,
"container_repositories_max_capacity": 10, "container_repositories_max_capacity": 10,
"verification_max_capacity": 100, "verification_max_capacity": 100,
"clone_protocol": "http" "clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/nodes/1/edit",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/1",
"status":"https://primary.example.com/api/v4/geo_nodes/1/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"
}
}, },
{ {
"id": 2, "id": 2,
...@@ -43,7 +49,15 @@ Example response: ...@@ -43,7 +49,15 @@ Example response:
"repos_max_capacity": 25, "repos_max_capacity": 25,
"container_repositories_max_capacity": 10, "container_repositories_max_capacity": 10,
"verification_max_capacity": 100, "verification_max_capacity": 100,
"clone_protocol": "http" "sync_object_storage": true,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/nodes/2/edit",
"web_geo_projects_url": "https://secondary.example.com/admin/geo/projects",
"_links": {
"self":"https://primary.example.com/api/v4/geo_nodes/2",
"status":"https://primary.example.com/api/v4/geo_nodes/2/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/2/repair"
}
} }
] ]
``` ```
...@@ -55,7 +69,7 @@ GET /geo_nodes/:id ...@@ -55,7 +69,7 @@ GET /geo_nodes/:id
``` ```
```bash ```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/geo_nodes/1 curl --header "PRIVATE-TOKEN: <your_access_token>" https://primary.example.com/api/v4/geo_nodes/1
``` ```
Example response: Example response:
...@@ -73,7 +87,13 @@ Example response: ...@@ -73,7 +87,13 @@ Example response:
"repos_max_capacity": 25, "repos_max_capacity": 25,
"container_repositories_max_capacity": 10, "container_repositories_max_capacity": 10,
"verification_max_capacity": 100, "verification_max_capacity": 100,
"clone_protocol": "http" "clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/nodes/1/edit",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/1",
"status":"https://primary.example.com/api/v4/geo_nodes/1/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"
}
} }
``` ```
...@@ -87,17 +107,18 @@ _This can only be run against a primary Geo node._ ...@@ -87,17 +107,18 @@ _This can only be run against a primary Geo node._
PUT /geo_nodes/:id PUT /geo_nodes/:id
``` ```
| Attribute | Type | Required | Description | | Attribute | Type | Required | Description |
|----------------------|---------|-----------|---------------------------------------------------------------------------| |-----------------------------|---------|-----------|---------------------------------------------------------------------------|
| `id` | integer | yes | The ID of the Geo node. | | `id` | integer | yes | The ID of the Geo node. |
| `enabled` | boolean | no | Flag indicating if the Geo node is enabled. | | `enabled` | boolean | no | Flag indicating if the Geo node is enabled. |
| `name` | string | yes | The unique identifier for the Geo node. Must match `geo_node_name` if it is set in gitlab.rb, otherwise it must match `external_url`. | | `name` | string | yes | The unique identifier for the Geo node. Must match `geo_node_name` if it is set in gitlab.rb, otherwise it must match `external_url`. |
| `url` | string | yes | The user-facing URL of the Geo node. | | `url` | string | yes | The user-facing URL of the Geo node. |
| `internal_url` | string | no | The URL defined on the primary node that secondary nodes should use to contact it. Returns `url` if not set.| | `internal_url` | string | no | The URL defined on the primary node that secondary nodes should use to contact it. Returns `url` if not set.|
| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary node. | | `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary node. |
| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary node. | | `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary node. |
| `verification_max_capacity` | integer | no | Control the maximum concurrency of verification for this node. | | `verification_max_capacity` | integer | no | Control the maximum concurrency of verification for this node. |
| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this node. | | `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this node. |
| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo node will replicate blobs in Object Storage. |
Example response: Example response:
...@@ -114,7 +135,15 @@ Example response: ...@@ -114,7 +135,15 @@ Example response:
"repos_max_capacity": 25, "repos_max_capacity": 25,
"container_repositories_max_capacity": 10, "container_repositories_max_capacity": 10,
"verification_max_capacity": 100, "verification_max_capacity": 100,
"clone_protocol": "http" "sync_object_storage": true,
"clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/nodes/2/edit",
"web_geo_projects_url": "https://secondary.example.com/admin/geo/projects",
"_links": {
"self":"https://primary.example.com/api/v4/geo_nodes/2",
"status":"https://primary.example.com/api/v4/geo_nodes/2/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/2/repair"
}
} }
``` ```
...@@ -158,7 +187,13 @@ Example response: ...@@ -158,7 +187,13 @@ Example response:
"repos_max_capacity": 25, "repos_max_capacity": 25,
"container_repositories_max_capacity": 10, "container_repositories_max_capacity": 10,
"verification_max_capacity": 100, "verification_max_capacity": 100,
"clone_protocol": "http" "clone_protocol": "http",
"web_edit_url": "https://primary.example.com/admin/geo/nodes/1/edit",
"_links": {
"self": "https://primary.example.com/api/v4/geo_nodes/1",
"status":"https://primary.example.com/api/v4/geo_nodes/1/status",
"repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"
}
} }
``` ```
...@@ -169,7 +204,7 @@ GET /geo_nodes/status ...@@ -169,7 +204,7 @@ GET /geo_nodes/status
``` ```
```bash ```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/geo_nodes/status curl --header "PRIVATE-TOKEN: <your_access_token>" https://primary.example.com/api/v4/geo_nodes/status
``` ```
Example response: Example response:
...@@ -320,7 +355,7 @@ GET /geo_nodes/:id/status ...@@ -320,7 +355,7 @@ GET /geo_nodes/:id/status
``` ```
```bash ```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/geo_nodes/2/status curl --header "PRIVATE-TOKEN: <your_access_token>" https://primary.example.com/api/v4/geo_nodes/2/status
``` ```
Example response: Example response:
...@@ -394,7 +429,7 @@ GET /geo_nodes/current/failures ...@@ -394,7 +429,7 @@ GET /geo_nodes/current/failures
This endpoint uses [Pagination](README.md#pagination). This endpoint uses [Pagination](README.md#pagination).
```bash ```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/geo_nodes/current/failures curl --header "PRIVATE-TOKEN: <your_access_token>" https://primary.example.com/api/v4/geo_nodes/current/failures
``` ```
Example response: Example response:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment