{"type":"api","title":"Set crosscluster setting","meta":{"id":"/apps/pubhub/media/crosswork-network-controller-7-1/f445c17e25a1120e8fbde4bd413083d0fd88b2b3/40d706fd-9f3a-3ab1-a34b-943159096796","info":{"title":"Crosswork Crosscluster Service APIs","description":"Cross cluster provides API methods for handling geo synchronization, leadership operations, and multi-cluster showtech collection on Crosswork.","version":"3.0.0","contact":{"name":"Crosswork Team, Cisco","email":"support@cisco.com"},"license":{"name":"Cisco Software License Agreement","url":"https://www.cisco.com/public/sw-license-agreement.html"}},"x-parser-conf":{"overview":{"markdownPath":"reference/INFRA/CROSSCLUSTER/crosscluster-overview.md"}},"swagger":"2.0","basePath":"/crosswork/crosscluster/v1","schemes":["http","https"],"securityDefinitions":{"bearerAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Security definitions details."}}},"spec":{"summary":"Set crosscluster setting","description":"Set cross cluster setting such as sync frequency, storage settings for cross cluster sync","operationId":"CrossClusterManager_SetCrossClusterSettings","responses":{"200":{"description":"A successful response.","schema":{"type":"object","properties":{"result":{"type":"object","properties":{"request_result":{"description":"ResultValue indicated accept/reject for a request, not the outcome of the work itself.","type":"string","enum":["UNKNOWN_RESULT","REJECTED","ACCEPTED"],"default":"UNKNOWN_RESULT","title":"Request - reply\nresponse","$$ref":"#/definitions/common_geo_platformRequestResult"},"error":{"description":"Message is a textual description of reason for rejection, and can be safely passed on to operator through logs\nor UI.","type":"object","properties":{"message":{"type":"string","title":"Message is a textual description of reason for rejection, and can be safely passed on to operator through logs\nor UI"}},"title":"Error associated with an Object","$$ref":"#/definitions/common_geo_platformError"}},"description":"Result is used to convey whether an operation (individual or in a batch)\nhas been accepted or rejected. For sync API's an error or rejection indicates failure of operation.\nA string error message accompanies rejection to support troubleshooting. For notification objects,\nrejection represents failure to do intended operation.","$$ref":"#/definitions/common_geo_platformResult"}},"title":"CrossClusterSettingsSetResponse - indicates success or failure","$$ref":"#/definitions/crosscluster_serviceCrossClusterSettingsSetResponse"},"examples":{"example":{"result":{"request_result":"ACCEPTED","error":{}}}}},"default":{"description":"An unexpected error response.","schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"type_url":{"type":"string","description":"A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."},"value":{"type":"string","format":"byte","description":"Must be a valid serialized protocol buffer of the above specified type."}},"description":"`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := ptypes.MarshalAny(foo)\n ...\n foo := &pb.Foo{}\n if err := ptypes.UnmarshalAny(any, foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }","$$ref":"#/definitions/protobufAny"}}},"$$ref":"#/definitions/gatewayruntimeError"},"examples":{"example":{"error":"","code":13,"message":"failed to marshal error message","details":[]}}}},"parameters":[{"name":"body","in":"body","required":true,"description":"Cross cluster service set settings request data","schema":{"type":"object","properties":{"cross_cluster_settings":{"type":"object","properties":{"sync_settings":{"title":"Sync cadence for two clusters","type":"object","properties":{"cadence_in_seconds":{"type":"string","format":"uint64","title":"Sync every N seconds"},"recurrence":{"title":"Recurrence","type":"object","properties":{"recurrence_pattern":{"title":"Recurrence","type":"string","enum":["UNKNOWN_RECURRENCE_PATTERN","DAILY"],"default":"UNKNOWN_RECURRENCE_PATTERN","description":"- DAILY: DAILY","$$ref":"#/definitions/common_geo_platformRecurrencePattern"},"time":{"type":"array","items":{"type":"string"},"description":"24 hr time only in format hh:mm:ss\nAlso note that all input times are in UTC time zone and the user should convert local times into UTC before passing them in."}},"$$ref":"#/definitions/common_geo_platformRecurrence"},"is_sync_enabled":{"type":"boolean","title":"Enable/Disable sync"},"sync_type":{"title":"Sync type to use","type":"string","enum":["UNKNOWN_SYNC_TYPE","EXPORT_AND_IMPORT","LIVE_ASYNC_REPLICATION","HYBRID_SYNC"],"default":"UNKNOWN_SYNC_TYPE","description":"- EXPORT_AND_IMPORT: use Back up and restore to synch clusters\n - LIVE_ASYNC_REPLICATION: use live replication to synch clusters\n - HYBRID_SYNC: HYBRID SYNC","$$ref":"#/definitions/common_geo_platformSyncType"},"is_sync_forced":{"type":"boolean","description":"Enable/Disable 'force' flag when making backup/restore sync calls."},"is_db_read_only":{"type":"boolean","description":"Enable/Disable Postgres/Timescale DB 'transaction read only' during replication manager interactions in sync.\nThe user needs to avoid write operations during duration of the sync if this is enabled. If needed, the user\ncould also put the system in maintenance mode."}},"$$ref":"#/definitions/common_geo_platformSyncSettings"},"arbitration_settings":{"title":"Arbitration settings","type":"object","properties":{"arbitration_type":{"title":"ArbitrationMode","type":"string","enum":["UNKNOWN_ARBITRATION_TYPE","MANUAL_ARBITRATION","AUTO_ARBITRATION"],"default":"UNKNOWN_ARBITRATION_TYPE","description":"- MANUAL_ARBITRATION: Manual arbitration only generates notifications, does not do automated switchover or dns switchover.\nUser has responsibility to assigning roles correctly\n - AUTO_ARBITRATION: Automated arbitration causes switchover on failure","$$ref":"#/definitions/common_geo_platformArbitrationType"},"time_interval":{"type":"string","title":"Heartbeat Interval - frequency of heart beats between clusters Ex 30s,1m format https://pkg.go.dev/time#ParseDuration"},"failure_detection_interval":{"type":"string","title":"Failure Detection Interval - dead wait period before declaring cluster failure Ex 30s,1m format https://pkg.go.dev/time#ParseDuration"},"arbitration_executable_location":{"type":"object","properties":{"scp_location":{"title":"SCP location","type":"object","properties":{"remote_file":{"type":"string","title":"file to download"},"ssh_config":{"title":"SSH config for remote Host from which to copy the files from","type":"object","properties":{"remote_host":{"type":"string","title":"Remote host"},"username":{"type":"string","title":"Remote host user"},"password":{"type":"string","title":"Remote host password"},"port":{"type":"integer","format":"int64","title":"Remote host ssh port"}},"$$ref":"#/definitions/common_platformSshConfig"}},"$$ref":"#/definitions/common_platformScpLocation"},"uri_location":{"title":"URI location - Supports http,https or file scheme","type":"object","properties":{"uri":{"type":"string","title":"http or https or file url to download the file , supports ex https://www.foo.com/bar.tar.gz ,\nhttp://192.65.10.20/bar.tar.gz , file:///tmp/bar.tar.gz\nSupports http,https or file scheme"},"basic_auth":{"title":"Optional Basic Auth","type":"object","properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"$$ref":"#/definitions/common_platformBasicAuthentication"},"skip_tls_verify":{"type":"boolean","title":"Skip TLS verification if https"}},"$$ref":"#/definitions/common_platformURILocation"}},"title":"File location to download the file from","$$ref":"#/definitions/common_platformFileLocation","description":"for AUTO_ARBITRATION (ArbitrationType) a self contained executable file needs to be specified which is executed upon\nswitchover's. The executable should take care to update the DNS to point to the newly active side."}},"$$ref":"#/definitions/common_geo_platformArbitrationSettings"},"storage_settings":{"title":"Storage target to be used for export/import","type":"object","properties":{"scp_host":{"type":"object","properties":{"remote_location":{"type":"string","title":"File location"},"ssh_config":{"title":"SSH config","type":"object","properties":{"remote_host":{"type":"string","title":"Remote host"},"username":{"type":"string","title":"Remote host user"},"password":{"type":"string","title":"Remote host password"},"port":{"type":"integer","format":"int64","title":"Remote host ssh port"}},"$$ref":"#/definitions/common_geo_platformSshConfig"}},"title":"Location to be used as target for backup and sync","$$ref":"#/definitions/common_geo_platformScpHost"},"sync_switched_scp_hosts":{"title":"Scp hosts tied to direction of replication","type":"object","properties":{"sync_switched_scp_hosts":{"type":"array","items":{"type":"object","properties":{"scp_host":{"type":"object","properties":{"remote_location":{"type":"string","title":"File location"},"ssh_config":{"title":"SSH config","type":"object","properties":{"remote_host":{"type":"string","title":"Remote host"},"username":{"type":"string","title":"Remote host user"},"password":{"type":"string","title":"Remote host password"},"port":{"type":"integer","format":"int64","title":"Remote host ssh port"}},"$$ref":"#/definitions/common_geo_platformSshConfig"}},"title":"Location to be used as target for backup and sync","$$ref":"#/definitions/common_geo_platformScpHost"},"source":{"type":"object","properties":{"id":{"type":"string","description":"Cluster id is required if component is CROSSWORK_CLUSTER, otherwise it can be left empty."},"name":{"type":"string","description":"CrossCluster component name.\nNOTE: not supported in showtech requests and should be left empty."},"component_type":{"title":"Component for log collection","type":"string","enum":["UNKNOWN_COMPONENT","CROSSWORK_CLUSTER","ARBITER"],"default":"UNKNOWN_COMPONENT","description":"- CROSSWORK_CLUSTER: Crosswork cluster\n - ARBITER: Arbiter node","$$ref":"#/definitions/common_geo_platformComponentType"}},"title":"Crosscluster component","$$ref":"#/definitions/common_geo_platformCrossClusterComponent"},"target":{"type":"object","properties":{"id":{"type":"string","description":"Cluster id is required if component is CROSSWORK_CLUSTER, otherwise it can be left empty."},"name":{"type":"string","description":"CrossCluster component name.\nNOTE: not supported in showtech requests and should be left empty."},"component_type":{"title":"Component for log collection","type":"string","enum":["UNKNOWN_COMPONENT","CROSSWORK_CLUSTER","ARBITER"],"default":"UNKNOWN_COMPONENT","description":"- CROSSWORK_CLUSTER: Crosswork cluster\n - ARBITER: Arbiter node","$$ref":"#/definitions/common_geo_platformComponentType"}},"title":"Crosscluster component","$$ref":"#/definitions/common_geo_platformCrossClusterComponent"}},"title":"Scp Host with affinity for direction for synch, if user could not provide highly available HA host","$$ref":"#/definitions/common_geo_platformSyncSwitchedScpHost"},"title":"One scp host per sync direction"}},"$$ref":"#/definitions/common_geo_platformSyncSwitchedScpHosts"}},"$$ref":"#/definitions/common_geo_platformStorageSettings"},"dns_server_settings":{"title":"DNSServerSettings","type":"object","properties":{"dns_authoritative_server":{"title":"DNS Authoritative server","type":"object","properties":{"dns_host":{"type":"string","title":"DNS host"},"port":{"type":"integer","format":"int64","title":"Optional port"}},"$$ref":"#/definitions/common_geo_platformDNSAuthoritativeServer"}},"description":"// Web server end point http or https path Example - \"http://example.com/path\"\n string url = 1;\n // Optional auth token - { Example = \"your-key\" }\n repeated KeyValue key_value = 2;\n // Optional basic auth Example - \"username = \"my-user\", password = \"my-pass\" \"\n BasicAuthentication basic_auth = 3;\n}\n\n\n//WebHook Noitification for dns server which dont support nsupdate\nmessage WebHookNotification {\n\n oneof Notification {\n DNSNotification dns_notification = 1;\n ArbitrationNotification arbitration_notification = 2;\n }\n\n}\n\n// DNS Notification\nmessage DNSNotification {\n // Current list of intended mappings\n repeated AddressMap address_map = 4;\n // Timestamp on the system when this notification was generated\n int64 epoch_time = 5;\n}\n\n//ArbitrationNotification\nmessage ArbitrationNotification {\n //CrossCluster component\n repeated CrossClusterComponent cross_cluster_component = 1;\n // Crosscluster quorum error\n Error error = 2;\n}\n\n\nDNS Server settings","$$ref":"#/definitions/common_geo_platformDNSServerSettings"}},"title":"Cross cluster settings","$$ref":"#/definitions/common_geo_platformCrossClusterSettings"},"auto_sync":{"type":"boolean","description":"if set to true the settings will be synced to all instances."}},"title":"CrossClusterSettingsSetRequest - Put Creates or Updates the configuration","$$ref":"#/definitions/crosscluster_serviceCrossClusterSettingsSetRequest"}}],"tags":["CrossClusterManager"],"__originalOperationId":"CrossClusterManager_SetCrossClusterSettings","consumes":["application/json"],"produces":["application/json"],"method":"put","path":"/settings"}}