Erstellen Sie eine neue AppMirror-Ressource für eine App
POST /accounts/{account_id}/k8s/v1/apps/{app_id}/appMirrors
Gibt die gewünschten Werte für die zu erstellende AppMirror API-Ressource an.
Parameter
| Name | Typ | In | Erforderlich | Beschreibung |
|---|---|---|---|---|
Konto-ID |
Zeichenkette |
Pfad |
True |
ID der übergeordneten Kontoressource
|
App-ID |
Zeichenkette |
Pfad |
True |
ID der übergeordneten App-Ressource |
Anfragetext
Gibt die gewünschten Werte für die zu erstellende AppMirror API-Ressource an.
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
Medientyp der Ressource. Folgende Werte sind definiert:
|
Version |
Zeichenkette |
True |
Version der Ressource. Folgende Werte sind definiert:
|
sourceAppID |
Zeichenkette |
True |
Kennung der Quellanwendung. Wird nur aktualisiert, wenn die sourceAppID mit der destinationAppID ausgetauscht wird. Folgende Werte sind definiert:
|
Ziel-Cluster-ID |
Zeichenkette |
True |
Kennung des verwalteten Clusters, das die Zielanwendung hostet. Muss beim Erstellen angegeben werden, da sie bestimmt, auf welchem Cluster die Zielanwendung erstellt wird. Wird sie beim Aktualisieren angegeben, muss sie mit der Cluster-ID der Zielanwendung übereinstimmen, daher kann sie sich nur ändern, wenn sourceAppID mit destinationAppID vertauscht wird. Folgende Werte sind definiert:
|
namespaceMapping |
Array["namespaceMapping"] |
Falsch |
Der oder die Namespaces, die beim Erstellen der Zielanwendung verwendet werden sollen, entsprechend den Namespaces der Quellanwendung. Jedes JSON-Objekt enthält die Felder „clusterID“ und „namespaces“, wobei der Wert von „clusterID“ die JSON-String-ID des Quell- oder Ziel-Cluster ist und der Wert von „namespaces“ ein JSON-Array von JSON-Strings ist. Für jeden Cluster muss genau ein JSON-Objekt vorhanden sein, und die Namespaces werden über ihren Index korreliert. Falls nicht angegeben, wird derselbe Namespace vom Quell-Cluster auch im Ziel-Cluster verwendet. Folgende Werte sind definiert:
|
storageClasses |
Array["storageClasses"] |
Falsch |
Die Speicherklasse, die auf dem Ziel-Cluster beim Erstellen neuer Persistent Volume Claims (PVCs) verwendet werden soll. Jedes JSON-Objekt enthält die Felder „clusterID“ und „storageClassName“, wobei der Wert von „clusterID“ die JSON-String-ID des Quell- oder Ziel-Cluster ist und „storageClassName“ die Speicherklasse ist, die beim Erstellen von PVCs auf diesem Cluster verwendet werden soll. Wenn kein Wert angegeben wird oder der Wert für einen Cluster fehlt, wird die Standard-Speicherklasse für diesen Cluster verwendet. Folgende Werte sind definiert:
|
stateDesired |
Zeichenkette |
True |
Der gewünschte Zustand der Beziehung. Bei der Erstellung ist nur der Wert „etabliert“ gültig. Folgende Werte sind definiert:
|
Metadaten |
Falsch |
Client- und dienstspezifische Metadaten, die der Ressource zugeordnet sind. Folgende Werte sind definiert:
|
Beispielanfrage
{
"type": "application/astra-appMirror",
"version": "1.1",
"sourceAppID": "efd639b6-fc92-4112-8841-0c0ab7890ae0",
"destinationClusterID": "c5d023a9-4061-4a8a-bfbf-3be11ff06226",
"stateDesired": "established"
}
Antwort
Status: 201, Returns the newly created appMirror resource in the JSON response body.
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
Medientyp der Ressource. Folgende Werte sind definiert:
|
Version |
Zeichenkette |
True |
Version der Ressource. Folgende Werte sind definiert:
|
id |
Zeichenkette |
True |
Weltweit eindeutiger Bezeichner der Ressource. Folgende Werte sind definiert:
|
sourceAppID |
Zeichenkette |
True |
Kennung der Quellanwendung. Wird nur aktualisiert, wenn die sourceAppID mit der destinationAppID ausgetauscht wird. Folgende Werte sind definiert:
|
Quell-Cluster-ID |
Zeichenkette |
True |
Kennung des verwalteten Clusters, auf dem die Quellanwendung gehostet wird. Dieses Feld ist schreibgeschützt und wird anhand des Host-Clusters der Quellanwendung ermittelt. Wird es bei einem Update angegeben, muss es mit der Cluster-ID der Quellanwendung übereinstimmen, daher kann es sich nur ändern, wenn die sourceAppID mit der destinationAppID vertauscht wird. Folgende Werte sind definiert:
|
destinationAppID |
Zeichenkette |
Falsch |
Kennung der Zielanwendung. Kann beim Erstellen nicht angegeben werden, da im Rahmen der Beziehungsinitialisierung eine neue App-ID generiert wird. Kann nur aktualisiert werden, wenn die sourceAppID mit der destinationAppID ausgetauscht wird. Folgende Werte sind definiert:
|
Ziel-Cluster-ID |
Zeichenkette |
True |
Kennung des verwalteten Clusters, das die Zielanwendung hostet. Muss beim Erstellen angegeben werden, da sie bestimmt, auf welchem Cluster die Zielanwendung erstellt wird. Wird sie beim Aktualisieren angegeben, muss sie mit der Cluster-ID der Zielanwendung übereinstimmen, daher kann sie sich nur ändern, wenn sourceAppID mit destinationAppID vertauscht wird. Folgende Werte sind definiert:
|
namespaceMapping |
Array["namespaceMapping"] |
Falsch |
Der oder die Namespaces, die beim Erstellen der Zielanwendung verwendet werden sollen, entsprechend den Namespaces der Quellanwendung. Jedes JSON-Objekt enthält die Felder „clusterID“ und „namespaces“, wobei der Wert von „clusterID“ die JSON-String-ID des Quell- oder Ziel-Cluster ist und der Wert von „namespaces“ ein JSON-Array von JSON-Strings ist. Für jeden Cluster muss genau ein JSON-Objekt vorhanden sein, und die Namespaces werden über ihren Index korreliert. Falls nicht angegeben, wird derselbe Namespace vom Quell-Cluster auch im Ziel-Cluster verwendet. Folgende Werte sind definiert:
|
storageClasses |
Array["storageClasses"] |
Falsch |
Die Speicherklasse, die auf dem Ziel-Cluster beim Erstellen neuer Persistent Volume Claims (PVCs) verwendet werden soll. Jedes JSON-Objekt enthält die Felder „clusterID“ und „storageClassName“, wobei der Wert von „clusterID“ die JSON-String-ID des Quell- oder Ziel-Cluster ist und „storageClassName“ die Speicherklasse ist, die beim Erstellen von PVCs auf diesem Cluster verwendet werden soll. Wenn kein Wert angegeben wird oder der Wert für einen Cluster fehlt, wird die Standard-Speicherklasse für diesen Cluster verwendet. Folgende Werte sind definiert:
|
Zustand |
Zeichenkette |
True |
Der Status der Beziehung. Folgende Werte sind definiert:
|
stateTransitions |
Array["type_astra_stateTransition"] |
Falsch |
Zulässige Zustandsübergänge. Für diese Ressource sind folgende Zustandsübergänge möglich:
|
stateDesired |
Zeichenkette |
True |
Der gewünschte Zustand der Beziehung. Bei der Erstellung ist nur der Wert „etabliert“ gültig. Folgende Werte sind definiert:
|
stateAllowed |
Array[string] |
Falsch |
Zustände, die in einem bestimmten Zustand angefordert werden können. Die folgenden Zustände können in jedem definierten Zustand angefordert werden:
|
stateDetails |
Array["type_astra_stateDetail"] |
True |
Zusätzliche Details zum aktuellen Zustand, einschließlich der Gründe für dessen Erreichen. Sind keine Details verfügbar, ist dieses Array leer. Folgende Werte sind definiert:
|
transferState |
Zeichenkette |
Falsch |
Status der aktuellen oder letzten Snapshot-Übertragung. Folgende Werte sind definiert:
|
transferStateTransitions |
Array["type_astra_stateTransition"] |
Falsch |
Zulässige Zustandsübergänge von einem vorgegebenen Zustand aus. Für diese Ressource sind folgende Zustandsübergänge möglich:
|
transferStateDetails |
Array["type_astra_stateDetail"] |
Falsch |
Zusätzliche Details zum aktuellen Zustand, einschließlich der Gründe für dessen Erreichen. Sind keine Details verfügbar, ist dieses Array leer. Folgende Werte sind definiert:
|
healthState |
Zeichenkette |
True |
Gesundheitszustand der Ressource. Folgende Werte sind definiert:
|
healthStateTransitions |
Array["type_astra_stateTransition"] |
True |
Zulässige Zustandsübergänge von einem vorgegebenen Zustand aus. Für diese Ressource sind folgende Zustandsübergänge möglich:
|
healthStateDetails |
Array["type_astra_stateDetail"] |
True |
Zusätzliche Details zum aktuellen Zustand, einschließlich der Gründe für dessen Erreichen. Sind keine Details verfügbar, ist dieses Array leer. Folgende Werte sind definiert:
|
Metadaten |
True |
Client- und dienstspezifische Metadaten, die der Ressource zugeordnet sind. Folgende Werte sind definiert:
|
Beispielantwort
{
"type": "application/astra-appMirror",
"version": "1.1",
"id": "512c8dac-b7d4-5be9-836e-ee672965866a",
"sourceAppID": "efd639b6-fc92-4112-8841-0c0ab7890ae0",
"sourceClusterID": "5789e026-c2e2-41e9-ab00-9766bcfa8951",
"destinationAppID": "cd7b6d91-fc19-4983-a754-9a7bb4d80a7b",
"destinationClusterID": "c5d023a9-4061-4a8a-bfbf-3be11ff06226",
"state": "establishing",
"stateTransitions": [
{
"from": "establishing",
"to": [
"established",
"deleting"
]
},
{
"from": "established",
"to": [
"failingOver",
"deleting"
]
},
{
"from": "failingOver",
"to": [
"failedOver",
"deleting"
]
},
{
"from": "failedOver",
"to": [
"establishing",
"deleting"
]
},
{
"from": "deleting",
"to": [
"deleted"
]
}
],
"stateDesired": "established",
"stateAllowed": [
"deleted"
],
"stateDetails": [
{
"type": "https://astra.netapp.io/stateDetails/3",
"title": "AppMirror is being established",
"detail": "The AppMirror relationship is in the process of being established."
}
],
"healthState": "warning",
"healthStateTransitions": [
{
"from": "indeterminate",
"to": [
"normal",
"warning",
"critical"
]
},
{
"from": "normal",
"to": [
"indeterminate",
"warning",
"critical"
]
},
{
"from": "warning",
"to": [
"indeterminate",
"normal",
"critical"
]
},
{
"from": "critical",
"to": [
"indeterminate",
"normal",
"warning"
]
}
],
"healthStateDetails": [
{
"type": "https://astra.netapp.io/stateDetails/4",
"title": "AppMirror not yet established",
"detail": "The relationship is in the process of being established, so it's not protecting the app data yet."
}
],
"metadata": {
"labels": [],
"creationTimestamp": "2022-10-06T20:58:16.305662Z",
"modificationTimestamp": "2022-10-06T20:58:16.305662Z",
"createdBy": "8f84cf09-8036-51e4-b579-bd30cb07b269"
}
}
Antwort
Status: 401, Unauthorized
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
|
Titel |
Zeichenkette |
True |
|
Detail |
Zeichenkette |
True |
|
Status |
Zeichenkette |
True |
|
Korrelations-ID |
Zeichenkette |
Falsch |
Beispielantwort
{
"type": "https://astra.netapp.io/problems/3",
"title": "Missing bearer token",
"detail": "The request is missing the required bearer token.",
"status": "401"
}
Antwort
Status: 400, Bad request
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
|
Titel |
Zeichenkette |
True |
|
Detail |
Zeichenkette |
True |
|
Status |
Zeichenkette |
True |
|
Korrelations-ID |
Zeichenkette |
Falsch |
|
invalidFields |
Array["invalidFields"] |
Falsch |
Liste ungültiger Anfragetextfelder |
Beispielantwort
{
"type": "https://astra.netapp.io/problems/5",
"title": "Invalid query parameters",
"detail": "The supplied query parameters are invalid.",
"status": "400"
}
Antwort
Status: 409, Conflict
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
|
Titel |
Zeichenkette |
True |
|
Detail |
Zeichenkette |
True |
|
Status |
Zeichenkette |
True |
|
Korrelations-ID |
Zeichenkette |
Falsch |
Beispielantwort
{
"type": "https://astra.netapp.io/problems/10",
"title": "JSON resource conflict",
"detail": "The request body JSON contains a field that conflicts with an idempotent value.",
"status": "409"
}
Antwort
Status: 403, Forbidden
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
|
Titel |
Zeichenkette |
True |
|
Detail |
Zeichenkette |
True |
|
Status |
Zeichenkette |
True |
|
Korrelations-ID |
Zeichenkette |
Falsch |
Beispielantwort
{
"type": "https://astra.netapp.io/problems/11",
"title": "Operation not permitted",
"detail": "The requested operation isn't permitted.",
"status": "403"
}
Fehler
Status: 404, Not found
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
|
Titel |
Zeichenkette |
True |
|
Detail |
Zeichenkette |
True |
|
Status |
Zeichenkette |
True |
|
Korrelations-ID |
Zeichenkette |
Falsch |
Beispiel-Fehlermeldung
{
"type": "https://astra.netapp.io/problems/2",
"title": "Collection not found",
"detail": "The collection specified in the request URI wasn't found.",
"status": "404"
}
Definitionen
Siehe Definitionen
namespaceMapping
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Cluster-ID |
Zeichenkette |
Falsch |
Kennung des Clusters, für den die Namensräume angegeben sind. Folgende Werte sind definiert:
|
Namensräume |
Array[string] |
Falsch |
Liste der im Cluster zu verwendenden Namensräume. Korreliert mit der anderen Namensraumliste des Clusters über den Index. Folgende Werte sind definiert:
|
Rolle |
Zeichenkette |
Falsch |
Die anfängliche Rolle für diese Namespace-Definition. Dieser Parameter ist optional, außer bei Verwendung einer Replikationskonfiguration innerhalb desselben Clusters. Folgende Werte sind definiert:
|
storageClasses
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Cluster-ID |
Zeichenkette |
Falsch |
Kennung des Clusters, für den die Speicherklasse angegeben ist. Folgende Werte sind definiert:
|
storageClassName |
Zeichenkette |
Falsch |
Name der Speicherklasse, die beim Erstellen von PVCs auf dem in „clusterID“ angegebenen Cluster verwendet werden soll. Folgende Werte sind definiert:
|
Rolle |
Zeichenkette |
Falsch |
Die anfängliche Rolle für diese Speicherklassendefinition. Dieser Parameter ist optional, außer bei Verwendung einer Replikationskonfiguration innerhalb desselben Clusters. Folgende Werte sind definiert:
|
Typ_Astra_Label
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Name |
Zeichenkette |
True |
|
Wert |
Zeichenkette |
True |
type_astra_metadata_update
Client- und dienstspezifische Metadaten, die der Ressource zugeordnet sind. Folgende Werte sind definiert:
-
Entspricht dem Astra-Metadatenschema. Falls beim Erstellen keine Bezeichnung angegeben wird, wird ein Metadatenobjekt ohne Bezeichnungen erstellt. Wird beim Aktualisieren kein Label angegeben, bleiben die Labels, creationTimestamp und createdBy, des Metadatenobjekts unverändert erhalten.
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Etiketten |
Array["Typ_Astra_Label"] |
Falsch |
|
CreationZeitstempel |
Zeichenkette |
Falsch |
|
Änderungszeitstempel |
Zeichenkette |
Falsch |
|
Erstellt von |
Zeichenkette |
Falsch |
|
modifiedBy |
Zeichenkette |
Falsch |
type_astra_stateTransition
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
aus |
Zeichenkette |
True |
|
: |
Array[string] |
True |
additionalDetails
type_astra_stateDetail
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Typ |
Zeichenkette |
True |
|
Titel |
Zeichenkette |
True |
|
Detail |
Zeichenkette |
True |
|
additionalDetails |
Falsch |
invalidParams
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Name |
Zeichenkette |
True |
Name des ungültigen Abfrageparameters |
Grund |
Zeichenkette |
True |
Grund, warum der Abfrageparameter ungültig ist |
invalidFields
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Name |
Zeichenkette |
True |
Name des ungültigen Anfragetextfelds |
Grund |
Zeichenkette |
True |
Grund, warum das Anfragekörperfeld ungültig ist |