From 30aeec8b7292c3d29213dd09f87f0f001f5ab08a Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Sat, 16 Nov 2019 15:41:25 +0000 Subject: [PATCH 01/22] Remove SignalR transport parameter on clients --- src/Web/WebMVC/Views/Shared/_Layout.cshtml | 1 - src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Web/WebMVC/Views/Shared/_Layout.cshtml b/src/Web/WebMVC/Views/Shared/_Layout.cshtml index c5447c980..ee993cfd4 100644 --- a/src/Web/WebMVC/Views/Shared/_Layout.cshtml +++ b/src/Web/WebMVC/Views/Shared/_Layout.cshtml @@ -102,7 +102,6 @@ function stablishConnection(cb) { let connection = new signalR.HubConnectionBuilder() .withUrl('@settings.Value.SignalrHubUrl/hub/notificationhub', { - transport: signalR.HttpTransportType.LongPolling, accessTokenFactory: () => { return "Authorization", getToken(); } diff --git a/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts b/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts index a6ad76089..fa1b7e386 100644 --- a/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts +++ b/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts @@ -43,7 +43,6 @@ export class SignalrService { private register() { this._hubConnection = new HubConnectionBuilder() .withUrl(this.SignalrHubUrl + '/hub/notificationhub', { - transport: HttpTransportType.LongPolling, accessTokenFactory: () => this.securityService.GetToken() }) .configureLogging(LogLevel.Information) From 09539f7dc294b212332a8de3a5e95e97690e06f4 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Sat, 16 Nov 2019 15:43:06 +0000 Subject: [PATCH 02/22] Remove unsupported ServiceFabric folder --- .../ApplicationManifest.xml | 34 --- .../RabbitMQPkg/Config/Settings.xml | 9 - .../RabbitMQPkg/ServiceManifest.xml | 41 --- .../Bus/ApplicationParameters/Cloud.xml | 6 - .../Bus/ApplicationParameters/Local.1Node.xml | 5 - .../Bus/ApplicationParameters/Local.5Node.xml | 5 - .../eShopOnServiceFabricBus/Bus/Bus.sfproj | 46 ---- .../Bus/PublishProfiles/Cloud.xml | 25 -- .../Bus/PublishProfiles/Local.1Node.xml | 11 - .../Bus/PublishProfiles/Local.5Node.xml | 11 - .../Bus/Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../Bus/packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../MongoDBPkg/Config/Settings.xml | 9 - .../MongoDBPkg/ServiceManifest.xml | 41 --- .../NoSQL/ApplicationParameters/Cloud.xml | 6 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../NoSQL/NoSQL.sfproj | 46 ---- .../NoSQL/PublishProfiles/Cloud.xml | 25 -- .../NoSQL/PublishProfiles/Local.1Node.xml | 11 - .../NoSQL/PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../NoSQL/packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../BasketDataPkg/Config/Settings.xml | 9 - .../BasketDataPkg/ServiceManifest.xml | 41 --- .../Redis/ApplicationParameters/Cloud.xml | 6 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../Redis/PublishProfiles/Cloud.xml | 25 -- .../Redis/PublishProfiles/Local.1Node.xml | 11 - .../Redis/PublishProfiles/Local.5Node.xml | 11 - .../Redis/Redis.sfproj | 46 ---- .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../Redis/packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../SqlServerPkg/Config/Settings.xml | 9 - .../SqlServerPkg/ServiceManifest.xml | 41 --- .../Sql/ApplicationParameters/Cloud.xml | 6 - .../Sql/ApplicationParameters/Local.1Node.xml | 5 - .../Sql/ApplicationParameters/Local.5Node.xml | 5 - .../Sql/PublishProfiles/Cloud.xml | 25 -- .../Sql/PublishProfiles/Local.1Node.xml | 11 - .../Sql/PublishProfiles/Local.5Node.xml | 11 - .../Sql/Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricSql/Sql/Sql.sfproj | 46 ---- .../Sql/packages.config | 4 - .../ApplicationManifest.xml | 152 ----------- .../BasketApiPkg/Config/Settings.xml | 9 - .../BasketApiPkg/ServiceManifest.xml | 49 ---- .../CatalogApiPkg/Config/Settings.xml | 9 - .../CatalogApiPkg/ServiceManifest.xml | 50 ---- .../LocationsApiPkg/Config/Settings.xml | 9 - .../LocationsApiPkg/ServiceManifest.xml | 49 ---- .../MarketingApiPkg/Config/Settings.xml | 9 - .../MarketingApiPkg/ServiceManifest.xml | 55 ---- .../OrderingApiPkg/Config/Settings.xml | 9 - .../OrderingApiPkg/ServiceManifest.xml | 49 ---- .../OrderingBackgroundPkg/Config/Settings.xml | 9 - .../OrderingBackgroundPkg/ServiceManifest.xml | 48 ---- .../PaymentApiPkg/Config/Settings.xml | 9 - .../PaymentApiPkg/ServiceManifest.xml | 44 --- .../ApplicationParameters/Cloud.xml | 16 -- .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabric.sfproj | 57 ---- .../eShopOnServiceFabric/packages.config | 4 - .../ApplicationManifest.xml | 52 ---- .../IdentityApiPkg/Config/Settings.xml | 9 - .../IdentityApiPkg/ServiceManifest.xml | 53 ---- .../ApplicationParameters/Cloud.xml | 14 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricIdSrv.sfproj | 46 ---- .../eShopOnServiceFabricIdSrv/packages.config | 4 - .../ApplicationManifest.xml | 40 --- .../WebMVCPkg/Config/Settings.xml | 9 - .../WebMVCPkg/ServiceManifest.xml | 55 ---- .../ApplicationParameters/Cloud.xml | 8 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricWebMVC.sfproj | 46 ---- .../packages.config | 4 - .../ApplicationManifest.xml | 48 ---- .../WebSPAPkg/Config/Settings.xml | 9 - .../WebSPAPkg/ServiceManifest.xml | 53 ---- .../ApplicationParameters/Cloud.xml | 12 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricWebSPA.sfproj | 46 ---- .../packages.config | 4 - .../ApplicationManifest.xml | 37 --- .../WebStatusPkg/Config/Settings.xml | 9 - .../WebStatusPkg/ServiceManifest.xml | 51 ---- .../ApplicationParameters/Cloud.xml | 7 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricWebStatus.sfproj | 46 ---- .../packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../RabbitMQPkg/Config/Settings.xml | 9 - .../RabbitMQPkg/ServiceManifest.xml | 41 --- .../Bus/ApplicationParameters/Cloud.xml | 6 - .../Bus/ApplicationParameters/Local.1Node.xml | 5 - .../Bus/ApplicationParameters/Local.5Node.xml | 5 - .../eShopOnServiceFabricBus/Bus/Bus.sfproj | 46 ---- .../Bus/PublishProfiles/Cloud.xml | 25 -- .../Bus/PublishProfiles/Local.1Node.xml | 11 - .../Bus/PublishProfiles/Local.5Node.xml | 11 - .../Bus/Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../Bus/packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../MongoDBPkg/Config/Settings.xml | 9 - .../MongoDBPkg/ServiceManifest.xml | 41 --- .../NoSQL/ApplicationParameters/Cloud.xml | 6 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../NoSQL/NoSQL.sfproj | 46 ---- .../NoSQL/PublishProfiles/Cloud.xml | 25 -- .../NoSQL/PublishProfiles/Local.1Node.xml | 11 - .../NoSQL/PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../NoSQL/packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../BasketDataPkg/Config/Settings.xml | 9 - .../BasketDataPkg/ServiceManifest.xml | 41 --- .../Redis/ApplicationParameters/Cloud.xml | 6 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../Redis/PublishProfiles/Cloud.xml | 25 -- .../Redis/PublishProfiles/Local.1Node.xml | 11 - .../Redis/PublishProfiles/Local.5Node.xml | 11 - .../Redis/Redis.sfproj | 46 ---- .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../Redis/packages.config | 4 - .../ApplicationManifest.xml | 34 --- .../SqlServerPkg/Config/Settings.xml | 9 - .../SqlServerPkg/ServiceManifest.xml | 40 --- .../Sql/ApplicationParameters/Cloud.xml | 6 - .../Sql/ApplicationParameters/Local.1Node.xml | 5 - .../Sql/ApplicationParameters/Local.5Node.xml | 5 - .../Sql/PublishProfiles/Cloud.xml | 25 -- .../Sql/PublishProfiles/Local.1Node.xml | 11 - .../Sql/PublishProfiles/Local.5Node.xml | 11 - .../Sql/Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricSql/Sql/Sql.sfproj | 46 ---- .../Sql/packages.config | 4 - .../ApplicationManifest.xml | 152 ----------- .../BasketApiPkg/Config/Settings.xml | 9 - .../BasketApiPkg/ServiceManifest.xml | 50 ---- .../CatalogApiPkg/Config/Settings.xml | 9 - .../CatalogApiPkg/ServiceManifest.xml | 52 ---- .../LocationsApiPkg/Config/Settings.xml | 9 - .../LocationsApiPkg/ServiceManifest.xml | 51 ---- .../MarketingApiPkg/Config/Settings.xml | 9 - .../MarketingApiPkg/ServiceManifest.xml | 57 ---- .../OrderingApiPkg/Config/Settings.xml | 9 - .../OrderingApiPkg/ServiceManifest.xml | 51 ---- .../OrderingBackgroundPkg/Config/Settings.xml | 9 - .../OrderingBackgroundPkg/ServiceManifest.xml | 50 ---- .../PaymentApiPkg/Config/Settings.xml | 9 - .../PaymentApiPkg/ServiceManifest.xml | 46 ---- .../ApplicationParameters/Cloud.xml | 16 -- .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabric.sfproj | 57 ---- .../eShopOnServiceFabric/packages.config | 4 - .../ApplicationManifest.xml | 52 ---- .../IdentityApiPkg/Config/Settings.xml | 9 - .../IdentityApiPkg/ServiceManifest.xml | 53 ---- .../ApplicationParameters/Cloud.xml | 14 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricIdSrv.sfproj | 46 ---- .../eShopOnServiceFabricIdSrv/packages.config | 4 - .../ApplicationManifest.xml | 40 --- .../WebMVCPkg/Config/Settings.xml | 9 - .../WebMVCPkg/ServiceManifest.xml | 55 ---- .../ApplicationParameters/Cloud.xml | 8 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricWebMVC.sfproj | 46 ---- .../packages.config | 4 - .../ApplicationManifest.xml | 48 ---- .../WebSPAPkg/Config/Settings.xml | 9 - .../WebSPAPkg/ServiceManifest.xml | 53 ---- .../ApplicationParameters/Cloud.xml | 12 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricWebSPA.sfproj | 46 ---- .../packages.config | 4 - .../ApplicationManifest.xml | 37 --- .../WebStatusPkg/Config/Settings.xml | 9 - .../WebStatusPkg/ServiceManifest.xml | 51 ---- .../ApplicationParameters/Cloud.xml | 7 - .../ApplicationParameters/Local.1Node.xml | 5 - .../ApplicationParameters/Local.5Node.xml | 5 - .../PublishProfiles/Cloud.xml | 25 -- .../PublishProfiles/Local.1Node.xml | 11 - .../PublishProfiles/Local.5Node.xml | 11 - .../Scripts/Deploy-FabricApplication.ps1 | 258 ------------------ .../eShopOnServiceFabricWebStatus.sfproj | 46 ---- .../packages.config | 4 - ServiceFabric/Windows/sfwin.sln | 13 - 241 files changed, 9419 deletions(-) delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj delete mode 100644 ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/eShopOnServiceFabric.sfproj delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabric/packages.config delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj delete mode 100644 ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj delete mode 100644 ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/eShopOnServiceFabric.sfproj delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabric/packages.config delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj delete mode 100644 ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config delete mode 100644 ServiceFabric/Windows/sfwin.sln diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index bb1cf2743..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml deleted file mode 100644 index 8c2f16691..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - rabbitmq:3-management - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml deleted file mode 100644 index 5a4c2828d..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 1699b8eaa..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 1699b8eaa..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj deleted file mode 100644 index 0a56c800e..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - f29e27c9-0d5e-4a57-adbf-dd651649d2a1 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index fe031fe95..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml deleted file mode 100644 index e7ecf592f..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - mongo:latest - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml deleted file mode 100644 index 8b48c39d1..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 22363f273..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 22363f273..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj deleted file mode 100644 index f07ff03a9..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - eb070036-ec60-49a6-88e1-562a2043c3d7 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 11bf47a6a..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml deleted file mode 100644 index cfcc10eca..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - redis:latest - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml deleted file mode 100644 index 951ce24db..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index e2f3876c7..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index e2f3876c7..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj deleted file mode 100644 index 5b28bfdba..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 17acd9ea-8f16-4091-aa29-c67002971eee - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 27fa4bfe2..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml deleted file mode 100644 index 97ff3ded2..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - microsoft/mssql-server-linux:2017-latest - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml deleted file mode 100644 index 3ad12232a..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 9fc10b0bc..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 9fc10b0bc..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj deleted file mode 100644 index 48447811e..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 65a83188-79c1-47ad-931d-8e8a87247408 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config b/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 43aa95660..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml deleted file mode 100644 index 75aecd407..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - eshop/basket.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml deleted file mode 100644 index bd30b4494..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - eshop/catalog.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml deleted file mode 100644 index 5c19939a4..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - eshop/locations.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml deleted file mode 100644 index defca436c..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - eshop/marketing.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml deleted file mode 100644 index 16c67d3a8..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - eshop/ordering.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml deleted file mode 100644 index 248eb72d3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - eshop/ordering.backgroundtasks - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml deleted file mode 100644 index 88deeeade..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - eshop/payment.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Cloud.xml deleted file mode 100644 index 48b8b6b33..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index e579cbf89..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index e579cbf89..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/eShopOnServiceFabric.sfproj b/ServiceFabric/Linux/eShopOnServiceFabric/eShopOnServiceFabric.sfproj deleted file mode 100644 index e345590fb..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/eShopOnServiceFabric.sfproj +++ /dev/null @@ -1,57 +0,0 @@ - - - - - 983eab84-65c5-4793-a300-08f97c791a15 - 1.6 - 1.5 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabric/packages.config b/ServiceFabric/Linux/eShopOnServiceFabric/packages.config deleted file mode 100644 index c5f59e48e..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabric/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 638b70194..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml deleted file mode 100644 index 35bc15b68..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - eshop/identity.api:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml deleted file mode 100644 index a1255b6c0..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index e8623180a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index e8623180a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj deleted file mode 100644 index 1d0d025a9..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 39b54901-d57d-416e-b51e-33c4017ca464 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config b/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 158c03905..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml deleted file mode 100644 index 7b6aa5565..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - eshop/webmvc:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml deleted file mode 100644 index d99e1573a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 1d59af5a6..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 1d59af5a6..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj deleted file mode 100644 index ff4ce2247..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 0cf895ff-3616-4d1f-8d2e-5d856cdf3612 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config b/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 7fca0294e..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml deleted file mode 100644 index 64d719c59..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - eshop/webspa:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml deleted file mode 100644 index fdeb6fd88..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 92fe692c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 92fe692c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj deleted file mode 100644 index 05ed606be..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 1670de10-5626-429d-a74a-2dd8281cc0c9 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config b/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index da2d7de0b..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml deleted file mode 100644 index 456c92ea1..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - eshop/webstatus:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml deleted file mode 100644 index f49e04e6b..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 9864bd050..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 9864bd050..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj deleted file mode 100644 index 1d4def7f2..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 25f73fd9-b32f-401a-80e8-17c72606a7e1 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config b/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Linux/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index bb1cf2743..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml deleted file mode 100644 index 9415f54f2..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationPackageRoot/RabbitMQPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - spring2/rabbitmq:3.6.10 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml deleted file mode 100644 index 5a4c2828d..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 1699b8eaa..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 1699b8eaa..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj deleted file mode 100644 index 0a56c800e..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Bus.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - f29e27c9-0d5e-4a57-adbf-dd651649d2a1 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricBus/Bus/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index fe031fe95..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml deleted file mode 100644 index be47332ca..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationPackageRoot/MongoDBPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - mongo:windowsservercore - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml deleted file mode 100644 index 8b48c39d1..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 22363f273..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 22363f273..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj deleted file mode 100644 index f07ff03a9..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/NoSQL.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - eb070036-ec60-49a6-88e1-562a2043c3d7 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricNoSql/NoSQL/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 11bf47a6a..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml deleted file mode 100644 index ea9deb355..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationPackageRoot/BasketDataPkg/ServiceManifest.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - redis:nanoserver - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml deleted file mode 100644 index 951ce24db..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index e2f3876c7..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index e2f3876c7..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj deleted file mode 100644 index 5b28bfdba..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Redis.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 17acd9ea-8f16-4091-aa29-c67002971eee - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricRedis/Redis/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 27fa4bfe2..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml deleted file mode 100644 index 252c74f21..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationPackageRoot/SqlServerPkg/ServiceManifest.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - microsoft/mssql-server-windows-developer:2017 - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml deleted file mode 100644 index 3ad12232a..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 9fc10b0bc..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 9fc10b0bc..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj deleted file mode 100644 index 48447811e..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/Sql.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 65a83188-79c1-47ad-931d-8e8a87247408 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config b/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/Infrastructure/eShopOnServiceFabricSql/Sql/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 05704ada8..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml deleted file mode 100644 index d45768eba..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - eshop/basket.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml deleted file mode 100644 index 5c14568eb..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - eshop/catalog.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml deleted file mode 100644 index 36a817d36..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - eshop/locations.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml deleted file mode 100644 index 2fa855974..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - eshop/marketing.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml deleted file mode 100644 index 2e7aae7a5..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - eshop/ordering.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml deleted file mode 100644 index c963ce512..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/OrderingBackgroundPkg/ServiceManifest.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - eshop/ordering.backgroundtasks-win - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml deleted file mode 100644 index 5d46ef47c..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationPackageRoot/PaymentApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - eshop/payment.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml deleted file mode 100644 index 48b8b6b33..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index e579cbf89..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index e579cbf89..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/eShopOnServiceFabric.sfproj b/ServiceFabric/Windows/eShopOnServiceFabric/eShopOnServiceFabric.sfproj deleted file mode 100644 index e345590fb..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/eShopOnServiceFabric.sfproj +++ /dev/null @@ -1,57 +0,0 @@ - - - - - 983eab84-65c5-4793-a300-08f97c791a15 - 1.6 - 1.5 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabric/packages.config b/ServiceFabric/Windows/eShopOnServiceFabric/packages.config deleted file mode 100644 index c5f59e48e..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabric/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index b39aef66a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml deleted file mode 100644 index 9650b783e..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - eshop/identity.api-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml deleted file mode 100644 index 207735106..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index e8623180a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index e8623180a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj deleted file mode 100644 index 1d0d025a9..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 39b54901-d57d-416e-b51e-33c4017ca464 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config b/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 8282adb11..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml deleted file mode 100644 index 55828da3e..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - eshop/webmvc-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml deleted file mode 100644 index d99e1573a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 1d59af5a6..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 1d59af5a6..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj deleted file mode 100644 index ff4ce2247..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 0cf895ff-3616-4d1f-8d2e-5d856cdf3612 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config b/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index e7479f239..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml deleted file mode 100644 index a0bd28a94..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - eshop/webspa-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml deleted file mode 100644 index fdeb6fd88..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 92fe692c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 92fe692c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj deleted file mode 100644 index 05ed606be..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 1670de10-5626-429d-a74a-2dd8281cc0c9 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config b/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml deleted file mode 100644 index 20fb0c3a9..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml deleted file mode 100644 index ad84ffd8a..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml deleted file mode 100644 index 58968f0e5..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - eshop/webstatus-win:#{tag}# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml deleted file mode 100644 index f49e04e6b..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml deleted file mode 100644 index 9864bd050..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml deleted file mode 100644 index 9864bd050..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml deleted file mode 100644 index 2ab9df11c..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml deleted file mode 100644 index 6e1403e96..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml deleted file mode 100644 index f42d759c3..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 deleted file mode 100644 index 2897b10e8..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 +++ /dev/null @@ -1,258 +0,0 @@ -<# -.SYNOPSIS -Deploys a Service Fabric application type to a cluster. - -.DESCRIPTION -This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project. - -.NOTES -WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary. - -.PARAMETER PublishProfileFile -Path to the file containing the publish profile. - -.PARAMETER ApplicationPackagePath -Path to the folder of the packaged Service Fabric application. - -.PARAMETER DeployOnly -Indicates that the Service Fabric application should not be created or upgraded after registering the application type. - -.PARAMETER ApplicationParameter -Hashtable of the Service Fabric application parameters to be used for the application. - -.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade -Indicates whether to unregister any unused application versions that exist after an upgrade is finished. - -.PARAMETER OverrideUpgradeBehavior -Indicates the behavior used to override the upgrade settings specified by the publish profile. -'None' indicates that the upgrade settings will not be overridden. -'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile. -'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile. - -.PARAMETER UseExistingClusterConnection -Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored. - -.PARAMETER OverwriteBehavior -Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application. -'Never' will not remove the existing application. This is the default behavior. -'Always' will remove the existing application even if its Application type and Version is different from the application being created. -'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created. - -.PARAMETER SkipPackageValidation -Switch signaling whether the package should be validated or not before deployment. - -.PARAMETER SecurityToken -A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory. - -.PARAMETER CopyPackageTimeoutSec -Timeout in seconds for copying application package to image store. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' - -Deploy the application using the default package location for a Debug build. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication - -Deploy the application but do not create the application instance. - -.EXAMPLE -. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'} - -Deploy the application by providing values for parameters that are defined in the application manifest. -#> - -Param -( - [String] - $PublishProfileFile, - - [String] - $ApplicationPackagePath, - - [Switch] - $DeployOnly, - - [Hashtable] - $ApplicationParameter, - - [Boolean] - $UnregisterUnusedApplicationVersionsAfterUpgrade, - - [String] - [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] - $OverrideUpgradeBehavior = 'None', - - [Switch] - $UseExistingClusterConnection, - - [String] - [ValidateSet('Never','Always','SameAppTypeAndVersion')] - $OverwriteBehavior = 'Never', - - [Switch] - $SkipPackageValidation, - - [String] - $SecurityToken, - - [int] - $CopyPackageTimeoutSec -) - -function Read-XmlElementAsHashtable -{ - Param ( - [System.Xml.XmlElement] - $Element - ) - - $hashtable = @{} - if ($Element.Attributes) - { - $Element.Attributes | - ForEach-Object { - $boolVal = $null - if ([bool]::TryParse($_.Value, [ref]$boolVal)) { - $hashtable[$_.Name] = $boolVal - } - else { - $hashtable[$_.Name] = $_.Value - } - } - } - - return $hashtable -} - -function Read-PublishProfile -{ - Param ( - [ValidateScript({Test-Path $_ -PathType Leaf})] - [String] - $PublishProfileFile - ) - - $publishProfileXml = [Xml] (Get-Content $PublishProfileFile) - $publishProfile = @{} - - $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters") - $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment") - $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters") - - if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment")) - { - $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters") - if ($publishProfile.UpgradeDeployment["Mode"]) - { - $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true - } - } - - $publishProfileFolder = (Split-Path $PublishProfileFile) - $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path) - - return $publishProfile -} - -$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path) - -if (!$PublishProfileFile) -{ - $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml" -} - -if (!$ApplicationPackagePath) -{ - $ApplicationPackagePath = "$LocalFolder\..\pkg\Release" -} - -$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath - -$publishProfile = Read-PublishProfile $PublishProfileFile - -if (-not $UseExistingClusterConnection) -{ - $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters - if ($SecurityToken) - { - $ClusterConnectionParameters["SecurityToken"] = $SecurityToken - } - - try - { - [void](Connect-ServiceFabricCluster @ClusterConnectionParameters) - } - catch [System.Fabric.FabricObjectClosedException] - { - Write-Warning "Service Fabric cluster may not be connected." - throw - } -} - -$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK" -$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath -Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1" - -$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade' - -$PublishParameters = @{ - 'ApplicationPackagePath' = $ApplicationPackagePath - 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile - 'ApplicationParameter' = $ApplicationParameter - 'ErrorAction' = 'Stop' -} - -if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec -} - -if ($publishProfile.CopyPackageParameters.CompressPackage) -{ - $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage -} - -# CopyPackageTimeoutSec parameter overrides the value from the publish profile -if ($CopyPackageTimeoutSec) -{ - $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec -} - -if ($IsUpgrade) -{ - $Action = "RegisterAndUpgrade" - if ($DeployOnly) - { - $Action = "Register" - } - - $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters - - if ($OverrideUpgradeBehavior -eq 'ForceUpgrade') - { - # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior. - $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true } - } - - $PublishParameters['Action'] = $Action - $PublishParameters['UpgradeParameters'] = $UpgradeParameters - $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade - - Publish-UpgradedServiceFabricApplication @PublishParameters -} -else -{ - $Action = "RegisterAndCreate" - if ($DeployOnly) - { - $Action = "Register" - } - - $PublishParameters['Action'] = $Action - $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior - $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation - - Publish-NewServiceFabricApplication @PublishParameters -} \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj deleted file mode 100644 index 1d4def7f2..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 25f73fd9-b32f-401a-80e8-17c72606a7e1 - 1.7 - 1.5 - 1.6 - v4.6.1 - - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets - - - - - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config b/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config deleted file mode 100644 index 3dc0a332b..000000000 --- a/ServiceFabric/Windows/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ServiceFabric/Windows/sfwin.sln b/ServiceFabric/Windows/sfwin.sln deleted file mode 100644 index 989ad6080..000000000 --- a/ServiceFabric/Windows/sfwin.sln +++ /dev/null @@ -1,13 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27323.2 -MinimumVisualStudioVersion = 10.0.40219.1 -Global - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {04B6E659-060F-4550-A5CA-70B9E9D8F010} - EndGlobalSection -EndGlobal From 6ab89ae6089da1bbee74db5cc4cc409019b8735a Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Sat, 16 Nov 2019 16:18:48 +0000 Subject: [PATCH 03/22] Remove obsolete folders --- .../Clients.Grpc.Caller.csproj | 17 --- src/Clients/Clients.Grpc.Caller/Program.cs | 50 ------- .../Clients.Grpc.Caller/Protos/basket.proto | 34 ----- src/Directory.Build.props | 3 - src/_build/ReadMe.md | 1 - src/_build/dependencies.props | 129 ------------------ src/csproj-files.txt | 34 ----- src/package-lock.json | 11 -- src/scripts/restore-packages | 1 - src/scripts/restore-packages.cmd | 1 - 10 files changed, 281 deletions(-) delete mode 100644 src/Clients/Clients.Grpc.Caller/Clients.Grpc.Caller.csproj delete mode 100644 src/Clients/Clients.Grpc.Caller/Program.cs delete mode 100644 src/Clients/Clients.Grpc.Caller/Protos/basket.proto delete mode 100644 src/Directory.Build.props delete mode 100644 src/_build/ReadMe.md delete mode 100644 src/_build/dependencies.props delete mode 100644 src/csproj-files.txt delete mode 100644 src/package-lock.json delete mode 100644 src/scripts/restore-packages delete mode 100644 src/scripts/restore-packages.cmd diff --git a/src/Clients/Clients.Grpc.Caller/Clients.Grpc.Caller.csproj b/src/Clients/Clients.Grpc.Caller/Clients.Grpc.Caller.csproj deleted file mode 100644 index 7cf903982..000000000 --- a/src/Clients/Clients.Grpc.Caller/Clients.Grpc.Caller.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - netcoreapp3.0 - - - - - - - - - - - - diff --git a/src/Clients/Clients.Grpc.Caller/Program.cs b/src/Clients/Clients.Grpc.Caller/Program.cs deleted file mode 100644 index 5a671ac6e..000000000 --- a/src/Clients/Clients.Grpc.Caller/Program.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Net.Http; -using System.Threading.Tasks; -using Grpc.Core; -using Grpc.Net.Client; -using GrpcBasket; -namespace Clients.Grpc.Caller -{ - class Program - { - static async Task Main(string[] args) - { - Console.WriteLine("Starting..."); - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true); - - using (var httpClientHandler = new HttpClientHandler()) - { - httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; - using (var httpClient = new HttpClient(httpClientHandler)) - { - // Make your request... - // var httpClient = new HttpClient(); - // The port number(5001) must match the port of the gRPC server. - //httpClient.BaseAddress = new Uri("http://localhost:5103"); - httpClient.BaseAddress = new Uri("http://localhost:5580"); - //httpClient.DefaultRequestVersion = Version.Parse("2.0"); - var client = GrpcClient.Create(httpClient); - - try - { - var reply = await client.GetBasketByIdAsync( - new BasketRequest { Id = "4f71a02f-4738-43a9-8c81-7652877e7102" }); - Console.WriteLine("Greeting: " + reply.Buyerid); - Console.WriteLine("Greeting: " + reply.Items); - - } - //catch(Grpc) - catch (RpcException e) - { - Console.WriteLine($"Error calling via grpc: {e.Status} - {e.Message}"); - } - - Console.WriteLine("Press any key to exit..."); - Console.ReadKey(); - } - } - } - } -} diff --git a/src/Clients/Clients.Grpc.Caller/Protos/basket.proto b/src/Clients/Clients.Grpc.Caller/Protos/basket.proto deleted file mode 100644 index f23c2f38e..000000000 --- a/src/Clients/Clients.Grpc.Caller/Protos/basket.proto +++ /dev/null @@ -1,34 +0,0 @@ -syntax = "proto3"; - -option csharp_namespace = "GrpcBasket"; - -package BasketApi; - -service Basket { - rpc GetBasketById(BasketRequest) returns (CustomerBasketResponse); - rpc UpdateBasket(CustomerBasketRequest) returns (CustomerBasketResponse); -} - -message BasketRequest { - string id = 1; -} - -message CustomerBasketRequest { - string buyerid = 1; - repeated BasketItemResponse items = 2; -} - -message CustomerBasketResponse { - string buyerid = 1; - repeated BasketItemResponse items = 2; -} - -message BasketItemResponse { - string id = 1; - int32 productid = 2; - string productname = 3; - double unitprice = 4; - double oldunitprice = 5; - int32 quantity = 6; - string pictureurl = 7; -} \ No newline at end of file diff --git a/src/Directory.Build.props b/src/Directory.Build.props deleted file mode 100644 index b137daefc..000000000 --- a/src/Directory.Build.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/_build/ReadMe.md b/src/_build/ReadMe.md deleted file mode 100644 index 536add60b..000000000 --- a/src/_build/ReadMe.md +++ /dev/null @@ -1 +0,0 @@ -`Please define why we are using this here.` diff --git a/src/_build/dependencies.props b/src/_build/dependencies.props deleted file mode 100644 index ee22d5ccb..000000000 --- a/src/_build/dependencies.props +++ /dev/null @@ -1,129 +0,0 @@ - - - netstandard2.1 - netcoreapp3.0 - 15.8.0 - preview - - - - 2.1.1 - 2.1.1 - - - - 2.9.406 - - - - 0.1.22-pre3 - 0.1.22-pre3 - 3.9.1 - 1.22.0 - 2.23.0 - 0.1.22-pre2 - - 2.2.0 - 2.2.0 - 2.2.0 - 2.2.0 - 2.2.0 - 2.2.0 - 2.2.3 - 2.2.22 - 2.2.2 - 4.2.1 - 4.9.2 - 2.6.375 - 1.50.7 - 7.5.0 - 3.0.0-preview3.4 - 3.0.0-preview3.4 - 3.0.0-preview3.4 - 3.0.0-preview3.4 - 3.0.0-preview3.4 - 5.1.0 - 5.1.0 - 2.2.1 - 2.6.1 - 1.0.2 - 5.2.7 - 3.0.0-preview8.19405.7 - 3.0.0-preview8.19405.7 - 3.0.0-preview8.19405.7 - 3.0.0-preview4-19123-01 - 3.0.0-preview4-19123-01 - 2.2.0-preview2-35157 - 3.0.0-preview8.19405.7 - 2.2.0 - 1.0.0 - 3.0.0-preview4-19123-01 - 3.0.0-preview4-19123-01 - 2.2.0 - 3.0.0-preview8.19405.7 - 3.0.0-preview4-19123-01 - 3.0.0-preview4-19123-01 - 3.0.0-preview8.19405.7 - 3.0.0-preview6.19307.2 - 3.0.0-preview4-19123-01 - 3.0.0-alpha1-10670 - 3.0.0-alpha1-34847 - 3.0.0-preview8.19405.7 - 3.0.0 - 15.9.20 - 4.5.0 - 3.0.0-preview5.19227.1 - 3.0.0-preview8.19405.11 - 3.0.0-preview5.19227.1 - 3.0.0-preview8.19405.11 - 3.0.0-preview5.19227.1 - 3.0.0-preview8.19405.11 - 3.0.0-preview8.19405.11 - 3.0.0-preview8.19405.4 - 2.2.0 - 2.2.0 - 3.0.0-preview8.19405.4 - 2.2.0 - 2.2.0 - 3.0.0-preview8.19405.7 - 3.0.0-preview8.19405.4 - 2.2.0 - 16.0.1 - 3.0.0-preview8.19405.3 - 1.0.2105168 - 1.7.9 - 3.0.0-preview6-19319-03 - 1.0.172 - 2.9.0-beta2 - 2.9.0-beta2 - 2.9.0-beta2 - 4.10.1 - 12.0.2 - 12.0.1 - 6.0.1 - 5.0.1 - 3.0.0-dev-00053 - 2.1.3 - 3.1.1-dev-00209 - 3.1.1 - 4.2.1 - 4.0.0 - 1.2.6 - 5.0.0-rc2 - 4.7.0-preview8.19405.3 - 4.3.0 - 4.5.1 - 4.3.0 - 4.5.0 - 2.4.0 - 2.4.0 - - - - https://github.com/dotnet-architecture/eShopOnContainers/blob/master/LICENSE - https://github.com/dotnet-architecture/eShopOnContainers - https://github.com/dotnet-architecture/eShopOnContainers - Microsoft - - - \ No newline at end of file diff --git a/src/csproj-files.txt b/src/csproj-files.txt deleted file mode 100644 index 6dc3532d9..000000000 --- a/src/csproj-files.txt +++ /dev/null @@ -1,34 +0,0 @@ -COPY src/ApiGateways/ApiGw-Base/*.csproj /src/src/ApiGateways/ApiGw-Base/ -COPY src/ApiGateways/Mobile.Bff.Shopping/aggregator/*.csproj /src/src/ApiGateways/Mobile.Bff.Shopping/aggregator/ -COPY src/ApiGateways/Web.Bff.Shopping/aggregator/*.csproj /src/src/ApiGateways/Web.Bff.Shopping/aggregator/ -COPY src/BuildingBlocks/EventBus/CommandBus/*.csproj /src/src/BuildingBlocks/EventBus/CommandBus/ -COPY src/BuildingBlocks/EventBus/EventBus/*.csproj /src/src/BuildingBlocks/EventBus/EventBus/ -COPY src/BuildingBlocks/EventBus/EventBus.Tests/*.csproj /src/src/BuildingBlocks/EventBus/EventBus.Tests/ -COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/*.csproj /src/src/BuildingBlocks/EventBus/EventBusRabbitMQ/ -COPY src/BuildingBlocks/EventBus/EventBusServiceBus/*.csproj /src/src/BuildingBlocks/EventBus/EventBusServiceBus/ -COPY src/BuildingBlocks/EventBus/IntegrationEventLogEF/*.csproj /src/src/BuildingBlocks/EventBus/IntegrationEventLogEF/ -COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/*.csproj /src/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/ -COPY src/Services/Basket/Basket.API/*.csproj /src/src/Services/Basket/Basket.API/ -COPY src/Services/Basket/Basket.FunctionalTests/*.csproj /src/src/Services/Basket/Basket.FunctionalTests/ -COPY src/Services/Basket/Basket.UnitTests/*.csproj /src/src/Services/Basket/Basket.UnitTests/ -COPY src/Services/Catalog/Catalog.API/*.csproj /src/src/Services/Catalog/Catalog.API/ -COPY src/Services/Catalog/Catalog.FunctionalTests/*.csproj /src/src/Services/Catalog/Catalog.FunctionalTests/ -COPY src/Services/Catalog/Catalog.UnitTests/*.csproj /src/src/Services/Catalog/Catalog.UnitTests/ -COPY src/Services/Identity/Identity.API/*.csproj /src/src/Services/Identity/Identity.API/ -COPY src/Services/Location/Locations.API/*.csproj /src/src/Services/Location/Locations.API/ -COPY src/Services/Location/Locations.FunctionalTests/*.csproj /src/src/Services/Location/Locations.FunctionalTests/ -COPY src/Services/Marketing/Marketing.API/*.csproj /src/src/Services/Marketing/Marketing.API/ -COPY src/Services/Marketing/Marketing.FunctionalTests/*.csproj /src/src/Services/Marketing/Marketing.FunctionalTests/ -COPY src/Services/Ordering/Ordering.API/*.csproj /src/src/Services/Ordering/Ordering.API/ -COPY src/Services/Ordering/Ordering.BackgroundTasks/*.csproj /src/src/Services/Ordering/Ordering.BackgroundTasks/ -COPY src/Services/Ordering/Ordering.Domain/*.csproj /src/src/Services/Ordering/Ordering.Domain/ -COPY src/Services/Ordering/Ordering.FunctionalTests/*.csproj /src/src/Services/Ordering/Ordering.FunctionalTests/ -COPY src/Services/Ordering/Ordering.Infrastructure/*.csproj /src/src/Services/Ordering/Ordering.Infrastructure/ -COPY src/Services/Ordering/Ordering.SignalrHub/*.csproj /src/src/Services/Ordering/Ordering.SignalrHub/ -COPY src/Services/Ordering/Ordering.UnitTests/*.csproj /src/src/Services/Ordering/Ordering.UnitTests/ -COPY src/Services/Payment/Payment.API/*.csproj /src/src/Services/Payment/Payment.API/ -COPY src/Services/Webhooks/Webhooks.API/*.csproj /src/src/Services/Webhooks/Webhooks.API/ -COPY src/Web/WebhookClient/*.csproj /src/src/Web/WebhookClient/ -COPY src/Web/WebMVC/*.csproj /src/src/Web/WebMVC/ -COPY src/Web/WebSPA/*.csproj /src/src/Web/WebSPA/ -COPY src/Web/WebStatus/*.csproj /src/src/Web/WebStatus/ diff --git a/src/package-lock.json b/src/package-lock.json deleted file mode 100644 index ba627e674..000000000 --- a/src/package-lock.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@aspnet/signalr": { - "version": "1.0.0-preview1-update1", - "resolved": "https://registry.npmjs.org/@aspnet/signalr/-/signalr-1.0.0-preview1-update1.tgz", - "integrity": "sha512-TGFCoLa2svN37Ew5ue0kGFxbkmQzq2I9N5TMLFBWRrpTYF4txlE3yPX0EaPt/NToKBaK1A+VK8Q+1MGSYtnqUw==" - } - } -} diff --git a/src/scripts/restore-packages b/src/scripts/restore-packages deleted file mode 100644 index 58bb10c62..000000000 --- a/src/scripts/restore-packages +++ /dev/null @@ -1 +0,0 @@ -echo RESTORING ALL PACKAGES...; for f in /src/csproj-files/*.csproj; do dotnet restore $f; done \ No newline at end of file diff --git a/src/scripts/restore-packages.cmd b/src/scripts/restore-packages.cmd deleted file mode 100644 index 9f3a8434e..000000000 --- a/src/scripts/restore-packages.cmd +++ /dev/null @@ -1 +0,0 @@ -for %%p in (csproj-files\*.csproj) do dotnet restore %%p From ade6358eca27a7a735132937da0827f3d6485b56 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Mon, 18 Nov 2019 15:03:28 +0000 Subject: [PATCH 04/22] Reorganize project folders --- .../Mobile.Shopping.HttpAggregator.csproj | 8 +++---- .../Web.Shopping.HttpAggregator.csproj | 8 +++---- .../Devspaces.Support.csproj | 2 +- .../EventBus.Tests/EventBus.Tests.csproj | 8 +++---- .../EventBus/EventBus/EventBus.csproj | 2 +- .../EventBusRabbitMQ/EventBusRabbitMQ.csproj | 2 +- .../EventBusServiceBus.csproj | 2 +- .../IntegrationEventLogEF.csproj | 2 +- .../WebHost.Customization.csproj | 4 ++-- .../Basket/Basket.API/Basket.API.csproj | 14 +++++------ .../Basket.FunctionalTests.csproj | 2 +- .../Basket.UnitTests/Basket.UnitTests.csproj | 6 ++--- .../Catalog/Catalog.API/Catalog.API.csproj | 12 +++++----- .../Catalog.FunctionalTests.csproj | 2 +- .../Catalog.UnitTests.csproj | 6 ++--- .../Identity/Identity.API/Identity.API.csproj | 14 +++++------ .../Locations.API/Locations.API.csproj | 14 +++++------ .../Locations.FunctionalTests.csproj | 2 +- .../Marketing.API/Marketing.API.csproj | 14 +++++------ .../Marketing.FunctionalTests.csproj | 2 +- .../Ordering/Ordering.API/Ordering.API.csproj | 14 +++++------ .../Ordering.BackgroundTasks.csproj | 16 ++++++------- .../Ordering.Domain/Ordering.Domain.csproj | 2 +- .../Ordering.FunctionalTests.csproj | 2 +- .../Ordering.Infrastructure.csproj | 2 +- .../Ordering.SignalrHub.csproj | 16 ++++++------- .../Ordering.UnitTests.csproj | 6 ++--- .../Payment/Payment.API/Payment.API.csproj | 10 ++++---- .../Webhooks/Webhooks.API/Webhooks.API.csproj | 10 ++++---- .../Application.FunctionalTests.csproj | 22 +++++++++--------- .../Extensions/HttpClientExtensions.cs | 0 .../Middleware/AutoAuthorizeMiddleware.cs | 0 .../Services/Basket/BasketScenariosBase.cs | 0 .../Services/Basket/BasketTestsStartup.cs | 0 .../Services/Basket/appsettings.json | 0 .../Services/Catalog/CatalogScenariosBase.cs | 0 .../Services/Catalog/appsettings.json | 0 .../Services/IntegrationEventsScenarios.cs | 0 .../Location/LocationsScenariosBase.cs | 0 .../Location/LocationsTestsStartup.cs | 0 .../Services/Location/appsettings.json | 0 .../Marketing/CampaignScenariosBase.cs | 0 .../Services/Marketing/MarketingScenarios.cs | 0 .../Marketing/MarketingScenariosBase.cs | 0 .../Marketing/MarketingTestsStartup.cs | 0 .../UserLocationRoleScenariosBase.cs | 0 .../Services/Marketing/appsettings.json | 0 .../Services/Ordering/OrderingScenarios.cs | 0 .../Ordering/OrderingScenariosBase.cs | 0 .../Services/Ordering/OrderingTestsStartup.cs | 0 .../Services/Ordering/appsettings.json | 0 .../Setup/CatalogBrands.csv | 0 .../Setup/CatalogItems.csv | 0 .../Setup/CatalogItems.zip | Bin .../Setup/CatalogTypes.csv | 0 src/Web/WebMVC/WebMVC.csproj | 14 +++++------ src/Web/WebSPA/WebSPA.csproj | 6 ++--- src/Web/WebStatus/WebStatus.csproj | 10 ++++---- src/Web/WebhookClient/WebhookClient.csproj | 6 ++--- src/eShopOnContainers-ServicesAndWebApps.sln | 6 ++--- 60 files changed, 134 insertions(+), 134 deletions(-) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Application.FunctionalTests.csproj (81%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Extensions/HttpClientExtensions.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Basket/BasketScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Basket/BasketTestsStartup.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Basket/appsettings.json (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Catalog/appsettings.json (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Location/LocationsScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Location/LocationsTestsStartup.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Location/appsettings.json (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Marketing/CampaignScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Marketing/MarketingScenarios.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Marketing/MarketingScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Marketing/MarketingTestsStartup.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Marketing/appsettings.json (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Ordering/OrderingTestsStartup.cs (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Services/Ordering/appsettings.json (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Setup/CatalogBrands.csv (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Setup/CatalogItems.csv (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Setup/CatalogItems.zip (100%) rename {test/ServicesTests => src/Tests/Services}/Application.FunctionalTests/Setup/CatalogTypes.csv (100%) diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj index 31d56dda7..a0ba7bd58 100644 --- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj +++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj @@ -1,13 +1,13 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 Mobile.Shopping.HttpAggregator Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator ..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -22,11 +22,11 @@ - + - + diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj b/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj index 0f8ae5efe..92e524eb0 100644 --- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj @@ -1,13 +1,13 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 Web.Shopping.HttpAggregator Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator ..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -23,11 +23,11 @@ - + - + diff --git a/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj b/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj index 0679c99a6..1db0dce7d 100644 --- a/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj +++ b/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj @@ -4,7 +4,7 @@ netstandard2.0 - + diff --git a/src/BuildingBlocks/EventBus/EventBus.Tests/EventBus.Tests.csproj b/src/BuildingBlocks/EventBus/EventBus.Tests/EventBus.Tests.csproj index 1d3f2bc0f..a05d5157d 100644 --- a/src/BuildingBlocks/EventBus/EventBus.Tests/EventBus.Tests.csproj +++ b/src/BuildingBlocks/EventBus/EventBus.Tests/EventBus.Tests.csproj @@ -1,13 +1,13 @@  - $(NetStandardTargetVersion) + netstandard2.1 - - - + + + diff --git a/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj b/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj index 53d0a36a2..e07454650 100644 --- a/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj +++ b/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj @@ -1,7 +1,7 @@  - $(NetStandardTargetVersion) + netstandard2.1 Microsoft.eShopOnContainers.BuildingBlocks.EventBus diff --git a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj index a6116abec..6e13b2196 100644 --- a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj +++ b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj @@ -1,7 +1,7 @@  - $(NetStandardTargetVersion) + netstandard2.1 Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ diff --git a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj index 362bccf6c..8f24578d5 100644 --- a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj +++ b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj @@ -1,7 +1,7 @@  - $(NetStandardTargetVersion) + netstandard2.1 Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus diff --git a/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj b/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj index 14b867059..e009e08c3 100644 --- a/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj +++ b/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj @@ -1,7 +1,7 @@  - $(NetStandardTargetVersion) + netstandard2.1 Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF diff --git a/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj b/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj index 38ab6b285..51567f38a 100644 --- a/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj +++ b/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj @@ -1,12 +1,12 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj index df260ed7e..579be01df 100644 --- a/src/Services/Basket/Basket.API/Basket.API.csproj +++ b/src/Services/Basket/Basket.API/Basket.API.csproj @@ -1,12 +1,12 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; ..\..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -28,17 +28,17 @@ - - + + - - + + - + diff --git a/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj b/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj index 5e9e5c036..e229bf4dc 100644 --- a/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj +++ b/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false diff --git a/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj b/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj index 92731fb9c..cb4559f97 100644 --- a/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj +++ b/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj @@ -1,16 +1,16 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false false - + - + diff --git a/src/Services/Catalog/Catalog.API/Catalog.API.csproj b/src/Services/Catalog/Catalog.API/Catalog.API.csproj index 662c55c08..2a08b699c 100644 --- a/src/Services/Catalog/Catalog.API/Catalog.API.csproj +++ b/src/Services/Catalog/Catalog.API/Catalog.API.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 portable true Catalog.API @@ -10,7 +10,7 @@ ..\..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -54,16 +54,16 @@ - + - - + + - + diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj b/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj index 5e7fcefbe..1a2079c49 100644 --- a/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj +++ b/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false diff --git a/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj b/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj index 44b5660c1..0a097242e 100644 --- a/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj +++ b/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj @@ -1,14 +1,14 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false false - - + + diff --git a/src/Services/Identity/Identity.API/Identity.API.csproj b/src/Services/Identity/Identity.API/Identity.API.csproj index f2e7bec58..b70653cfb 100644 --- a/src/Services/Identity/Identity.API/Identity.API.csproj +++ b/src/Services/Identity/Identity.API/Identity.API.csproj @@ -1,12 +1,12 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 aspnet-eShopOnContainers.Identity-90487118-103c-4ff0-b9da-e5e26f7ab0c5 ..\..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -29,8 +29,8 @@ - - + + all @@ -43,12 +43,12 @@ - - + + - + diff --git a/src/Services/Location/Locations.API/Locations.API.csproj b/src/Services/Location/Locations.API/Locations.API.csproj index 4cbab433a..10eb6b5b7 100644 --- a/src/Services/Location/Locations.API/Locations.API.csproj +++ b/src/Services/Location/Locations.API/Locations.API.csproj @@ -1,12 +1,12 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 ..\..\..\..\docker-compose.dcproj aspnet-Locations.API-20161122013619 false true - $(LangVersion) + preview @@ -19,20 +19,20 @@ - - + + - - + + - + diff --git a/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj b/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj index 1e3e15e8a..742e2d409 100644 --- a/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj +++ b/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false false diff --git a/src/Services/Marketing/Marketing.API/Marketing.API.csproj b/src/Services/Marketing/Marketing.API/Marketing.API.csproj index 497cefa4a..56d685e61 100644 --- a/src/Services/Marketing/Marketing.API/Marketing.API.csproj +++ b/src/Services/Marketing/Marketing.API/Marketing.API.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 ..\..\..\..\docker-compose.dcproj Microsoft.eShopOnContainers.Services.Marketing.API $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; @@ -11,7 +11,7 @@ /subscriptions/6c22bb55-0221-4ce4-9bf1-3c4a10a7294c/resourcegroups/eshop-log/providers/microsoft.insights/components/eshopappinsights /subscriptions/6c22bb55-0221-4ce4-9bf1-3c4a10a7294c/resourcegroups/eshop-log/providers/microsoft.insights/components/eshopappinsights - $(LangVersion) + preview @@ -35,20 +35,20 @@ - - + + - - + + - + diff --git a/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj b/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj index 9f51dfbbc..6d7d6ff14 100644 --- a/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj +++ b/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false diff --git a/src/Services/Ordering/Ordering.API/Ordering.API.csproj b/src/Services/Ordering/Ordering.API/Ordering.API.csproj index e3e5c8767..49688e07d 100644 --- a/src/Services/Ordering/Ordering.API/Ordering.API.csproj +++ b/src/Services/Ordering/Ordering.API/Ordering.API.csproj @@ -1,13 +1,13 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 aspnet-Ordering.API-20161122013547 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; ..\..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -53,20 +53,20 @@ - - + + - - + + - + diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj index 5e9a6eb83..7eed9b117 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj @@ -1,11 +1,11 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 dotnet-Ordering.BackgroundTasks-9D3E1DD6-405B-447F-8AAB-1708B36D260E false Linux - $(LangVersion) + preview @@ -16,14 +16,14 @@ - - - - + + + + - - + + diff --git a/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj b/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj index 0574427f0..05ae14ea0 100644 --- a/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj +++ b/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj @@ -1,7 +1,7 @@  - $(NetStandardTargetVersion) + netstandard2.1 diff --git a/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj b/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj index 05668125f..119f72863 100644 --- a/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj +++ b/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false diff --git a/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj b/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj index 22bfb2a56..a83c6d2ff 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj +++ b/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj @@ -1,7 +1,7 @@  - $(NetStandardTargetVersion) + netstandard2.1 diff --git a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj index feaeae4b2..315cf6edf 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj +++ b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj @@ -1,11 +1,11 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 ..\..\..\..\docker-compose.dcproj false true - $(LangVersion) + preview @@ -21,15 +21,15 @@ - + - - - + + + - - + + diff --git a/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj index 5b7ed2060..69bc989a0 100644 --- a/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj +++ b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj @@ -1,15 +1,15 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 false false - - + + diff --git a/src/Services/Payment/Payment.API/Payment.API.csproj b/src/Services/Payment/Payment.API/Payment.API.csproj index 497349a66..48aa65102 100644 --- a/src/Services/Payment/Payment.API/Payment.API.csproj +++ b/src/Services/Payment/Payment.API/Payment.API.csproj @@ -1,12 +1,12 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 ..\..\..\..\docker-compose.dcproj $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false true - $(LangVersion) + preview @@ -17,12 +17,12 @@ - + - - + + diff --git a/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj b/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj index 1e9b44858..dfbc5cb7b 100644 --- a/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj +++ b/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj @@ -1,13 +1,13 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 InProcess Linux $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false true - $(LangVersion) + preview @@ -18,11 +18,11 @@ - - + + - + diff --git a/test/ServicesTests/Application.FunctionalTests/Application.FunctionalTests.csproj b/src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj similarity index 81% rename from test/ServicesTests/Application.FunctionalTests/Application.FunctionalTests.csproj rename to src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj index 96ef8f046..0ce51e413 100644 --- a/test/ServicesTests/Application.FunctionalTests/Application.FunctionalTests.csproj +++ b/src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 true false false @@ -67,22 +67,22 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers - - - - - - + + + + + + diff --git a/test/ServicesTests/Application.FunctionalTests/Extensions/HttpClientExtensions.cs b/src/Tests/Services/Application.FunctionalTests/Extensions/HttpClientExtensions.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Extensions/HttpClientExtensions.cs rename to src/Tests/Services/Application.FunctionalTests/Extensions/HttpClientExtensions.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs b/src/Tests/Services/Application.FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs rename to src/Tests/Services/Application.FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Basket/BasketScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Basket/BasketScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Basket/BasketScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Basket/BasketScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Basket/BasketTestsStartup.cs b/src/Tests/Services/Application.FunctionalTests/Services/Basket/BasketTestsStartup.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Basket/BasketTestsStartup.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Basket/BasketTestsStartup.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Basket/appsettings.json b/src/Tests/Services/Application.FunctionalTests/Services/Basket/appsettings.json similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Basket/appsettings.json rename to src/Tests/Services/Application.FunctionalTests/Services/Basket/appsettings.json diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Catalog/appsettings.json b/src/Tests/Services/Application.FunctionalTests/Services/Catalog/appsettings.json similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Catalog/appsettings.json rename to src/Tests/Services/Application.FunctionalTests/Services/Catalog/appsettings.json diff --git a/test/ServicesTests/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs b/src/Tests/Services/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs rename to src/Tests/Services/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Location/LocationsScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Location/LocationsScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Location/LocationsScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Location/LocationsScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Location/LocationsTestsStartup.cs b/src/Tests/Services/Application.FunctionalTests/Services/Location/LocationsTestsStartup.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Location/LocationsTestsStartup.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Location/LocationsTestsStartup.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Location/appsettings.json b/src/Tests/Services/Application.FunctionalTests/Services/Location/appsettings.json similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Location/appsettings.json rename to src/Tests/Services/Application.FunctionalTests/Services/Location/appsettings.json diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Marketing/CampaignScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Marketing/CampaignScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Marketing/CampaignScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Marketing/CampaignScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Marketing/MarketingScenarios.cs b/src/Tests/Services/Application.FunctionalTests/Services/Marketing/MarketingScenarios.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Marketing/MarketingScenarios.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Marketing/MarketingScenarios.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Marketing/MarketingScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Marketing/MarketingScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Marketing/MarketingScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Marketing/MarketingScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Marketing/MarketingTestsStartup.cs b/src/Tests/Services/Application.FunctionalTests/Services/Marketing/MarketingTestsStartup.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Marketing/MarketingTestsStartup.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Marketing/MarketingTestsStartup.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Marketing/UserLocationRoleScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Marketing/appsettings.json b/src/Tests/Services/Application.FunctionalTests/Services/Marketing/appsettings.json similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Marketing/appsettings.json rename to src/Tests/Services/Application.FunctionalTests/Services/Marketing/appsettings.json diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Ordering/OrderingTestsStartup.cs b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingTestsStartup.cs similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Ordering/OrderingTestsStartup.cs rename to src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingTestsStartup.cs diff --git a/test/ServicesTests/Application.FunctionalTests/Services/Ordering/appsettings.json b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/appsettings.json similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Services/Ordering/appsettings.json rename to src/Tests/Services/Application.FunctionalTests/Services/Ordering/appsettings.json diff --git a/test/ServicesTests/Application.FunctionalTests/Setup/CatalogBrands.csv b/src/Tests/Services/Application.FunctionalTests/Setup/CatalogBrands.csv similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Setup/CatalogBrands.csv rename to src/Tests/Services/Application.FunctionalTests/Setup/CatalogBrands.csv diff --git a/test/ServicesTests/Application.FunctionalTests/Setup/CatalogItems.csv b/src/Tests/Services/Application.FunctionalTests/Setup/CatalogItems.csv similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Setup/CatalogItems.csv rename to src/Tests/Services/Application.FunctionalTests/Setup/CatalogItems.csv diff --git a/test/ServicesTests/Application.FunctionalTests/Setup/CatalogItems.zip b/src/Tests/Services/Application.FunctionalTests/Setup/CatalogItems.zip similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Setup/CatalogItems.zip rename to src/Tests/Services/Application.FunctionalTests/Setup/CatalogItems.zip diff --git a/test/ServicesTests/Application.FunctionalTests/Setup/CatalogTypes.csv b/src/Tests/Services/Application.FunctionalTests/Setup/CatalogTypes.csv similarity index 100% rename from test/ServicesTests/Application.FunctionalTests/Setup/CatalogTypes.csv rename to src/Tests/Services/Application.FunctionalTests/Setup/CatalogTypes.csv diff --git a/src/Web/WebMVC/WebMVC.csproj b/src/Web/WebMVC/WebMVC.csproj index f6d02d0cd..bdbb29924 100644 --- a/src/Web/WebMVC/WebMVC.csproj +++ b/src/Web/WebMVC/WebMVC.csproj @@ -1,13 +1,13 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 aspnet-Microsoft.eShopOnContainers-946ae052-8305-4a99-965b-ec8636ddbae3 ..\..\..\docker-compose.dcproj 3.0 false true - $(LangVersion) + preview @@ -22,7 +22,7 @@ - + @@ -32,14 +32,14 @@ - - + + - - + + diff --git a/src/Web/WebSPA/WebSPA.csproj b/src/Web/WebSPA/WebSPA.csproj index a3b247086..baefec967 100644 --- a/src/Web/WebSPA/WebSPA.csproj +++ b/src/Web/WebSPA/WebSPA.csproj @@ -1,7 +1,7 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 aspnetcorespa-c23d27a4-eb88-4b18-9b77-2a93f3b15119 ..\..\..\docker-compose.dcproj false @@ -10,7 +10,7 @@ wwwroot/dist/** $(DefaultItemExcludes);$(GeneratedItemPatterns) 2.9 - $(LangVersion) + preview @@ -93,7 +93,7 @@ - + diff --git a/src/Web/WebStatus/WebStatus.csproj b/src/Web/WebStatus/WebStatus.csproj index 7ddadb6f2..39d454473 100644 --- a/src/Web/WebStatus/WebStatus.csproj +++ b/src/Web/WebStatus/WebStatus.csproj @@ -1,10 +1,10 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; ..\..\..\docker-compose.dcproj true - $(LangVersion) + preview @@ -14,13 +14,13 @@ - + - - + + diff --git a/src/Web/WebhookClient/WebhookClient.csproj b/src/Web/WebhookClient/WebhookClient.csproj index 95f4b79e8..7c67bced2 100644 --- a/src/Web/WebhookClient/WebhookClient.csproj +++ b/src/Web/WebhookClient/WebhookClient.csproj @@ -1,18 +1,18 @@  - $(NetCoreTargetVersion) + netcoreapp3.0 InProcess Linux 36215d41-f31a-4aa6-9929-bd67d650e7b5 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false true - $(LangVersion) + preview - + diff --git a/src/eShopOnContainers-ServicesAndWebApps.sln b/src/eShopOnContainers-ServicesAndWebApps.sln index c41d22d92..08dd3e656 100644 --- a/src/eShopOnContainers-ServicesAndWebApps.sln +++ b/src/eShopOnContainers-ServicesAndWebApps.sln @@ -24,9 +24,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basket", "Basket", "{BF3EF4 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ordering", "Ordering", "{0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ServicesTests", "ServicesTests", "{EF0337F2-ED00-4643-89FD-EE10863F1870}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ServiceTests", "ServiceTests", "{EF0337F2-ED00-4643-89FD-EE10863F1870}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Identity", "Identity", "{24CD3B53-141E-4A07-9B0D-796641E1CF78}" EndProject @@ -116,7 +116,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.FunctionalTests", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Marketing.FunctionalTests", "Services\Marketing\Marketing.FunctionalTests\Marketing.FunctionalTests.csproj", "{94176D9B-9CAA-4762-8D12-1621E240EE34}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Application.FunctionalTests", "test\ServicesTests\Application.FunctionalTests\Application.FunctionalTests.csproj", "{639BB197-D112-47A7-A44A-471DDB0FA1AE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Application.FunctionalTests", "Tests\Services\Application.FunctionalTests\Application.FunctionalTests.csproj", "{639BB197-D112-47A7-A44A-471DDB0FA1AE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{2751AC5C-D148-4D7A-AE8F-149B47C9A82D}" EndProject From 593be81bb01847c3d5024d6d6958c07eca2008d5 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Mon, 18 Nov 2019 15:04:11 +0000 Subject: [PATCH 05/22] Improve docker build cache usage --- src/.dockerignore | 23 ++------- .../Mobile.Bff.Shopping/aggregator/Dockerfile | 44 +++++++++++++++++- .../Web.Bff.Shopping/aggregator/Dockerfile | 44 +++++++++++++++++- src/DockerfileSolutionProjects.txt | Bin 0 -> 9084 bytes src/Get-DockerfileSolutionProjects.ps1 | 18 +++++++ src/Services/Basket/Basket.API/Dockerfile | 44 +++++++++++++++++- src/Services/Catalog/Catalog.API/Dockerfile | 44 +++++++++++++++++- src/Services/Identity/Identity.API/Dockerfile | 44 +++++++++++++++++- .../Location/Locations.API/Dockerfile | 44 +++++++++++++++++- .../Marketing/Marketing.API/Dockerfile | 44 +++++++++++++++++- src/Services/Ordering/Ordering.API/Dockerfile | 44 +++++++++++++++++- .../Ordering.BackgroundTasks/Dockerfile | 43 ++++++++++++++++- .../Ordering/Ordering.SignalrHub/Dockerfile | 44 +++++++++++++++++- src/Services/Payment/Payment.API/Dockerfile | 44 +++++++++++++++++- src/Services/Webhooks/Webhooks.API/Dockerfile | 44 +++++++++++++++++- src/Web/WebMVC/Dockerfile | 44 +++++++++++++++++- src/Web/WebSPA/Dockerfile | 44 +++++++++++++++++- src/Web/WebStatus/Dockerfile | 42 ++++++++++++++++- src/Web/WebhookClient/Dockerfile | 44 +++++++++++++++++- 19 files changed, 707 insertions(+), 35 deletions(-) create mode 100644 src/DockerfileSolutionProjects.txt create mode 100644 src/Get-DockerfileSolutionProjects.ps1 diff --git a/src/.dockerignore b/src/.dockerignore index 077c2c71e..2cec0e7b0 100644 --- a/src/.dockerignore +++ b/src/.dockerignore @@ -9,31 +9,16 @@ docker-compose*.yml hosts LICENSE *.testsettings -vsts-docs -ServiceFabric -readme -k8s -img -docs -deploy -Components -cli-windows -cli-mac -cli-linux **/bin/ **/obj/ **/node_modules/ **/bower_components/ -**/wwwroot/lib/* +**/wwwroot/lib/ global.json **/appsettings.localhost.json -src/Web/WebSPA/wwwroot/ +Web/WebSPA/wwwroot/ packages/ -csproj-files/ test-results/ TestResults/ -src/Mobile/ -src/Web/Catalog.WebForms/ -src/Web/WebMonolithic/ -src/BuildingBlocks/CommandBus/ -src/Services/Marketing/Infrastructure/ \ No newline at end of file +Mobile/ +Services/Marketing/Infrastructure/ \ No newline at end of file diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile index 0a75d7b65..1f5c77573 100644 --- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile +++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/ApiGateways/Mobile.Bff.Shopping/aggregator -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile b/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile index e6035ec14..b449be5b1 100644 --- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/ApiGateways/Web.Bff.Shopping/aggregator -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/DockerfileSolutionProjects.txt b/src/DockerfileSolutionProjects.txt new file mode 100644 index 0000000000000000000000000000000000000000..006f664d87e72d6ca8af9e919471f54cbb415ce1 GIT binary patch literal 9084 zcmd5?+fv&w5Z&j_^dA`BvA=|Al&eOK*rjP3&xYN$-I+2bN#>egcY=&fvv0TJBJr(1>pF zmpuE)IxAX0Zi@d4cs9p>?qiLz)UMd6v=TajWDd)Rigp5qGPG^b*N>8m*N?IRm zGg|4r9G8`a(6O%ch9Q&ujc9A4Z&pUy2$8r(Wc)PId4za-G*L1w=M%@~7E$wHA}~h` z`en38`yY10e18Ye=a_vtX64qf;janz)Zb@HQbt;d?bj7D%(cl%Ir7s-jIl%@B_txw z*6tCOJ^F3BKjxnb3anGbkg z;Q1Jl)L&Mj+=a9L)`lPp17rI0g>a`j-FW37pKaLSOE3C>n;)dtj6f5^9c+62HIY=<~ zT++k+cK0vYc1ue%!+81(ZkFJrn;Tm~BH-K;76*2pk^@^pTJ`%qHu-`_o-=HU48doE z>bZ_}yZT)T=kW}&vMKjK)h&`;S4T{Do3yR36Sh9zPe}~B*o)_@n`0fXTPH3z zZd)<%`MJD6)Nm%>wYtFY@l;&z2x#T56ebtg9qA}sJ5-KlI#o=v&nYJkJ05*8*v&HSL zhD?)_h<4{m>wQ-gad^?r9&*GJvZdm2V)v~vVoON`em*WSYo3sGi!)G)TdwAFy=Lq6 z(w-g#ZQY?Z{5};okNnPeUA~c$HML(|E&V)`+SToAZ9CkO^sjjXW#1+hZ>R4tlbfeJ z->D_ViI3mLh3aXnyk>lo%VNCbD2)vd)eLBlX|ql9K5mb0yl3nMxkCxl+ z1X3UVx7$a{XP0j!bF53edoGxsn48L?t`CN=9vF|rG(#5QT|J*|4p8DfD!<3h zP?O-ybAzYmuOUL@HGAjq_dWW~(K}n?y$!F^`{s8i-K|w$S6G?OA $outfile + +Add-Content -Path $outfile "" +Select-String -Path $solution -Pattern ', "(.*?\.csproj)"' | ForEach-Object { $_.Matches.Groups[1].Value.Replace("\", "/") } | Sort-Object | ForEach-Object {"COPY ""$_"" ""$_"""} | Out-File -FilePath $outfile -Append +Add-Content -Path $outfile "" +Select-String -Path $solution -Pattern ', "(.*?\.dcproj)"' | ForEach-Object { $_.Matches.Groups[1].Value.Replace("\", "/") } | Sort-Object | ForEach-Object {"COPY ""$_"" ""$_"""} | Out-File -FilePath $outfile -Append +Add-Content -Path $outfile "" +Add-Content -Path $outfile "COPY ""NuGet.config"" ""NuGet.config""" +Add-Content -Path $outfile "" +Add-Content -Path $outfile "RUN dotnet restore ""$solution""" + +Get-Content $outfile diff --git a/src/Services/Basket/Basket.API/Dockerfile b/src/Services/Basket/Basket.API/Dockerfile index 6c7bac8f6..9a068d83e 100644 --- a/src/Services/Basket/Basket.API/Dockerfile +++ b/src/Services/Basket/Basket.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Basket/Basket.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build as unittest WORKDIR /src/Services/Basket/Basket.UnitTests diff --git a/src/Services/Catalog/Catalog.API/Dockerfile b/src/Services/Catalog/Catalog.API/Dockerfile index b1a9fdba2..4c227b11a 100644 --- a/src/Services/Catalog/Catalog.API/Dockerfile +++ b/src/Services/Catalog/Catalog.API/Dockerfile @@ -6,9 +6,51 @@ EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Catalog/Catalog.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build as unittest WORKDIR /src/Services/Catalog/Catalog.UnitTests diff --git a/src/Services/Identity/Identity.API/Dockerfile b/src/Services/Identity/Identity.API/Dockerfile index 129420dfe..a292540ed 100644 --- a/src/Services/Identity/Identity.API/Dockerfile +++ b/src/Services/Identity/Identity.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Identity/Identity.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Services/Location/Locations.API/Dockerfile b/src/Services/Location/Locations.API/Dockerfile index 2a1986717..f10437db6 100644 --- a/src/Services/Location/Locations.API/Dockerfile +++ b/src/Services/Location/Locations.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Location/Locations.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build as functionaltest WORKDIR /src/Services/Location/Locations.FunctionalTests diff --git a/src/Services/Marketing/Marketing.API/Dockerfile b/src/Services/Marketing/Marketing.API/Dockerfile index 2ec76fd16..cd249e94e 100644 --- a/src/Services/Marketing/Marketing.API/Dockerfile +++ b/src/Services/Marketing/Marketing.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Marketing/Marketing.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build as functionaltest WORKDIR /src/Services/Marketing/Marketing.FunctionalTests diff --git a/src/Services/Ordering/Ordering.API/Dockerfile b/src/Services/Ordering/Ordering.API/Dockerfile index 1858c9a2e..62894ce9f 100644 --- a/src/Services/Ordering/Ordering.API/Dockerfile +++ b/src/Services/Ordering/Ordering.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Ordering/Ordering.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build as unittest WORKDIR /src/Services/Ordering/Ordering.UnitTests diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile index 613185101..c21192a89 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile @@ -5,10 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" COPY . . WORKDIR /src/Services/Ordering/Ordering.BackgroundTasks -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Services/Ordering/Ordering.SignalrHub/Dockerfile b/src/Services/Ordering/Ordering.SignalrHub/Dockerfile index 28b18abe8..b684c3027 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/Dockerfile +++ b/src/Services/Ordering/Ordering.SignalrHub/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Ordering/Ordering.SignalrHub -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Services/Payment/Payment.API/Dockerfile b/src/Services/Payment/Payment.API/Dockerfile index 69b6efa07..08115ed21 100644 --- a/src/Services/Payment/Payment.API/Dockerfile +++ b/src/Services/Payment/Payment.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Payment/Payment.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Services/Webhooks/Webhooks.API/Dockerfile b/src/Services/Webhooks/Webhooks.API/Dockerfile index 6f6813fbe..5e6c37b7d 100644 --- a/src/Services/Webhooks/Webhooks.API/Dockerfile +++ b/src/Services/Webhooks/Webhooks.API/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Services/Webhooks/Webhooks.API -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Web/WebMVC/Dockerfile b/src/Web/WebMVC/Dockerfile index 0027b1749..60a2ff5ad 100644 --- a/src/Web/WebMVC/Dockerfile +++ b/src/Web/WebMVC/Dockerfile @@ -5,9 +5,51 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Web/WebMVC -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Web/WebSPA/Dockerfile b/src/Web/WebSPA/Dockerfile index 99141bba6..acb039fe7 100644 --- a/src/Web/WebSPA/Dockerfile +++ b/src/Web/WebSPA/Dockerfile @@ -14,10 +14,52 @@ RUN npm run build:prod FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . COPY --from=node-build /web/wwwroot /src/Web/WebSPA/wwwroot/ WORKDIR /src/Web/WebSPA -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Web/WebStatus/Dockerfile b/src/Web/WebStatus/Dockerfile index 89b03b5f2..b027268ba 100644 --- a/src/Web/WebStatus/Dockerfile +++ b/src/Web/WebStatus/Dockerfile @@ -5,10 +5,50 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" COPY . . WORKDIR /src/Web/WebStatus -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish diff --git a/src/Web/WebhookClient/Dockerfile b/src/Web/WebhookClient/Dockerfile index 2fc4ef147..bce6a4f54 100644 --- a/src/Web/WebhookClient/Dockerfile +++ b/src/Web/WebhookClient/Dockerfile @@ -6,9 +6,51 @@ EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src +COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln" + +COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" +COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" +COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" +COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj" +COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" +COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" +COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" +COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" +COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj" +COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" +COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" +COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj" +COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" +COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" +COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj" +COPY "Services/Location/Locations.API/Locations.API.csproj" "Services/Location/Locations.API/Locations.API.csproj" +COPY "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" "Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj" +COPY "Services/Marketing/Marketing.API/Marketing.API.csproj" "Services/Marketing/Marketing.API/Marketing.API.csproj" +COPY "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" "Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj" +COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" +COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" +COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" +COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" +COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" +COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" +COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj" +COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" +COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" +COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj" +COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj" +COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj" +COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj" + +COPY "docker-compose.dcproj" "docker-compose.dcproj" + +COPY "NuGet.config" "NuGet.config" + +RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln" + COPY . . WORKDIR /src/Web/WebhookClient -RUN dotnet publish -c Release -o /app +RUN dotnet publish --no-restore -c Release -o /app FROM build AS publish From 8734958e5e71e24858f39844642e34bc8f6bcda9 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Mon, 18 Nov 2019 18:31:34 +0000 Subject: [PATCH 06/22] Add IdentityUrlExternal config in appsettings --- src/Services/Basket/Basket.FunctionalTests/appsettings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Services/Basket/Basket.FunctionalTests/appsettings.json b/src/Services/Basket/Basket.FunctionalTests/appsettings.json index 3f882d1bc..8b9ec4d3c 100644 --- a/src/Services/Basket/Basket.FunctionalTests/appsettings.json +++ b/src/Services/Basket/Basket.FunctionalTests/appsettings.json @@ -8,9 +8,10 @@ } }, "IdentityUrl": "http://localhost:5105", + "IdentityUrlExternal": "http://localhost:5105", "ConnectionString": "127.0.0.1", "isTest": "true", "EventBusConnection": "localhost", "SubscriptionClientName": "Basket", - "SuppressCheckForUnhandledSecurityMetadata":true + "SuppressCheckForUnhandledSecurityMetadata": true } From 4b48468d6a14d4321b943f7b461c1e470c84c488 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Mon, 18 Nov 2019 18:32:54 +0000 Subject: [PATCH 07/22] Fix tests compilation errors --- .../Services/Catalog/CatalogScenariosBase.cs | 2 +- .../Services/IntegrationEventsScenarios.cs | 8 ++++---- .../Services/Ordering/OrderingScenarios.cs | 2 +- .../Services/Ordering/OrderingScenariosBase.cs | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Tests/Services/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs index 3ce419230..ffaef64a3 100644 --- a/src/Tests/Services/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs +++ b/src/Tests/Services/Application.FunctionalTests/Services/Catalog/CatalogScenariosBase.cs @@ -33,7 +33,7 @@ namespace FunctionalTests.Services.Catalog testServer.Host .MigrateDbContext((context, services) => { - var env = services.GetService(); + var env = services.GetService(); var settings = services.GetService>(); var logger = services.GetService>(); diff --git a/src/Tests/Services/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs b/src/Tests/Services/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs index fd270d159..dd6eef99a 100644 --- a/src/Tests/Services/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs +++ b/src/Tests/Services/Application.FunctionalTests/Services/IntegrationEventsScenarios.cs @@ -56,7 +56,7 @@ namespace FunctionalTests.Services else { //THEN the product price changes in the catalog - Assert.Equal(newPrice, modifiedCatalogProducts.Data.Single(it => it.Id == int.Parse(itemToModify.ProductId)).Price); + Assert.Equal(newPrice, modifiedCatalogProducts.Data.Single(it => it.Id == itemToModify.ProductId).Price); // AND the products in the basket reflects the changed priced and the original price Assert.Equal(newPrice, itemUpdated.UnitPrice); @@ -65,7 +65,7 @@ namespace FunctionalTests.Services } } - private async Task GetUpdatedBasketItem(decimal newPrice, string productId, string userId, HttpClient basketClient) + private async Task GetUpdatedBasketItem(decimal newPrice, int productId, string userId, HttpClient basketClient) { bool continueLoop = true; var counter = 0; @@ -102,7 +102,7 @@ namespace FunctionalTests.Services private string ChangePrice(BasketItem itemToModify, decimal newPrice, PaginatedItemsViewModel catalogProducts) { - var catalogProduct = catalogProducts.Data.Single(pr => pr.Id == int.Parse(itemToModify.ProductId)); + var catalogProduct = catalogProducts.Data.Single(pr => pr.Id == itemToModify.ProductId); catalogProduct.Price = newPrice; return JsonConvert.SerializeObject(catalogProduct); } @@ -117,7 +117,7 @@ namespace FunctionalTests.Services Id = Guid.NewGuid().ToString(), UnitPrice = item.Price, PictureUrl = item.PictureUri, - ProductId = item.Id.ToString(), + ProductId = item.Id, OldUnitPrice = 0, ProductName = item.Name, Quantity = 1 diff --git a/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs index 179717583..cb1fc2526 100644 --- a/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs +++ b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs @@ -104,7 +104,7 @@ namespace FunctionalTests.Services.Ordering { Id = "1", ProductName = "ProductName", - ProductId = "1", + ProductId = 1, UnitPrice = 10, Quantity = 1 } diff --git a/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs index ad5230fcd..487e435d2 100644 --- a/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs +++ b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenariosBase.cs @@ -33,7 +33,7 @@ namespace FunctionalTests.Services.Ordering testServer.Host .MigrateDbContext((context, services) => { - var env = services.GetService(); + var env = services.GetService(); var settings = services.GetService>(); var logger = services.GetService>(); From 3adb63aba5926b6cc2ae69b2be7f0dba90cc35bf Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Mon, 18 Nov 2019 18:38:35 +0000 Subject: [PATCH 08/22] Run unit and integration tests from VS --- ...1 => Create-DockerfileSolutionRestore.ps1} | 2 +- ...ects.txt => DockerfileSolutionRestore.txt} | Bin src/docker-compose-tests.override.yml | 8 ++--- src/docker-compose-tests.yml | 30 +++++++++--------- src/docker-compose.yml | 20 ++++++------ src/run-test-infrastructure.ps1 | 1 + 6 files changed, 31 insertions(+), 30 deletions(-) rename src/{Get-DockerfileSolutionProjects.ps1 => Create-DockerfileSolutionRestore.ps1} (95%) rename src/{DockerfileSolutionProjects.txt => DockerfileSolutionRestore.txt} (100%) create mode 100644 src/run-test-infrastructure.ps1 diff --git a/src/Get-DockerfileSolutionProjects.ps1 b/src/Create-DockerfileSolutionRestore.ps1 similarity index 95% rename from src/Get-DockerfileSolutionProjects.ps1 rename to src/Create-DockerfileSolutionRestore.ps1 index fbb1c626e..8c6714bd5 100644 --- a/src/Get-DockerfileSolutionProjects.ps1 +++ b/src/Create-DockerfileSolutionRestore.ps1 @@ -2,7 +2,7 @@ param ( [string]$solution = "eShopOnContainers-ServicesAndWebApps.sln" ) -$outfile = "DockerfileSolutionProjects.txt" +$outfile = "DockerfileSolutionRestore.txt" Write-Output "COPY ""$solution"" ""$solution""" > $outfile diff --git a/src/DockerfileSolutionProjects.txt b/src/DockerfileSolutionRestore.txt similarity index 100% rename from src/DockerfileSolutionProjects.txt rename to src/DockerfileSolutionRestore.txt diff --git a/src/docker-compose-tests.override.yml b/src/docker-compose-tests.override.yml index cee5c6623..35e8170da 100644 --- a/src/docker-compose-tests.override.yml +++ b/src/docker-compose-tests.override.yml @@ -4,7 +4,7 @@ services: rabbitmq-test: ports: - "15672:15672" - - "5672:5672" + - "5672:5672" basket-data-test: ports: @@ -27,7 +27,7 @@ services: - ASPNETCORE_URLS=http://0.0.0.0:80 - SpaClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5104 - XamarinCallback=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105/xamarincallback - - ConnectionString=${ESHOP_AZURE_IDENTITY_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word} + - ConnectionString=${ESHOP_AZURE_IDENTITY_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word} - MvcClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5100 - LocationApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5109 - MarketingApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5110 @@ -35,7 +35,7 @@ services: - OrderingApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5102 - MobileShoppingAggClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5120 - WebShoppingAggClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5121 - - UseCustomizationData=True + - UseCustomizationData=True - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} ports: @@ -179,7 +179,7 @@ services: - dotnet - test - --logger - - trx;LogFileName=/tests/ordering-unit-test-results.xml + - trx;LogFileName=/tests/ordering-unit-test-results.xml marketing-api-test: environment: diff --git a/src/docker-compose-tests.yml b/src/docker-compose-tests.yml index 440e3e5c0..13f1ddf46 100644 --- a/src/docker-compose-tests.yml +++ b/src/docker-compose-tests.yml @@ -1,18 +1,18 @@ version: '3.4' services: - rabbitmq-test: - image: rabbitmq:3-management-alpine - - basket-data-test: - image: redis:alpine - sql-data-test: image: microsoft/mssql-server-linux:2017-latest nosql-data-test: image: mongo + basket-data-test: + image: redis:alpine + + rabbitmq-test: + image: rabbitmq:3-management-alpine + identity-api-test: image: ${REGISTRY:-eshop}/identity-api-test:${TAG:-latest} build: @@ -31,7 +31,7 @@ services: - basket-data-test - identity-api-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests basket-api-unit-test: @@ -44,7 +44,7 @@ services: - basket-data-test - identity-api-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests catalog-api-test: @@ -56,7 +56,7 @@ services: depends_on: - sql-data-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests catalog-api-unit-test: @@ -68,7 +68,7 @@ services: depends_on: - sql-data-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests ordering-api-test: @@ -80,7 +80,7 @@ services: depends_on: - sql-data-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests ordering-api-unit-test: @@ -92,8 +92,8 @@ services: depends_on: - sql-data-test - rabbitmq-test - volumes: - - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests marketing-api-test: image: ${REGISTRY:-eshop}/marketing-api-test:${TAG:-latest} @@ -106,7 +106,7 @@ services: - nosql-data-test - identity-api-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests payment-api-test: @@ -126,5 +126,5 @@ services: depends_on: - nosql-data-test - rabbitmq-test - volumes: + volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests \ No newline at end of file diff --git a/src/docker-compose.yml b/src/docker-compose.yml index 97245790f..65edc42f9 100644 --- a/src/docker-compose.yml +++ b/src/docker-compose.yml @@ -21,7 +21,7 @@ services: image: ${REGISTRY:-eshop}/identity.api:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Services/Identity/Identity.API/Dockerfile + dockerfile: Services/Identity/Identity.API/Dockerfile depends_on: - sqldata @@ -29,7 +29,7 @@ services: image: ${REGISTRY:-eshop}/basket.api:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Services/Basket/Basket.API/Dockerfile + dockerfile: Services/Basket/Basket.API/Dockerfile depends_on: - basketdata - identity-api @@ -48,7 +48,7 @@ services: image: ${REGISTRY:-eshop}/ordering.api:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Services/Ordering/Ordering.API/Dockerfile + dockerfile: Services/Ordering/Ordering.API/Dockerfile depends_on: - sqldata - rabbitmq @@ -57,7 +57,7 @@ services: image: ${REGISTRY:-eshop}/ordering.backgroundtasks:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Services/Ordering/Ordering.BackgroundTasks/Dockerfile + dockerfile: Services/Ordering/Ordering.BackgroundTasks/Dockerfile depends_on: - sqldata - rabbitmq @@ -66,7 +66,7 @@ services: image: ${REGISTRY:-eshop}/marketing.api:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Services/Marketing/Marketing.API/Dockerfile + dockerfile: Services/Marketing/Marketing.API/Dockerfile depends_on: - sqldata - nosqldata @@ -79,7 +79,7 @@ services: context: . dockerfile: Services/Payment/Payment.API/Dockerfile depends_on: - - rabbitmq + - rabbitmq locations-api: image: ${REGISTRY:-eshop}/locations.api:${PLATFORM:-linux}-${TAG:-latest} @@ -96,7 +96,7 @@ services: context: . dockerfile: Services/Webhooks/Webhooks.API/Dockerfile depends_on: - - sqldata + - sqldata mobileshoppingapigw: image: envoyproxy/envoy:v1.11.1 @@ -159,7 +159,7 @@ services: image: ${REGISTRY:-eshop}/webspa:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Web/WebSPA/Dockerfile + dockerfile: Web/WebSPA/Dockerfile args: NODE_IMAGE: ${NODE_IMAGE:-node:8.11} # depends_on: @@ -171,7 +171,7 @@ services: image: ${REGISTRY:-eshop}/webmvc:${PLATFORM:-linux}-${TAG:-latest} build: context: . - dockerfile: Web/WebMVC/Dockerfile + dockerfile: Web/WebMVC/Dockerfile depends_on: - webshoppingagg - webshoppingapigw @@ -183,7 +183,7 @@ services: context: . dockerfile: Web/WebhookClient/Dockerfile depends_on: - - webhooks-api + - webhooks-api webshoppingapigw: image: envoyproxy/envoy:v1.11.1 diff --git a/src/run-test-infrastructure.ps1 b/src/run-test-infrastructure.ps1 new file mode 100644 index 000000000..156289511 --- /dev/null +++ b/src/run-test-infrastructure.ps1 @@ -0,0 +1 @@ +docker-compose -f .\docker-compose-tests.yml -f .\docker-compose-tests.override.yml up sql-data-test nosql-data-test basket-data-test rabbitmq-test identity-api-test payment-api-test From 37fdbf38e8fbbce65f8f20cc5a9b43e89fdd52c6 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Mon, 18 Nov 2019 20:14:54 +0000 Subject: [PATCH 09/22] Add required configuration --- .../Application.FunctionalTests/Services/Basket/appsettings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Tests/Services/Application.FunctionalTests/Services/Basket/appsettings.json b/src/Tests/Services/Application.FunctionalTests/Services/Basket/appsettings.json index 5e8dbc02e..3ed325899 100644 --- a/src/Tests/Services/Application.FunctionalTests/Services/Basket/appsettings.json +++ b/src/Tests/Services/Application.FunctionalTests/Services/Basket/appsettings.json @@ -8,6 +8,7 @@ } }, "IdentityUrl": "http://localhost:5105", + "IdentityUrlExternal": "http://localhost:5105", "ConnectionString": "127.0.0.1", "isTest": "true", "EventBusConnection": "localhost", From 285b0cebe410c22d102f26ab5cf1e35bdf87196b Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Wed, 20 Nov 2019 17:44:05 +0000 Subject: [PATCH 10/22] Fix to close issue #1162 --- .../IntegrationEvents/OrderingIntegrationEventService.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs index cb7ce5513..28cf08c4b 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs @@ -21,7 +21,6 @@ namespace Ordering.API.Application.IntegrationEvents private readonly Func _integrationEventLogServiceFactory; private readonly IEventBus _eventBus; private readonly OrderingContext _orderingContext; - private readonly IntegrationEventLogContext _eventLogContext; private readonly IIntegrationEventLogService _eventLogService; private readonly ILogger _logger; @@ -32,7 +31,6 @@ namespace Ordering.API.Application.IntegrationEvents ILogger logger) { _orderingContext = orderingContext ?? throw new ArgumentNullException(nameof(orderingContext)); - _eventLogContext = eventLogContext ?? throw new ArgumentNullException(nameof(eventLogContext)); _integrationEventLogServiceFactory = integrationEventLogServiceFactory ?? throw new ArgumentNullException(nameof(integrationEventLogServiceFactory)); _eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus)); _eventLogService = _integrationEventLogServiceFactory(_orderingContext.Database.GetDbConnection()); From f39e0907d3fc312c84054f6f39f9948d99e9bd23 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Wed, 20 Nov 2019 18:36:38 +0000 Subject: [PATCH 11/22] Add configuration value for running in Mac --- src/.env | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/.env b/src/.env index 28a94504c..260a54663 100644 --- a/src/.env +++ b/src/.env @@ -4,7 +4,12 @@ # The IP below should be swapped to your real IP or DNS name, like 192.168.88.248, etc. if testing from remote browsers or mobile devices +# Use this value to run the app locally in Windows/Linux ESHOP_EXTERNAL_DNS_NAME_OR_IP=localhost + +# Use this value to run the app locally in Mac +#ESHOP_EXTERNAL_DNS_NAME_OR_IP=docker.for.mac.localhost + ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=10.121.122.162 #ESHOP_AZURE_REDIS_BASKET_DB= From b3a0c86e8f0c26acc078ff17dca74a05f653e9be Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Wed, 20 Nov 2019 19:02:01 +0000 Subject: [PATCH 12/22] Relocate/remove folders --- .../azurefunctions/azurefunctionsdeploy.json | 0 .../azurefunctionsdeploy.parameters.json | 0 .../{ => azure}/az/azurefunctions/readme.md | 0 .../{ => azure}/az/cosmos/deploycosmos.json | 0 .../az/cosmos/deploycosmos.parameters.json | 0 deploy/{ => azure}/az/cosmos/readme.md | 0 deploy/{ => azure}/az/create-resources.cmd | 0 deploy/{ => azure}/az/createresources.sh | 0 deploy/{ => azure}/az/readme.md | 0 deploy/{ => azure}/az/redis/readme.md | 0 deploy/{ => azure}/az/redis/redisdeploy.json | 0 .../az/redis/redisdeploy.parameters.json | 0 deploy/{ => azure}/az/servicebus/readme.md | 0 .../{ => azure}/az/servicebus/sbusdeploy.json | 0 .../az/servicebus/sbusdeploy.parameters.json | 0 .../LinuxContainers/gen-keyvaultcert.ps1 | 0 .../servicefabric/LinuxContainers/readme.md | 0 .../LinuxContainers/servicefabricdeploy.json | 0 .../servicefabricdeploy.parameters.json | 0 .../servicefabricdeploysecured.json | 0 ...servicefabricdeploysecured.parameters.json | 0 .../WindowsContainers/gen-keyvaultcert.ps1 | 0 .../servicefabric/WindowsContainers/readme.md | 0 .../servicefabricdeploy.json | 0 .../servicefabricdeploy.parameters.json | 0 .../servicefabricdeploysecured.json | 0 ...servicefabricdeploysecured.parameters.json | 0 deploy/{ => azure}/az/sql/readme.md | 0 deploy/{ => azure}/az/sql/sqldeploy.json | 0 .../az/sql/sqldeploy.parameters.json | 0 .../az/storage/catalog/deploystorage.json | 0 .../catalog/deploystorage.parameters.json | 0 .../{ => azure}/az/storage/catalog/readme.md | 0 .../az/storage/marketing/deploystorage.json | 0 .../marketing/deploystorage.parameters.json | 0 .../az/storage/marketing/readme.md | 0 deploy/{ => azure}/az/vms/docker-machine.md | 0 .../{ => azure}/az/vms/linux-vm/linuxvm.json | 0 .../az/vms/linux-vm/linuxvm.parameters.json | 0 deploy/{ => azure}/az/vms/plain-vm.md | 0 deploy/{ => azure}/az/vms/readme.md | 0 .../{ => azure}/az/vms/win-vm/windowsvm.json | 0 .../az/vms/win-vm/windowsvm.parameters.json | 0 deploy/{ => azure}/readme.md | 0 {elk => deploy/elk}/Readme.md | 0 {elk => deploy/elk}/elasticsearch/Dockerfile | 0 .../elasticsearch/config/elasticsearch.yml | 0 {elk => deploy/elk}/kibana/Dockerfile | 0 {elk => deploy/elk}/kibana/config/kibana.yml | 0 {elk => deploy/elk}/logstash/Dockerfile | 0 .../elk}/logstash/config/logstash.yml | 0 .../elk}/logstash/pipeline/logstash.conf | 0 {k8s => deploy/k8s}/README.CICD.k8s.md | 0 {k8s => deploy/k8s}/README.k8s.md | 0 {k8s => deploy/k8s}/build-push-images.ps1 | 0 {k8s => deploy/k8s}/conf-files.md | 0 {k8s => deploy/k8s}/conf_cloud.yaml | 0 {k8s => deploy/k8s}/conf_local.yaml | 0 {k8s => deploy/k8s}/deploy-ingress-azure.ps1 | 0 .../k8s}/deploy-ingress-dockerlocal.ps1 | 0 {k8s => deploy/k8s}/deploy-ingress.ps1 | 0 {k8s => deploy/k8s}/deploy-nodeports.ps1 | 0 {k8s => deploy/k8s}/deploy.ps1 | 0 {k8s => deploy/k8s}/deploy.sh | 0 {k8s => deploy/k8s}/gen-k8s-env-aks.ps1 | 0 {k8s => deploy/k8s}/helm-rbac.yaml | 0 .../k8s}/helm/aks-httpaddon-cfg.yaml | 0 {k8s => deploy/k8s}/helm/apigwmm/.helmignore | 0 {k8s => deploy/k8s}/helm/apigwmm/Chart.yaml | 0 {k8s => deploy/k8s}/helm/apigwmm/envoy.yaml | 0 .../k8s}/helm/apigwmm/templates/NOTES.txt | 0 .../k8s}/helm/apigwmm/templates/_helpers.tpl | 0 .../k8s}/helm/apigwmm/templates/_names.tpl | 0 .../helm/apigwmm/templates/deployment.yaml | 0 .../k8s}/helm/apigwmm/templates/envoy-cm.yaml | 0 .../k8s}/helm/apigwmm/templates/ingress.yaml | 0 .../k8s}/helm/apigwmm/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/apigwmm/values.yaml | 0 {k8s => deploy/k8s}/helm/apigwms/.helmignore | 0 {k8s => deploy/k8s}/helm/apigwms/Chart.yaml | 0 {k8s => deploy/k8s}/helm/apigwms/envoy.yaml | 0 .../k8s}/helm/apigwms/templates/NOTES.txt | 0 .../k8s}/helm/apigwms/templates/_helpers.tpl | 0 .../k8s}/helm/apigwms/templates/_names.tpl | 0 .../helm/apigwms/templates/deployment.yaml | 0 .../k8s}/helm/apigwms/templates/envoy-cm.yaml | 0 .../k8s}/helm/apigwms/templates/ingress.yaml | 0 .../k8s}/helm/apigwms/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/apigwms/values.yaml | 0 {k8s => deploy/k8s}/helm/apigwwm/.helmignore | 0 {k8s => deploy/k8s}/helm/apigwwm/Chart.yaml | 0 {k8s => deploy/k8s}/helm/apigwwm/envoy.yaml | 0 .../k8s}/helm/apigwwm/templates/NOTES.txt | 0 .../k8s}/helm/apigwwm/templates/_helpers.tpl | 0 .../k8s}/helm/apigwwm/templates/_names.tpl | 0 .../helm/apigwwm/templates/deployment.yaml | 0 .../k8s}/helm/apigwwm/templates/envoy-cm.yaml | 0 .../k8s}/helm/apigwwm/templates/ingress.yaml | 0 .../k8s}/helm/apigwwm/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/apigwwm/values.yaml | 0 {k8s => deploy/k8s}/helm/apigwws/.helmignore | 0 {k8s => deploy/k8s}/helm/apigwws/Chart.yaml | 0 {k8s => deploy/k8s}/helm/apigwws/envoy.yaml | 0 .../k8s}/helm/apigwws/templates/NOTES.txt | 0 .../k8s}/helm/apigwws/templates/_helpers.tpl | 0 .../k8s}/helm/apigwws/templates/_names.tpl | 0 .../helm/apigwws/templates/deployment.yaml | 0 .../k8s}/helm/apigwws/templates/envoy-cm.yaml | 0 .../k8s}/helm/apigwws/templates/ingress.yaml | 0 .../k8s}/helm/apigwws/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/apigwws/values.yaml | 0 {k8s => deploy/k8s}/helm/app.yaml | 0 .../k8s}/helm/basket-api/.helmignore | 0 .../k8s}/helm/basket-api/Chart.yaml | 0 .../k8s}/helm/basket-api/templates/NOTES.txt | 0 .../helm/basket-api/templates/_helpers.tpl | 0 .../k8s}/helm/basket-api/templates/_names.tpl | 0 .../helm/basket-api/templates/configmap.yaml | 0 .../helm/basket-api/templates/deployment.yaml | 0 .../helm/basket-api/templates/ingress.yaml | 0 .../helm/basket-api/templates/service.yaml | 0 .../k8s}/helm/basket-api/values.yaml | 0 .../k8s}/helm/basket-data/.helmignore | 0 .../k8s}/helm/basket-data/Chart.yaml | 0 .../k8s}/helm/basket-data/templates/NOTES.txt | 0 .../helm/basket-data/templates/_helpers.tpl | 0 .../basket-data/templates/deployment.yaml | 0 .../helm/basket-data/templates/service.yaml | 0 .../k8s}/helm/basket-data/values.yaml | 0 .../k8s}/helm/catalog-api/.helmignore | 0 .../k8s}/helm/catalog-api/Chart.yaml | 0 .../k8s}/helm/catalog-api/templates/NOTES.txt | 0 .../helm/catalog-api/templates/_helpers.tpl | 0 .../helm/catalog-api/templates/_names.tpl | 0 .../helm/catalog-api/templates/configmap.yaml | 0 .../catalog-api/templates/deployment.yaml | 0 .../helm/catalog-api/templates/ingress.yaml | 0 .../helm/catalog-api/templates/service.yaml | 0 .../k8s}/helm/catalog-api/values.yaml | 0 {k8s => deploy/k8s}/helm/deploy-all-istio.ps1 | 0 {k8s => deploy/k8s}/helm/deploy-all.ps1 | 0 {k8s => deploy/k8s}/helm/deploy-all.sh | 0 .../k8s}/helm/eshop-common/.helmignore | 0 .../k8s}/helm/eshop-common/Chart.yaml | 0 .../helm/eshop-common/templates/NOTES.txt | 0 .../helm/eshop-common/templates/_helpers.tpl | 0 .../helm/eshop-common/templates/_names.tpl | 0 .../helm/eshop-common/templates/secret.yaml | 0 .../k8s}/helm/eshop-common/values.yaml | 0 .../k8s}/helm/identity-api/.helmignore | 0 .../k8s}/helm/identity-api/Chart.yaml | 0 .../helm/identity-api/templates/NOTES.txt | 0 .../helm/identity-api/templates/_helpers.tpl | 0 .../helm/identity-api/templates/_names.tpl | 0 .../identity-api/templates/configmap.yaml | 0 .../identity-api/templates/deployment.yaml | 0 .../templates/ingress-dockerk8s.yaml | 0 .../helm/identity-api/templates/ingress.yaml | 0 .../helm/identity-api/templates/service.yaml | 0 .../k8s}/helm/identity-api/values.yaml | 0 {k8s => deploy/k8s}/helm/inf.yaml | 0 {k8s => deploy/k8s}/helm/ingress_values.yaml | 0 .../k8s}/helm/ingress_values_dockerk8s.yaml | 0 .../k8s}/helm/ingress_values_linkerd.yaml | 0 {k8s => deploy/k8s}/helm/istio/doc.md | 0 {k8s => deploy/k8s}/helm/istio/gateway.yml | 0 .../k8s}/helm/istio/virtualservices.yml | 0 .../k8s}/helm/keystore-data/.helmignore | 0 .../k8s}/helm/keystore-data/Chart.yaml | 0 .../helm/keystore-data/templates/NOTES.txt | 0 .../helm/keystore-data/templates/_helpers.tpl | 0 .../keystore-data/templates/deployment.yaml | 0 .../helm/keystore-data/templates/service.yaml | 0 .../k8s}/helm/keystore-data/values.yaml | 0 .../k8s}/helm/locations-api/.helmignore | 0 .../k8s}/helm/locations-api/Chart.yaml | 0 .../helm/locations-api/templates/NOTES.txt | 0 .../helm/locations-api/templates/_helpers.tpl | 0 .../helm/locations-api/templates/_names.tpl | 0 .../locations-api/templates/configmap.yaml | 0 .../locations-api/templates/deployment.yaml | 0 .../helm/locations-api/templates/ingress.yaml | 0 .../helm/locations-api/templates/service.yaml | 0 .../k8s}/helm/locations-api/values.yaml | 0 .../k8s}/helm/marketing-api/.helmignore | 0 .../k8s}/helm/marketing-api/Chart.yaml | 0 .../helm/marketing-api/templates/NOTES.txt | 0 .../helm/marketing-api/templates/_helpers.tpl | 0 .../helm/marketing-api/templates/_names.tpl | 0 .../marketing-api/templates/configmap.yaml | 0 .../marketing-api/templates/deployment.yaml | 0 .../helm/marketing-api/templates/ingress.yaml | 0 .../helm/marketing-api/templates/service.yaml | 0 .../k8s}/helm/marketing-api/values.yaml | 0 .../k8s}/helm/mobileshoppingagg/.helmignore | 0 .../k8s}/helm/mobileshoppingagg/Chart.yaml | 0 .../mobileshoppingagg/templates/NOTES.txt | 0 .../mobileshoppingagg/templates/_helpers.tpl | 0 .../mobileshoppingagg/templates/_names.tpl | 0 .../templates/configmap.yaml | 0 .../templates/deployment.yaml | 0 .../mobileshoppingagg/templates/ingress.yaml | 0 .../mobileshoppingagg/templates/service.yaml | 0 .../k8s}/helm/mobileshoppingagg/values.yaml | 0 .../k8s}/helm/nosql-data/.helmignore | 0 .../k8s}/helm/nosql-data/Chart.yaml | 0 .../k8s}/helm/nosql-data/templates/NOTES.txt | 0 .../helm/nosql-data/templates/_helpers.tpl | 0 .../k8s}/helm/nosql-data/templates/_names.tpl | 0 .../helm/nosql-data/templates/deployment.yaml | 0 .../helm/nosql-data/templates/service.yaml | 0 .../k8s}/helm/nosql-data/values.yaml | 0 .../k8s}/helm/ordering-api/.helmignore | 0 .../k8s}/helm/ordering-api/Chart.yaml | 0 .../helm/ordering-api/templates/NOTES.txt | 0 .../helm/ordering-api/templates/_helpers.tpl | 0 .../helm/ordering-api/templates/_names.tpl | 0 .../ordering-api/templates/configmap.yaml | 0 .../ordering-api/templates/deployment.yaml | 0 .../helm/ordering-api/templates/service.yaml | 0 .../k8s}/helm/ordering-api/values.yaml | 0 .../helm/ordering-backgroundtasks/.helmignore | 0 .../helm/ordering-backgroundtasks/Chart.yaml | 0 .../templates/NOTES.txt | 0 .../templates/_helpers.tpl | 0 .../templates/_names.tpl | 0 .../templates/configmap.yaml | 0 .../templates/deployment.yaml | 0 .../templates/service.yaml | 0 .../helm/ordering-backgroundtasks/values.yaml | 0 .../k8s}/helm/ordering-signalrhub/.helmignore | 0 .../k8s}/helm/ordering-signalrhub/Chart.yaml | 0 .../ordering-signalrhub/templates/NOTES.txt | 0 .../templates/_helpers.tpl | 0 .../ordering-signalrhub/templates/_names.tpl | 0 .../templates/configmap.yaml | 0 .../templates/deployment.yaml | 0 .../templates/service.yaml | 0 .../k8s}/helm/ordering-signalrhub/values.yaml | 0 .../k8s}/helm/payment-api/.helmignore | 0 .../k8s}/helm/payment-api/Chart.yaml | 0 .../k8s}/helm/payment-api/templates/NOTES.txt | 0 .../helm/payment-api/templates/_helpers.tpl | 0 .../helm/payment-api/templates/_names.tpl | 0 .../helm/payment-api/templates/configmap.yaml | 0 .../payment-api/templates/deployment.yaml | 0 .../helm/payment-api/templates/service.yaml | 0 .../k8s}/helm/payment-api/values.yaml | 0 {k8s => deploy/k8s}/helm/rabbitmq/.helmignore | 0 {k8s => deploy/k8s}/helm/rabbitmq/Chart.yaml | 0 .../k8s}/helm/rabbitmq/templates/NOTES.txt | 0 .../k8s}/helm/rabbitmq/templates/_helpers.tpl | 0 .../k8s}/helm/rabbitmq/templates/_names.tpl | 0 .../helm/rabbitmq/templates/deployment.yaml | 0 .../k8s}/helm/rabbitmq/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/rabbitmq/values.yaml | 0 {k8s => deploy/k8s}/helm/sql-data/.helmignore | 0 {k8s => deploy/k8s}/helm/sql-data/Chart.yaml | 0 .../k8s}/helm/sql-data/templates/NOTES.txt | 0 .../k8s}/helm/sql-data/templates/_helpers.tpl | 0 .../k8s}/helm/sql-data/templates/_names.tpl | 0 .../helm/sql-data/templates/deployment.yaml | 0 .../k8s}/helm/sql-data/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/sql-data/values.yaml | 0 .../k8s}/helm/webhooks-api/.helmignore | 0 .../k8s}/helm/webhooks-api/Chart.yaml | 0 .../helm/webhooks-api/templates/NOTES.txt | 0 .../helm/webhooks-api/templates/_helpers.tpl | 0 .../helm/webhooks-api/templates/_names.tpl | 0 .../webhooks-api/templates/configmap.yaml | 0 .../webhooks-api/templates/deployment.yaml | 0 .../helm/webhooks-api/templates/ingress.yaml | 0 .../helm/webhooks-api/templates/service.yaml | 0 .../k8s}/helm/webhooks-api/values.yaml | 0 .../k8s}/helm/webhooks-web/.helmignore | 0 .../k8s}/helm/webhooks-web/Chart.yaml | 0 .../helm/webhooks-web/templates/NOTES.txt | 0 .../helm/webhooks-web/templates/_helpers.tpl | 0 .../helm/webhooks-web/templates/_names.tpl | 0 .../webhooks-web/templates/configmap.yaml | 0 .../webhooks-web/templates/deployment.yaml | 0 .../helm/webhooks-web/templates/ingress.yaml | 0 .../helm/webhooks-web/templates/service.yaml | 0 .../k8s}/helm/webhooks-web/values.yaml | 0 {k8s => deploy/k8s}/helm/webmvc/.helmignore | 0 {k8s => deploy/k8s}/helm/webmvc/Chart.yaml | 0 .../k8s}/helm/webmvc/templates/NOTES.txt | 0 .../k8s}/helm/webmvc/templates/_helpers.tpl | 0 .../k8s}/helm/webmvc/templates/_names.tpl | 0 .../k8s}/helm/webmvc/templates/configmap.yaml | 0 .../helm/webmvc/templates/deployment.yaml | 0 .../webmvc/templates/ingress-dockerk8s.yaml | 0 .../k8s}/helm/webmvc/templates/ingress.yaml | 0 .../k8s}/helm/webmvc/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/webmvc/values.yaml | 0 .../k8s}/helm/webshoppingagg/.helmignore | 0 .../k8s}/helm/webshoppingagg/Chart.yaml | 0 .../helm/webshoppingagg/templates/NOTES.txt | 0 .../webshoppingagg/templates/_helpers.tpl | 0 .../helm/webshoppingagg/templates/_names.tpl | 0 .../webshoppingagg/templates/configmap.yaml | 0 .../webshoppingagg/templates/deployment.yaml | 0 .../webshoppingagg/templates/ingress.yaml | 0 .../webshoppingagg/templates/service.yaml | 0 .../k8s}/helm/webshoppingagg/values.yaml | 0 {k8s => deploy/k8s}/helm/webspa/.helmignore | 0 {k8s => deploy/k8s}/helm/webspa/Chart.yaml | 0 .../k8s}/helm/webspa/templates/NOTES.txt | 0 .../k8s}/helm/webspa/templates/_helpers.tpl | 0 .../k8s}/helm/webspa/templates/_names.tpl | 0 .../k8s}/helm/webspa/templates/configmap.yaml | 0 .../helm/webspa/templates/deployment.yaml | 0 .../k8s}/helm/webspa/templates/ingress.yaml | 0 .../k8s}/helm/webspa/templates/service.yaml | 0 {k8s => deploy/k8s}/helm/webspa/values.yaml | 0 .../k8s}/helm/webstatus/.helmignore | 0 {k8s => deploy/k8s}/helm/webstatus/Chart.yaml | 0 .../k8s}/helm/webstatus/templates/NOTES.txt | 0 .../helm/webstatus/templates/_helpers.tpl | 0 .../k8s}/helm/webstatus/templates/_names.tpl | 0 .../helm/webstatus/templates/configmap.yaml | 0 .../helm/webstatus/templates/deployment.yaml | 0 .../helm/webstatus/templates/ingress.yaml | 0 .../helm/webstatus/templates/service.yaml | 0 .../k8s}/helm/webstatus/values.yaml | 0 {k8s => deploy/k8s}/img/blob_creation.png | Bin .../k8s}/img/deploy_script_task.png | Bin .../k8s}/img/get_kubectlbin_task.png | Bin .../k8s}/img/get_kubectlconfig_task.png | Bin {k8s => deploy/k8s}/internalurls.yaml | 0 .../k8s}/linkerd/basket-api-sp.yaml | 0 .../k8s}/linkerd/catalog-api-sp.yaml | 0 .../k8s}/nginx-ingress/cloud-generic.yaml | 0 {k8s => deploy/k8s}/nginx-ingress/cm.yaml | Bin .../local-dockerk8s/identityapi-cm-fix.yaml | 0 .../local-dockerk8s/mvc-cm-fix.yaml | 0 .../local-dockerk8s/mvc-fix.yaml | 0 .../k8s}/nginx-ingress/mandatory-istio.yaml | 0 .../k8s}/nginx-ingress/mandatory.yaml | 0 .../k8s}/nginx-ingress/service-nodeport.yaml | 0 .../k8s}/nodeports/rabbitmq-admin.yaml | 0 .../k8s}/nodeports/sql-service.yaml | 0 {k8s => deploy/k8s}/readme.md | 0 k8s/.kube/schema/v1.6.6/api/v1/schema.json | 20838 ---------------- .../apis/extensions/v1beta1/schema.json | 9977 -------- k8s/.kube/schema/v1.6.6/schema566625515 | 9977 -------- k8s/.kube/schema/v1.6.6/schema629255130 | 20838 ---------------- .../cli-linux}/build-bits-linux.sh | 0 .../cli-linux}/docker-compose.local.build.yml | 0 .../cli-linux}/prepare-spa-app.sh | 0 {cli-linux => obsolete/cli-linux}/run.sh | 0 {cli-mac => obsolete/cli-mac}/build-bits.sh | 0 ...irewall-rules-for-sts-auth-thru-docker.ps1 | 0 .../cli-windows}/build-bits-simple.ps1 | 0 .../cli-windows}/build-bits.ps1 | 0 .../cli-windows}/build-images.ps1 | 0 .../cli-windows}/delete-images.ps1 | 0 .../delete-vs-and-eshop-images.ps1 | 0 ...et-dockernat-networkategory-to-private.ps1 | 0 .../cli-windows}/start-external.ps1 | 0 .../cli-windows}/start-windows-containers.ps1 | 0 .../vsts/build-bits-no-parallel.ps1 | 0 {readme => obsolete/readme}/README.ENV.md | 0 .../readme}/readme-docker-compose.md | 0 {readme => obsolete/readme}/readme.md | 0 .../run-docker-compose-build.ps1 | 0 .../builds/images/android-build-step1.png | Bin .../builds/images/android-build-step2.png | Bin .../builds/images/android-build-step3.png | Bin .../builds/images/android-build-step4.png | Bin .../builds/images/android-build-step5.png | Bin .../builds/images/android-build.png | Bin .../builds/images/ios-build-step1.png | Bin .../builds/images/ios-build-step2.png | Bin .../builds/images/ios-build-step3.png | Bin .../vsts-docs}/builds/images/ios-build.png | Bin .../vsts-docs}/builds/xamarin-android.md | 0 .../vsts-docs}/builds/xamarin-iOS.md | 0 {vsts-docs => obsolete/vsts-docs}/readme.md | 0 restore-packages.cmd | 1 - .../Components}/GeolocatorPlugin-1.0.3.info | 0 .../Components}/GeolocatorPlugin-1.0.3.png | 0 .../component/Details.md | 0 .../component/GettingStarted.md | 0 .../component/License.md | 0 .../component/Manifest.xml | 0 .../icons/GeolocatorPlugin_128x128.png | Bin .../icons/GeolocatorPlugin_512x512.png | Bin .../GeolocatorSample/GeolocatorSample.sln | 0 .../Assets/AboutAssets.txt | 0 .../GeolocatorSample.Droid.csproj | 0 .../GeolocatorSample.Droid/MainActivity.cs | 0 .../PluginsHelp/GeolocatorReadme.txt | 0 .../Properties/AndroidManifest.xml | 0 .../Properties/AssemblyInfo.cs | 0 .../Resources/AboutResources.txt | 0 .../Resources/Resource.Designer.cs | 0 .../Resources/drawable-hdpi/icon.png | Bin .../Resources/drawable-xhdpi/icon.png | Bin .../Resources/drawable-xxhdpi/icon.png | Bin .../Resources/drawable/icon.png | Bin .../GeolocatorSample.Droid/packages.config | 0 .../GeolocatorSample.WinPhone/App.xaml | 0 .../GeolocatorSample.WinPhone/App.xaml.cs | 0 .../Assets/AlignmentGrid.png | Bin .../Assets/ApplicationIcon.png | Bin .../Assets/Tiles/FlipCycleTileLarge.png | Bin .../Assets/Tiles/FlipCycleTileMedium.png | Bin .../Assets/Tiles/FlipCycleTileSmall.png | Bin .../Assets/Tiles/IconicTileMediumLarge.png | Bin .../Assets/Tiles/IconicTileSmall.png | Bin .../GeolocatorSample.WinPhone.csproj | 0 .../LocalizedStrings.cs | 0 .../GeolocatorSample.WinPhone/MainPage.xaml | 0 .../MainPage.xaml.cs | 0 .../PluginsHelp/GeolocatorReadme.txt | 0 .../Properties/AppManifest.xml | 0 .../Properties/AssemblyInfo.cs | 0 .../Properties/WMAppManifest.xml | 0 .../README_FIRST.txt | 0 .../Resources/AppResources.Designer.cs | 0 .../Resources/AppResources.resx | 0 .../SplashScreenImage.jpg | Bin .../Toolkit.Content/ApplicationBar.Add.png | Bin .../Toolkit.Content/ApplicationBar.Cancel.png | Bin .../Toolkit.Content/ApplicationBar.Check.png | Bin .../Toolkit.Content/ApplicationBar.Delete.png | Bin .../Toolkit.Content/ApplicationBar.Select.png | Bin .../GeolocatorSample.WinPhone/packages.config | 0 .../GeolocatorSample.iOS/AppDelegate.cs | 0 .../GeolocatorSample.iOS/Entitlements.plist | 0 .../GeolocatorSample.iOS.csproj | 0 .../GeolocatorSample.iOS/Info.plist | 0 .../GeolocatorSample.iOS/Main.cs | 0 .../PluginsHelp/GeolocatorReadme.txt | 0 .../Properties/AssemblyInfo.cs | 0 .../Resources/Default-568h@2x.png | Bin .../Resources/Default-Portrait.png | Bin .../Resources/Default-Portrait@2x.png | Bin .../Resources/Default.png | Bin .../Resources/Default@2x.png | Bin .../Resources/Icon-60@2x.png | Bin .../Resources/Icon-60@3x.png | Bin .../Resources/Icon-76.png | Bin .../Resources/Icon-76@2x.png | Bin .../Resources/Icon-Small-40.png | Bin .../Resources/Icon-Small-40@2x.png | Bin .../Resources/Icon-Small-40@3x.png | Bin .../Resources/Icon-Small.png | Bin .../Resources/Icon-Small@2x.png | Bin .../Resources/Icon-Small@3x.png | Bin .../Resources/LaunchScreen.storyboard | 0 .../GeolocatorSample.iOS/iTunesArtwork | Bin .../GeolocatorSample.iOS/iTunesArtwork@2x | Bin .../GeolocatorSample.iOS/packages.config | 0 .../GeolocatorSample/GeolocatorSample/App.cs | 0 .../GeolocatorSample/GeolocatorSample.csproj | 0 .../PluginsHelp/GeolocatorReadme.txt | 0 .../Properties/AssemblyInfo.cs | 0 .../GeolocatorSample/packages.config | 0 src/docker-compose.prod.yml | 66 +- src/eShopOnContainers-ServicesAndWebApps.sln | 2 +- 462 files changed, 34 insertions(+), 61665 deletions(-) rename deploy/{ => azure}/az/azurefunctions/azurefunctionsdeploy.json (100%) rename deploy/{ => azure}/az/azurefunctions/azurefunctionsdeploy.parameters.json (100%) rename deploy/{ => azure}/az/azurefunctions/readme.md (100%) rename deploy/{ => azure}/az/cosmos/deploycosmos.json (100%) rename deploy/{ => azure}/az/cosmos/deploycosmos.parameters.json (100%) rename deploy/{ => azure}/az/cosmos/readme.md (100%) rename deploy/{ => azure}/az/create-resources.cmd (100%) rename deploy/{ => azure}/az/createresources.sh (100%) rename deploy/{ => azure}/az/readme.md (100%) rename deploy/{ => azure}/az/redis/readme.md (100%) rename deploy/{ => azure}/az/redis/redisdeploy.json (100%) rename deploy/{ => azure}/az/redis/redisdeploy.parameters.json (100%) rename deploy/{ => azure}/az/servicebus/readme.md (100%) rename deploy/{ => azure}/az/servicebus/sbusdeploy.json (100%) rename deploy/{ => azure}/az/servicebus/sbusdeploy.parameters.json (100%) rename deploy/{ => azure}/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 (100%) rename deploy/{ => azure}/az/servicefabric/LinuxContainers/readme.md (100%) rename deploy/{ => azure}/az/servicefabric/LinuxContainers/servicefabricdeploy.json (100%) rename deploy/{ => azure}/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json (100%) rename deploy/{ => azure}/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json (100%) rename deploy/{ => azure}/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json (100%) rename deploy/{ => azure}/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 (100%) rename deploy/{ => azure}/az/servicefabric/WindowsContainers/readme.md (100%) rename deploy/{ => azure}/az/servicefabric/WindowsContainers/servicefabricdeploy.json (100%) rename deploy/{ => azure}/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json (100%) rename deploy/{ => azure}/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json (100%) rename deploy/{ => azure}/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json (100%) rename deploy/{ => azure}/az/sql/readme.md (100%) rename deploy/{ => azure}/az/sql/sqldeploy.json (100%) rename deploy/{ => azure}/az/sql/sqldeploy.parameters.json (100%) rename deploy/{ => azure}/az/storage/catalog/deploystorage.json (100%) rename deploy/{ => azure}/az/storage/catalog/deploystorage.parameters.json (100%) rename deploy/{ => azure}/az/storage/catalog/readme.md (100%) rename deploy/{ => azure}/az/storage/marketing/deploystorage.json (100%) rename deploy/{ => azure}/az/storage/marketing/deploystorage.parameters.json (100%) rename deploy/{ => azure}/az/storage/marketing/readme.md (100%) rename deploy/{ => azure}/az/vms/docker-machine.md (100%) rename deploy/{ => azure}/az/vms/linux-vm/linuxvm.json (100%) rename deploy/{ => azure}/az/vms/linux-vm/linuxvm.parameters.json (100%) rename deploy/{ => azure}/az/vms/plain-vm.md (100%) rename deploy/{ => azure}/az/vms/readme.md (100%) rename deploy/{ => azure}/az/vms/win-vm/windowsvm.json (100%) rename deploy/{ => azure}/az/vms/win-vm/windowsvm.parameters.json (100%) rename deploy/{ => azure}/readme.md (100%) rename {elk => deploy/elk}/Readme.md (100%) rename {elk => deploy/elk}/elasticsearch/Dockerfile (100%) rename {elk => deploy/elk}/elasticsearch/config/elasticsearch.yml (100%) rename {elk => deploy/elk}/kibana/Dockerfile (100%) rename {elk => deploy/elk}/kibana/config/kibana.yml (100%) rename {elk => deploy/elk}/logstash/Dockerfile (100%) rename {elk => deploy/elk}/logstash/config/logstash.yml (100%) rename {elk => deploy/elk}/logstash/pipeline/logstash.conf (100%) rename {k8s => deploy/k8s}/README.CICD.k8s.md (100%) rename {k8s => deploy/k8s}/README.k8s.md (100%) rename {k8s => deploy/k8s}/build-push-images.ps1 (100%) rename {k8s => deploy/k8s}/conf-files.md (100%) rename {k8s => deploy/k8s}/conf_cloud.yaml (100%) rename {k8s => deploy/k8s}/conf_local.yaml (100%) rename {k8s => deploy/k8s}/deploy-ingress-azure.ps1 (100%) rename {k8s => deploy/k8s}/deploy-ingress-dockerlocal.ps1 (100%) rename {k8s => deploy/k8s}/deploy-ingress.ps1 (100%) rename {k8s => deploy/k8s}/deploy-nodeports.ps1 (100%) rename {k8s => deploy/k8s}/deploy.ps1 (100%) rename {k8s => deploy/k8s}/deploy.sh (100%) mode change 100755 => 100644 rename {k8s => deploy/k8s}/gen-k8s-env-aks.ps1 (100%) rename {k8s => deploy/k8s}/helm-rbac.yaml (100%) rename {k8s => deploy/k8s}/helm/aks-httpaddon-cfg.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/.helmignore (100%) rename {k8s => deploy/k8s}/helm/apigwmm/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/envoy.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/envoy-cm.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwmm/values.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/.helmignore (100%) rename {k8s => deploy/k8s}/helm/apigwms/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/envoy.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/envoy-cm.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwms/values.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/.helmignore (100%) rename {k8s => deploy/k8s}/helm/apigwwm/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/envoy.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/envoy-cm.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwwm/values.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/.helmignore (100%) rename {k8s => deploy/k8s}/helm/apigwws/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/envoy.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/envoy-cm.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/apigwws/values.yaml (100%) rename {k8s => deploy/k8s}/helm/app.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/basket-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-data/.helmignore (100%) rename {k8s => deploy/k8s}/helm/basket-data/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-data/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/basket-data/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/basket-data/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-data/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/basket-data/values.yaml (100%) rename {k8s => deploy/k8s}/helm/catalog-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/catalog-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/catalog-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/catalog-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/deploy-all-istio.ps1 (100%) rename {k8s => deploy/k8s}/helm/deploy-all.ps1 (100%) rename {k8s => deploy/k8s}/helm/deploy-all.sh (100%) mode change 100755 => 100644 rename {k8s => deploy/k8s}/helm/eshop-common/.helmignore (100%) rename {k8s => deploy/k8s}/helm/eshop-common/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/eshop-common/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/eshop-common/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/eshop-common/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/eshop-common/templates/secret.yaml (100%) rename {k8s => deploy/k8s}/helm/eshop-common/values.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/identity-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/ingress-dockerk8s.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/identity-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/inf.yaml (100%) rename {k8s => deploy/k8s}/helm/ingress_values.yaml (100%) rename {k8s => deploy/k8s}/helm/ingress_values_dockerk8s.yaml (100%) rename {k8s => deploy/k8s}/helm/ingress_values_linkerd.yaml (100%) rename {k8s => deploy/k8s}/helm/istio/doc.md (100%) rename {k8s => deploy/k8s}/helm/istio/gateway.yml (100%) rename {k8s => deploy/k8s}/helm/istio/virtualservices.yml (100%) rename {k8s => deploy/k8s}/helm/keystore-data/.helmignore (100%) rename {k8s => deploy/k8s}/helm/keystore-data/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/keystore-data/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/keystore-data/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/keystore-data/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/keystore-data/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/keystore-data/values.yaml (100%) rename {k8s => deploy/k8s}/helm/locations-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/locations-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/locations-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/locations-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/marketing-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/marketing-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/marketing-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/marketing-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/.helmignore (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/mobileshoppingagg/values.yaml (100%) rename {k8s => deploy/k8s}/helm/nosql-data/.helmignore (100%) rename {k8s => deploy/k8s}/helm/nosql-data/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/nosql-data/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/nosql-data/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/nosql-data/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/nosql-data/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/nosql-data/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/nosql-data/values.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/ordering-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/ordering-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/ordering-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/ordering-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/.helmignore (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-backgroundtasks/values.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/.helmignore (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/ordering-signalrhub/values.yaml (100%) rename {k8s => deploy/k8s}/helm/payment-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/payment-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/payment-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/payment-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/payment-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/payment-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/payment-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/payment-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/payment-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/.helmignore (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/rabbitmq/values.yaml (100%) rename {k8s => deploy/k8s}/helm/sql-data/.helmignore (100%) rename {k8s => deploy/k8s}/helm/sql-data/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/sql-data/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/sql-data/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/sql-data/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/sql-data/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/sql-data/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/sql-data/values.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/.helmignore (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-api/values.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/.helmignore (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/webhooks-web/values.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/.helmignore (100%) rename {k8s => deploy/k8s}/helm/webmvc/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/ingress-dockerk8s.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/webmvc/values.yaml (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/.helmignore (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/webshoppingagg/values.yaml (100%) rename {k8s => deploy/k8s}/helm/webspa/.helmignore (100%) rename {k8s => deploy/k8s}/helm/webspa/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/webspa/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/webspa/values.yaml (100%) rename {k8s => deploy/k8s}/helm/webstatus/.helmignore (100%) rename {k8s => deploy/k8s}/helm/webstatus/Chart.yaml (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/NOTES.txt (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/_helpers.tpl (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/_names.tpl (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/configmap.yaml (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/deployment.yaml (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/ingress.yaml (100%) rename {k8s => deploy/k8s}/helm/webstatus/templates/service.yaml (100%) rename {k8s => deploy/k8s}/helm/webstatus/values.yaml (100%) rename {k8s => deploy/k8s}/img/blob_creation.png (100%) rename {k8s => deploy/k8s}/img/deploy_script_task.png (100%) rename {k8s => deploy/k8s}/img/get_kubectlbin_task.png (100%) rename {k8s => deploy/k8s}/img/get_kubectlconfig_task.png (100%) rename {k8s => deploy/k8s}/internalurls.yaml (100%) rename {k8s => deploy/k8s}/linkerd/basket-api-sp.yaml (100%) rename {k8s => deploy/k8s}/linkerd/catalog-api-sp.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/cloud-generic.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/cm.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/local-dockerk8s/mvc-fix.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/mandatory-istio.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/mandatory.yaml (100%) rename {k8s => deploy/k8s}/nginx-ingress/service-nodeport.yaml (100%) rename {k8s => deploy/k8s}/nodeports/rabbitmq-admin.yaml (100%) rename {k8s => deploy/k8s}/nodeports/sql-service.yaml (100%) rename {k8s => deploy/k8s}/readme.md (100%) delete mode 100644 k8s/.kube/schema/v1.6.6/api/v1/schema.json delete mode 100644 k8s/.kube/schema/v1.6.6/apis/extensions/v1beta1/schema.json delete mode 100644 k8s/.kube/schema/v1.6.6/schema566625515 delete mode 100644 k8s/.kube/schema/v1.6.6/schema629255130 rename {cli-linux => obsolete/cli-linux}/build-bits-linux.sh (100%) mode change 100755 => 100644 rename {cli-linux => obsolete/cli-linux}/docker-compose.local.build.yml (100%) rename {cli-linux => obsolete/cli-linux}/prepare-spa-app.sh (100%) rename {cli-linux => obsolete/cli-linux}/run.sh (100%) rename {cli-mac => obsolete/cli-mac}/build-bits.sh (100%) mode change 100755 => 100644 rename {cli-windows => obsolete/cli-windows}/add-firewall-rules-for-sts-auth-thru-docker.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/build-bits-simple.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/build-bits.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/build-images.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/delete-images.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/delete-vs-and-eshop-images.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/set-dockernat-networkategory-to-private.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/start-external.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/start-windows-containers.ps1 (100%) rename {cli-windows => obsolete/cli-windows}/vsts/build-bits-no-parallel.ps1 (100%) rename {readme => obsolete/readme}/README.ENV.md (100%) rename {readme => obsolete/readme}/readme-docker-compose.md (100%) rename {readme => obsolete/readme}/readme.md (100%) rename run-docker-compose-build.ps1 => obsolete/run-docker-compose-build.ps1 (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/android-build-step1.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/android-build-step2.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/android-build-step3.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/android-build-step4.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/android-build-step5.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/android-build.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/ios-build-step1.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/ios-build-step2.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/ios-build-step3.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/images/ios-build.png (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/xamarin-android.md (100%) rename {vsts-docs => obsolete/vsts-docs}/builds/xamarin-iOS.md (100%) rename {vsts-docs => obsolete/vsts-docs}/readme.md (100%) delete mode 100644 restore-packages.cmd rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3.info (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/component/Details.md (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/component/GettingStarted.md (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/component/License.md (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/component/Manifest.xml (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_128x128.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_512x512.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample.sln (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Assets/AboutAssets.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/GeolocatorSample.Droid.csproj (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/MainActivity.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/PluginsHelp/GeolocatorReadme.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AndroidManifest.xml (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AssemblyInfo.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/AboutResources.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/Resource.Designer.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-hdpi/icon.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xhdpi/icon.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xxhdpi/icon.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable/icon.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/packages.config (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/AlignmentGrid.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/ApplicationIcon.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileLarge.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileMedium.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileSmall.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileMediumLarge.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileSmall.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/GeolocatorSample.WinPhone.csproj (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/LocalizedStrings.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/PluginsHelp/GeolocatorReadme.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AppManifest.xml (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AssemblyInfo.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/WMAppManifest.xml (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/README_FIRST.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.Designer.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.resx (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/SplashScreenImage.jpg (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Add.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Check.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Delete.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Select.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/packages.config (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/AppDelegate.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Entitlements.plist (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/GeolocatorSample.iOS.csproj (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Info.plist (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Main.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/PluginsHelp/GeolocatorReadme.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Properties/AssemblyInfo.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-568h@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@3x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@3x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@2x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@3x.png (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/LaunchScreen.storyboard (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork@2x (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/packages.config (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/App.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/GeolocatorSample.csproj (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/PluginsHelp/GeolocatorReadme.txt (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/Properties/AssemblyInfo.cs (100%) rename {Components => src/Mobile/Components}/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/packages.config (100%) diff --git a/deploy/az/azurefunctions/azurefunctionsdeploy.json b/deploy/azure/az/azurefunctions/azurefunctionsdeploy.json similarity index 100% rename from deploy/az/azurefunctions/azurefunctionsdeploy.json rename to deploy/azure/az/azurefunctions/azurefunctionsdeploy.json diff --git a/deploy/az/azurefunctions/azurefunctionsdeploy.parameters.json b/deploy/azure/az/azurefunctions/azurefunctionsdeploy.parameters.json similarity index 100% rename from deploy/az/azurefunctions/azurefunctionsdeploy.parameters.json rename to deploy/azure/az/azurefunctions/azurefunctionsdeploy.parameters.json diff --git a/deploy/az/azurefunctions/readme.md b/deploy/azure/az/azurefunctions/readme.md similarity index 100% rename from deploy/az/azurefunctions/readme.md rename to deploy/azure/az/azurefunctions/readme.md diff --git a/deploy/az/cosmos/deploycosmos.json b/deploy/azure/az/cosmos/deploycosmos.json similarity index 100% rename from deploy/az/cosmos/deploycosmos.json rename to deploy/azure/az/cosmos/deploycosmos.json diff --git a/deploy/az/cosmos/deploycosmos.parameters.json b/deploy/azure/az/cosmos/deploycosmos.parameters.json similarity index 100% rename from deploy/az/cosmos/deploycosmos.parameters.json rename to deploy/azure/az/cosmos/deploycosmos.parameters.json diff --git a/deploy/az/cosmos/readme.md b/deploy/azure/az/cosmos/readme.md similarity index 100% rename from deploy/az/cosmos/readme.md rename to deploy/azure/az/cosmos/readme.md diff --git a/deploy/az/create-resources.cmd b/deploy/azure/az/create-resources.cmd similarity index 100% rename from deploy/az/create-resources.cmd rename to deploy/azure/az/create-resources.cmd diff --git a/deploy/az/createresources.sh b/deploy/azure/az/createresources.sh similarity index 100% rename from deploy/az/createresources.sh rename to deploy/azure/az/createresources.sh diff --git a/deploy/az/readme.md b/deploy/azure/az/readme.md similarity index 100% rename from deploy/az/readme.md rename to deploy/azure/az/readme.md diff --git a/deploy/az/redis/readme.md b/deploy/azure/az/redis/readme.md similarity index 100% rename from deploy/az/redis/readme.md rename to deploy/azure/az/redis/readme.md diff --git a/deploy/az/redis/redisdeploy.json b/deploy/azure/az/redis/redisdeploy.json similarity index 100% rename from deploy/az/redis/redisdeploy.json rename to deploy/azure/az/redis/redisdeploy.json diff --git a/deploy/az/redis/redisdeploy.parameters.json b/deploy/azure/az/redis/redisdeploy.parameters.json similarity index 100% rename from deploy/az/redis/redisdeploy.parameters.json rename to deploy/azure/az/redis/redisdeploy.parameters.json diff --git a/deploy/az/servicebus/readme.md b/deploy/azure/az/servicebus/readme.md similarity index 100% rename from deploy/az/servicebus/readme.md rename to deploy/azure/az/servicebus/readme.md diff --git a/deploy/az/servicebus/sbusdeploy.json b/deploy/azure/az/servicebus/sbusdeploy.json similarity index 100% rename from deploy/az/servicebus/sbusdeploy.json rename to deploy/azure/az/servicebus/sbusdeploy.json diff --git a/deploy/az/servicebus/sbusdeploy.parameters.json b/deploy/azure/az/servicebus/sbusdeploy.parameters.json similarity index 100% rename from deploy/az/servicebus/sbusdeploy.parameters.json rename to deploy/azure/az/servicebus/sbusdeploy.parameters.json diff --git a/deploy/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 b/deploy/azure/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 similarity index 100% rename from deploy/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 rename to deploy/azure/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 diff --git a/deploy/az/servicefabric/LinuxContainers/readme.md b/deploy/azure/az/servicefabric/LinuxContainers/readme.md similarity index 100% rename from deploy/az/servicefabric/LinuxContainers/readme.md rename to deploy/azure/az/servicefabric/LinuxContainers/readme.md diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.json similarity index 100% rename from deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.json rename to deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.json diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json similarity index 100% rename from deploy/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json rename to deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json similarity index 100% rename from deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json rename to deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json diff --git a/deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json similarity index 100% rename from deploy/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json rename to deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json diff --git a/deploy/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 b/deploy/azure/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 similarity index 100% rename from deploy/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 rename to deploy/azure/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 diff --git a/deploy/az/servicefabric/WindowsContainers/readme.md b/deploy/azure/az/servicefabric/WindowsContainers/readme.md similarity index 100% rename from deploy/az/servicefabric/WindowsContainers/readme.md rename to deploy/azure/az/servicefabric/WindowsContainers/readme.md diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.json similarity index 100% rename from deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.json rename to deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.json diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json similarity index 100% rename from deploy/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json rename to deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json similarity index 100% rename from deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json rename to deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json diff --git a/deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json similarity index 100% rename from deploy/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json rename to deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json diff --git a/deploy/az/sql/readme.md b/deploy/azure/az/sql/readme.md similarity index 100% rename from deploy/az/sql/readme.md rename to deploy/azure/az/sql/readme.md diff --git a/deploy/az/sql/sqldeploy.json b/deploy/azure/az/sql/sqldeploy.json similarity index 100% rename from deploy/az/sql/sqldeploy.json rename to deploy/azure/az/sql/sqldeploy.json diff --git a/deploy/az/sql/sqldeploy.parameters.json b/deploy/azure/az/sql/sqldeploy.parameters.json similarity index 100% rename from deploy/az/sql/sqldeploy.parameters.json rename to deploy/azure/az/sql/sqldeploy.parameters.json diff --git a/deploy/az/storage/catalog/deploystorage.json b/deploy/azure/az/storage/catalog/deploystorage.json similarity index 100% rename from deploy/az/storage/catalog/deploystorage.json rename to deploy/azure/az/storage/catalog/deploystorage.json diff --git a/deploy/az/storage/catalog/deploystorage.parameters.json b/deploy/azure/az/storage/catalog/deploystorage.parameters.json similarity index 100% rename from deploy/az/storage/catalog/deploystorage.parameters.json rename to deploy/azure/az/storage/catalog/deploystorage.parameters.json diff --git a/deploy/az/storage/catalog/readme.md b/deploy/azure/az/storage/catalog/readme.md similarity index 100% rename from deploy/az/storage/catalog/readme.md rename to deploy/azure/az/storage/catalog/readme.md diff --git a/deploy/az/storage/marketing/deploystorage.json b/deploy/azure/az/storage/marketing/deploystorage.json similarity index 100% rename from deploy/az/storage/marketing/deploystorage.json rename to deploy/azure/az/storage/marketing/deploystorage.json diff --git a/deploy/az/storage/marketing/deploystorage.parameters.json b/deploy/azure/az/storage/marketing/deploystorage.parameters.json similarity index 100% rename from deploy/az/storage/marketing/deploystorage.parameters.json rename to deploy/azure/az/storage/marketing/deploystorage.parameters.json diff --git a/deploy/az/storage/marketing/readme.md b/deploy/azure/az/storage/marketing/readme.md similarity index 100% rename from deploy/az/storage/marketing/readme.md rename to deploy/azure/az/storage/marketing/readme.md diff --git a/deploy/az/vms/docker-machine.md b/deploy/azure/az/vms/docker-machine.md similarity index 100% rename from deploy/az/vms/docker-machine.md rename to deploy/azure/az/vms/docker-machine.md diff --git a/deploy/az/vms/linux-vm/linuxvm.json b/deploy/azure/az/vms/linux-vm/linuxvm.json similarity index 100% rename from deploy/az/vms/linux-vm/linuxvm.json rename to deploy/azure/az/vms/linux-vm/linuxvm.json diff --git a/deploy/az/vms/linux-vm/linuxvm.parameters.json b/deploy/azure/az/vms/linux-vm/linuxvm.parameters.json similarity index 100% rename from deploy/az/vms/linux-vm/linuxvm.parameters.json rename to deploy/azure/az/vms/linux-vm/linuxvm.parameters.json diff --git a/deploy/az/vms/plain-vm.md b/deploy/azure/az/vms/plain-vm.md similarity index 100% rename from deploy/az/vms/plain-vm.md rename to deploy/azure/az/vms/plain-vm.md diff --git a/deploy/az/vms/readme.md b/deploy/azure/az/vms/readme.md similarity index 100% rename from deploy/az/vms/readme.md rename to deploy/azure/az/vms/readme.md diff --git a/deploy/az/vms/win-vm/windowsvm.json b/deploy/azure/az/vms/win-vm/windowsvm.json similarity index 100% rename from deploy/az/vms/win-vm/windowsvm.json rename to deploy/azure/az/vms/win-vm/windowsvm.json diff --git a/deploy/az/vms/win-vm/windowsvm.parameters.json b/deploy/azure/az/vms/win-vm/windowsvm.parameters.json similarity index 100% rename from deploy/az/vms/win-vm/windowsvm.parameters.json rename to deploy/azure/az/vms/win-vm/windowsvm.parameters.json diff --git a/deploy/readme.md b/deploy/azure/readme.md similarity index 100% rename from deploy/readme.md rename to deploy/azure/readme.md diff --git a/elk/Readme.md b/deploy/elk/Readme.md similarity index 100% rename from elk/Readme.md rename to deploy/elk/Readme.md diff --git a/elk/elasticsearch/Dockerfile b/deploy/elk/elasticsearch/Dockerfile similarity index 100% rename from elk/elasticsearch/Dockerfile rename to deploy/elk/elasticsearch/Dockerfile diff --git a/elk/elasticsearch/config/elasticsearch.yml b/deploy/elk/elasticsearch/config/elasticsearch.yml similarity index 100% rename from elk/elasticsearch/config/elasticsearch.yml rename to deploy/elk/elasticsearch/config/elasticsearch.yml diff --git a/elk/kibana/Dockerfile b/deploy/elk/kibana/Dockerfile similarity index 100% rename from elk/kibana/Dockerfile rename to deploy/elk/kibana/Dockerfile diff --git a/elk/kibana/config/kibana.yml b/deploy/elk/kibana/config/kibana.yml similarity index 100% rename from elk/kibana/config/kibana.yml rename to deploy/elk/kibana/config/kibana.yml diff --git a/elk/logstash/Dockerfile b/deploy/elk/logstash/Dockerfile similarity index 100% rename from elk/logstash/Dockerfile rename to deploy/elk/logstash/Dockerfile diff --git a/elk/logstash/config/logstash.yml b/deploy/elk/logstash/config/logstash.yml similarity index 100% rename from elk/logstash/config/logstash.yml rename to deploy/elk/logstash/config/logstash.yml diff --git a/elk/logstash/pipeline/logstash.conf b/deploy/elk/logstash/pipeline/logstash.conf similarity index 100% rename from elk/logstash/pipeline/logstash.conf rename to deploy/elk/logstash/pipeline/logstash.conf diff --git a/k8s/README.CICD.k8s.md b/deploy/k8s/README.CICD.k8s.md similarity index 100% rename from k8s/README.CICD.k8s.md rename to deploy/k8s/README.CICD.k8s.md diff --git a/k8s/README.k8s.md b/deploy/k8s/README.k8s.md similarity index 100% rename from k8s/README.k8s.md rename to deploy/k8s/README.k8s.md diff --git a/k8s/build-push-images.ps1 b/deploy/k8s/build-push-images.ps1 similarity index 100% rename from k8s/build-push-images.ps1 rename to deploy/k8s/build-push-images.ps1 diff --git a/k8s/conf-files.md b/deploy/k8s/conf-files.md similarity index 100% rename from k8s/conf-files.md rename to deploy/k8s/conf-files.md diff --git a/k8s/conf_cloud.yaml b/deploy/k8s/conf_cloud.yaml similarity index 100% rename from k8s/conf_cloud.yaml rename to deploy/k8s/conf_cloud.yaml diff --git a/k8s/conf_local.yaml b/deploy/k8s/conf_local.yaml similarity index 100% rename from k8s/conf_local.yaml rename to deploy/k8s/conf_local.yaml diff --git a/k8s/deploy-ingress-azure.ps1 b/deploy/k8s/deploy-ingress-azure.ps1 similarity index 100% rename from k8s/deploy-ingress-azure.ps1 rename to deploy/k8s/deploy-ingress-azure.ps1 diff --git a/k8s/deploy-ingress-dockerlocal.ps1 b/deploy/k8s/deploy-ingress-dockerlocal.ps1 similarity index 100% rename from k8s/deploy-ingress-dockerlocal.ps1 rename to deploy/k8s/deploy-ingress-dockerlocal.ps1 diff --git a/k8s/deploy-ingress.ps1 b/deploy/k8s/deploy-ingress.ps1 similarity index 100% rename from k8s/deploy-ingress.ps1 rename to deploy/k8s/deploy-ingress.ps1 diff --git a/k8s/deploy-nodeports.ps1 b/deploy/k8s/deploy-nodeports.ps1 similarity index 100% rename from k8s/deploy-nodeports.ps1 rename to deploy/k8s/deploy-nodeports.ps1 diff --git a/k8s/deploy.ps1 b/deploy/k8s/deploy.ps1 similarity index 100% rename from k8s/deploy.ps1 rename to deploy/k8s/deploy.ps1 diff --git a/k8s/deploy.sh b/deploy/k8s/deploy.sh old mode 100755 new mode 100644 similarity index 100% rename from k8s/deploy.sh rename to deploy/k8s/deploy.sh diff --git a/k8s/gen-k8s-env-aks.ps1 b/deploy/k8s/gen-k8s-env-aks.ps1 similarity index 100% rename from k8s/gen-k8s-env-aks.ps1 rename to deploy/k8s/gen-k8s-env-aks.ps1 diff --git a/k8s/helm-rbac.yaml b/deploy/k8s/helm-rbac.yaml similarity index 100% rename from k8s/helm-rbac.yaml rename to deploy/k8s/helm-rbac.yaml diff --git a/k8s/helm/aks-httpaddon-cfg.yaml b/deploy/k8s/helm/aks-httpaddon-cfg.yaml similarity index 100% rename from k8s/helm/aks-httpaddon-cfg.yaml rename to deploy/k8s/helm/aks-httpaddon-cfg.yaml diff --git a/k8s/helm/apigwmm/.helmignore b/deploy/k8s/helm/apigwmm/.helmignore similarity index 100% rename from k8s/helm/apigwmm/.helmignore rename to deploy/k8s/helm/apigwmm/.helmignore diff --git a/k8s/helm/apigwmm/Chart.yaml b/deploy/k8s/helm/apigwmm/Chart.yaml similarity index 100% rename from k8s/helm/apigwmm/Chart.yaml rename to deploy/k8s/helm/apigwmm/Chart.yaml diff --git a/k8s/helm/apigwmm/envoy.yaml b/deploy/k8s/helm/apigwmm/envoy.yaml similarity index 100% rename from k8s/helm/apigwmm/envoy.yaml rename to deploy/k8s/helm/apigwmm/envoy.yaml diff --git a/k8s/helm/apigwmm/templates/NOTES.txt b/deploy/k8s/helm/apigwmm/templates/NOTES.txt similarity index 100% rename from k8s/helm/apigwmm/templates/NOTES.txt rename to deploy/k8s/helm/apigwmm/templates/NOTES.txt diff --git a/k8s/helm/apigwmm/templates/_helpers.tpl b/deploy/k8s/helm/apigwmm/templates/_helpers.tpl similarity index 100% rename from k8s/helm/apigwmm/templates/_helpers.tpl rename to deploy/k8s/helm/apigwmm/templates/_helpers.tpl diff --git a/k8s/helm/apigwmm/templates/_names.tpl b/deploy/k8s/helm/apigwmm/templates/_names.tpl similarity index 100% rename from k8s/helm/apigwmm/templates/_names.tpl rename to deploy/k8s/helm/apigwmm/templates/_names.tpl diff --git a/k8s/helm/apigwmm/templates/deployment.yaml b/deploy/k8s/helm/apigwmm/templates/deployment.yaml similarity index 100% rename from k8s/helm/apigwmm/templates/deployment.yaml rename to deploy/k8s/helm/apigwmm/templates/deployment.yaml diff --git a/k8s/helm/apigwmm/templates/envoy-cm.yaml b/deploy/k8s/helm/apigwmm/templates/envoy-cm.yaml similarity index 100% rename from k8s/helm/apigwmm/templates/envoy-cm.yaml rename to deploy/k8s/helm/apigwmm/templates/envoy-cm.yaml diff --git a/k8s/helm/apigwmm/templates/ingress.yaml b/deploy/k8s/helm/apigwmm/templates/ingress.yaml similarity index 100% rename from k8s/helm/apigwmm/templates/ingress.yaml rename to deploy/k8s/helm/apigwmm/templates/ingress.yaml diff --git a/k8s/helm/apigwmm/templates/service.yaml b/deploy/k8s/helm/apigwmm/templates/service.yaml similarity index 100% rename from k8s/helm/apigwmm/templates/service.yaml rename to deploy/k8s/helm/apigwmm/templates/service.yaml diff --git a/k8s/helm/apigwmm/values.yaml b/deploy/k8s/helm/apigwmm/values.yaml similarity index 100% rename from k8s/helm/apigwmm/values.yaml rename to deploy/k8s/helm/apigwmm/values.yaml diff --git a/k8s/helm/apigwms/.helmignore b/deploy/k8s/helm/apigwms/.helmignore similarity index 100% rename from k8s/helm/apigwms/.helmignore rename to deploy/k8s/helm/apigwms/.helmignore diff --git a/k8s/helm/apigwms/Chart.yaml b/deploy/k8s/helm/apigwms/Chart.yaml similarity index 100% rename from k8s/helm/apigwms/Chart.yaml rename to deploy/k8s/helm/apigwms/Chart.yaml diff --git a/k8s/helm/apigwms/envoy.yaml b/deploy/k8s/helm/apigwms/envoy.yaml similarity index 100% rename from k8s/helm/apigwms/envoy.yaml rename to deploy/k8s/helm/apigwms/envoy.yaml diff --git a/k8s/helm/apigwms/templates/NOTES.txt b/deploy/k8s/helm/apigwms/templates/NOTES.txt similarity index 100% rename from k8s/helm/apigwms/templates/NOTES.txt rename to deploy/k8s/helm/apigwms/templates/NOTES.txt diff --git a/k8s/helm/apigwms/templates/_helpers.tpl b/deploy/k8s/helm/apigwms/templates/_helpers.tpl similarity index 100% rename from k8s/helm/apigwms/templates/_helpers.tpl rename to deploy/k8s/helm/apigwms/templates/_helpers.tpl diff --git a/k8s/helm/apigwms/templates/_names.tpl b/deploy/k8s/helm/apigwms/templates/_names.tpl similarity index 100% rename from k8s/helm/apigwms/templates/_names.tpl rename to deploy/k8s/helm/apigwms/templates/_names.tpl diff --git a/k8s/helm/apigwms/templates/deployment.yaml b/deploy/k8s/helm/apigwms/templates/deployment.yaml similarity index 100% rename from k8s/helm/apigwms/templates/deployment.yaml rename to deploy/k8s/helm/apigwms/templates/deployment.yaml diff --git a/k8s/helm/apigwms/templates/envoy-cm.yaml b/deploy/k8s/helm/apigwms/templates/envoy-cm.yaml similarity index 100% rename from k8s/helm/apigwms/templates/envoy-cm.yaml rename to deploy/k8s/helm/apigwms/templates/envoy-cm.yaml diff --git a/k8s/helm/apigwms/templates/ingress.yaml b/deploy/k8s/helm/apigwms/templates/ingress.yaml similarity index 100% rename from k8s/helm/apigwms/templates/ingress.yaml rename to deploy/k8s/helm/apigwms/templates/ingress.yaml diff --git a/k8s/helm/apigwms/templates/service.yaml b/deploy/k8s/helm/apigwms/templates/service.yaml similarity index 100% rename from k8s/helm/apigwms/templates/service.yaml rename to deploy/k8s/helm/apigwms/templates/service.yaml diff --git a/k8s/helm/apigwms/values.yaml b/deploy/k8s/helm/apigwms/values.yaml similarity index 100% rename from k8s/helm/apigwms/values.yaml rename to deploy/k8s/helm/apigwms/values.yaml diff --git a/k8s/helm/apigwwm/.helmignore b/deploy/k8s/helm/apigwwm/.helmignore similarity index 100% rename from k8s/helm/apigwwm/.helmignore rename to deploy/k8s/helm/apigwwm/.helmignore diff --git a/k8s/helm/apigwwm/Chart.yaml b/deploy/k8s/helm/apigwwm/Chart.yaml similarity index 100% rename from k8s/helm/apigwwm/Chart.yaml rename to deploy/k8s/helm/apigwwm/Chart.yaml diff --git a/k8s/helm/apigwwm/envoy.yaml b/deploy/k8s/helm/apigwwm/envoy.yaml similarity index 100% rename from k8s/helm/apigwwm/envoy.yaml rename to deploy/k8s/helm/apigwwm/envoy.yaml diff --git a/k8s/helm/apigwwm/templates/NOTES.txt b/deploy/k8s/helm/apigwwm/templates/NOTES.txt similarity index 100% rename from k8s/helm/apigwwm/templates/NOTES.txt rename to deploy/k8s/helm/apigwwm/templates/NOTES.txt diff --git a/k8s/helm/apigwwm/templates/_helpers.tpl b/deploy/k8s/helm/apigwwm/templates/_helpers.tpl similarity index 100% rename from k8s/helm/apigwwm/templates/_helpers.tpl rename to deploy/k8s/helm/apigwwm/templates/_helpers.tpl diff --git a/k8s/helm/apigwwm/templates/_names.tpl b/deploy/k8s/helm/apigwwm/templates/_names.tpl similarity index 100% rename from k8s/helm/apigwwm/templates/_names.tpl rename to deploy/k8s/helm/apigwwm/templates/_names.tpl diff --git a/k8s/helm/apigwwm/templates/deployment.yaml b/deploy/k8s/helm/apigwwm/templates/deployment.yaml similarity index 100% rename from k8s/helm/apigwwm/templates/deployment.yaml rename to deploy/k8s/helm/apigwwm/templates/deployment.yaml diff --git a/k8s/helm/apigwwm/templates/envoy-cm.yaml b/deploy/k8s/helm/apigwwm/templates/envoy-cm.yaml similarity index 100% rename from k8s/helm/apigwwm/templates/envoy-cm.yaml rename to deploy/k8s/helm/apigwwm/templates/envoy-cm.yaml diff --git a/k8s/helm/apigwwm/templates/ingress.yaml b/deploy/k8s/helm/apigwwm/templates/ingress.yaml similarity index 100% rename from k8s/helm/apigwwm/templates/ingress.yaml rename to deploy/k8s/helm/apigwwm/templates/ingress.yaml diff --git a/k8s/helm/apigwwm/templates/service.yaml b/deploy/k8s/helm/apigwwm/templates/service.yaml similarity index 100% rename from k8s/helm/apigwwm/templates/service.yaml rename to deploy/k8s/helm/apigwwm/templates/service.yaml diff --git a/k8s/helm/apigwwm/values.yaml b/deploy/k8s/helm/apigwwm/values.yaml similarity index 100% rename from k8s/helm/apigwwm/values.yaml rename to deploy/k8s/helm/apigwwm/values.yaml diff --git a/k8s/helm/apigwws/.helmignore b/deploy/k8s/helm/apigwws/.helmignore similarity index 100% rename from k8s/helm/apigwws/.helmignore rename to deploy/k8s/helm/apigwws/.helmignore diff --git a/k8s/helm/apigwws/Chart.yaml b/deploy/k8s/helm/apigwws/Chart.yaml similarity index 100% rename from k8s/helm/apigwws/Chart.yaml rename to deploy/k8s/helm/apigwws/Chart.yaml diff --git a/k8s/helm/apigwws/envoy.yaml b/deploy/k8s/helm/apigwws/envoy.yaml similarity index 100% rename from k8s/helm/apigwws/envoy.yaml rename to deploy/k8s/helm/apigwws/envoy.yaml diff --git a/k8s/helm/apigwws/templates/NOTES.txt b/deploy/k8s/helm/apigwws/templates/NOTES.txt similarity index 100% rename from k8s/helm/apigwws/templates/NOTES.txt rename to deploy/k8s/helm/apigwws/templates/NOTES.txt diff --git a/k8s/helm/apigwws/templates/_helpers.tpl b/deploy/k8s/helm/apigwws/templates/_helpers.tpl similarity index 100% rename from k8s/helm/apigwws/templates/_helpers.tpl rename to deploy/k8s/helm/apigwws/templates/_helpers.tpl diff --git a/k8s/helm/apigwws/templates/_names.tpl b/deploy/k8s/helm/apigwws/templates/_names.tpl similarity index 100% rename from k8s/helm/apigwws/templates/_names.tpl rename to deploy/k8s/helm/apigwws/templates/_names.tpl diff --git a/k8s/helm/apigwws/templates/deployment.yaml b/deploy/k8s/helm/apigwws/templates/deployment.yaml similarity index 100% rename from k8s/helm/apigwws/templates/deployment.yaml rename to deploy/k8s/helm/apigwws/templates/deployment.yaml diff --git a/k8s/helm/apigwws/templates/envoy-cm.yaml b/deploy/k8s/helm/apigwws/templates/envoy-cm.yaml similarity index 100% rename from k8s/helm/apigwws/templates/envoy-cm.yaml rename to deploy/k8s/helm/apigwws/templates/envoy-cm.yaml diff --git a/k8s/helm/apigwws/templates/ingress.yaml b/deploy/k8s/helm/apigwws/templates/ingress.yaml similarity index 100% rename from k8s/helm/apigwws/templates/ingress.yaml rename to deploy/k8s/helm/apigwws/templates/ingress.yaml diff --git a/k8s/helm/apigwws/templates/service.yaml b/deploy/k8s/helm/apigwws/templates/service.yaml similarity index 100% rename from k8s/helm/apigwws/templates/service.yaml rename to deploy/k8s/helm/apigwws/templates/service.yaml diff --git a/k8s/helm/apigwws/values.yaml b/deploy/k8s/helm/apigwws/values.yaml similarity index 100% rename from k8s/helm/apigwws/values.yaml rename to deploy/k8s/helm/apigwws/values.yaml diff --git a/k8s/helm/app.yaml b/deploy/k8s/helm/app.yaml similarity index 100% rename from k8s/helm/app.yaml rename to deploy/k8s/helm/app.yaml diff --git a/k8s/helm/basket-api/.helmignore b/deploy/k8s/helm/basket-api/.helmignore similarity index 100% rename from k8s/helm/basket-api/.helmignore rename to deploy/k8s/helm/basket-api/.helmignore diff --git a/k8s/helm/basket-api/Chart.yaml b/deploy/k8s/helm/basket-api/Chart.yaml similarity index 100% rename from k8s/helm/basket-api/Chart.yaml rename to deploy/k8s/helm/basket-api/Chart.yaml diff --git a/k8s/helm/basket-api/templates/NOTES.txt b/deploy/k8s/helm/basket-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/basket-api/templates/NOTES.txt rename to deploy/k8s/helm/basket-api/templates/NOTES.txt diff --git a/k8s/helm/basket-api/templates/_helpers.tpl b/deploy/k8s/helm/basket-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/basket-api/templates/_helpers.tpl rename to deploy/k8s/helm/basket-api/templates/_helpers.tpl diff --git a/k8s/helm/basket-api/templates/_names.tpl b/deploy/k8s/helm/basket-api/templates/_names.tpl similarity index 100% rename from k8s/helm/basket-api/templates/_names.tpl rename to deploy/k8s/helm/basket-api/templates/_names.tpl diff --git a/k8s/helm/basket-api/templates/configmap.yaml b/deploy/k8s/helm/basket-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/basket-api/templates/configmap.yaml rename to deploy/k8s/helm/basket-api/templates/configmap.yaml diff --git a/k8s/helm/basket-api/templates/deployment.yaml b/deploy/k8s/helm/basket-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/basket-api/templates/deployment.yaml rename to deploy/k8s/helm/basket-api/templates/deployment.yaml diff --git a/k8s/helm/basket-api/templates/ingress.yaml b/deploy/k8s/helm/basket-api/templates/ingress.yaml similarity index 100% rename from k8s/helm/basket-api/templates/ingress.yaml rename to deploy/k8s/helm/basket-api/templates/ingress.yaml diff --git a/k8s/helm/basket-api/templates/service.yaml b/deploy/k8s/helm/basket-api/templates/service.yaml similarity index 100% rename from k8s/helm/basket-api/templates/service.yaml rename to deploy/k8s/helm/basket-api/templates/service.yaml diff --git a/k8s/helm/basket-api/values.yaml b/deploy/k8s/helm/basket-api/values.yaml similarity index 100% rename from k8s/helm/basket-api/values.yaml rename to deploy/k8s/helm/basket-api/values.yaml diff --git a/k8s/helm/basket-data/.helmignore b/deploy/k8s/helm/basket-data/.helmignore similarity index 100% rename from k8s/helm/basket-data/.helmignore rename to deploy/k8s/helm/basket-data/.helmignore diff --git a/k8s/helm/basket-data/Chart.yaml b/deploy/k8s/helm/basket-data/Chart.yaml similarity index 100% rename from k8s/helm/basket-data/Chart.yaml rename to deploy/k8s/helm/basket-data/Chart.yaml diff --git a/k8s/helm/basket-data/templates/NOTES.txt b/deploy/k8s/helm/basket-data/templates/NOTES.txt similarity index 100% rename from k8s/helm/basket-data/templates/NOTES.txt rename to deploy/k8s/helm/basket-data/templates/NOTES.txt diff --git a/k8s/helm/basket-data/templates/_helpers.tpl b/deploy/k8s/helm/basket-data/templates/_helpers.tpl similarity index 100% rename from k8s/helm/basket-data/templates/_helpers.tpl rename to deploy/k8s/helm/basket-data/templates/_helpers.tpl diff --git a/k8s/helm/basket-data/templates/deployment.yaml b/deploy/k8s/helm/basket-data/templates/deployment.yaml similarity index 100% rename from k8s/helm/basket-data/templates/deployment.yaml rename to deploy/k8s/helm/basket-data/templates/deployment.yaml diff --git a/k8s/helm/basket-data/templates/service.yaml b/deploy/k8s/helm/basket-data/templates/service.yaml similarity index 100% rename from k8s/helm/basket-data/templates/service.yaml rename to deploy/k8s/helm/basket-data/templates/service.yaml diff --git a/k8s/helm/basket-data/values.yaml b/deploy/k8s/helm/basket-data/values.yaml similarity index 100% rename from k8s/helm/basket-data/values.yaml rename to deploy/k8s/helm/basket-data/values.yaml diff --git a/k8s/helm/catalog-api/.helmignore b/deploy/k8s/helm/catalog-api/.helmignore similarity index 100% rename from k8s/helm/catalog-api/.helmignore rename to deploy/k8s/helm/catalog-api/.helmignore diff --git a/k8s/helm/catalog-api/Chart.yaml b/deploy/k8s/helm/catalog-api/Chart.yaml similarity index 100% rename from k8s/helm/catalog-api/Chart.yaml rename to deploy/k8s/helm/catalog-api/Chart.yaml diff --git a/k8s/helm/catalog-api/templates/NOTES.txt b/deploy/k8s/helm/catalog-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/catalog-api/templates/NOTES.txt rename to deploy/k8s/helm/catalog-api/templates/NOTES.txt diff --git a/k8s/helm/catalog-api/templates/_helpers.tpl b/deploy/k8s/helm/catalog-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/catalog-api/templates/_helpers.tpl rename to deploy/k8s/helm/catalog-api/templates/_helpers.tpl diff --git a/k8s/helm/catalog-api/templates/_names.tpl b/deploy/k8s/helm/catalog-api/templates/_names.tpl similarity index 100% rename from k8s/helm/catalog-api/templates/_names.tpl rename to deploy/k8s/helm/catalog-api/templates/_names.tpl diff --git a/k8s/helm/catalog-api/templates/configmap.yaml b/deploy/k8s/helm/catalog-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/catalog-api/templates/configmap.yaml rename to deploy/k8s/helm/catalog-api/templates/configmap.yaml diff --git a/k8s/helm/catalog-api/templates/deployment.yaml b/deploy/k8s/helm/catalog-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/catalog-api/templates/deployment.yaml rename to deploy/k8s/helm/catalog-api/templates/deployment.yaml diff --git a/k8s/helm/catalog-api/templates/ingress.yaml b/deploy/k8s/helm/catalog-api/templates/ingress.yaml similarity index 100% rename from k8s/helm/catalog-api/templates/ingress.yaml rename to deploy/k8s/helm/catalog-api/templates/ingress.yaml diff --git a/k8s/helm/catalog-api/templates/service.yaml b/deploy/k8s/helm/catalog-api/templates/service.yaml similarity index 100% rename from k8s/helm/catalog-api/templates/service.yaml rename to deploy/k8s/helm/catalog-api/templates/service.yaml diff --git a/k8s/helm/catalog-api/values.yaml b/deploy/k8s/helm/catalog-api/values.yaml similarity index 100% rename from k8s/helm/catalog-api/values.yaml rename to deploy/k8s/helm/catalog-api/values.yaml diff --git a/k8s/helm/deploy-all-istio.ps1 b/deploy/k8s/helm/deploy-all-istio.ps1 similarity index 100% rename from k8s/helm/deploy-all-istio.ps1 rename to deploy/k8s/helm/deploy-all-istio.ps1 diff --git a/k8s/helm/deploy-all.ps1 b/deploy/k8s/helm/deploy-all.ps1 similarity index 100% rename from k8s/helm/deploy-all.ps1 rename to deploy/k8s/helm/deploy-all.ps1 diff --git a/k8s/helm/deploy-all.sh b/deploy/k8s/helm/deploy-all.sh old mode 100755 new mode 100644 similarity index 100% rename from k8s/helm/deploy-all.sh rename to deploy/k8s/helm/deploy-all.sh diff --git a/k8s/helm/eshop-common/.helmignore b/deploy/k8s/helm/eshop-common/.helmignore similarity index 100% rename from k8s/helm/eshop-common/.helmignore rename to deploy/k8s/helm/eshop-common/.helmignore diff --git a/k8s/helm/eshop-common/Chart.yaml b/deploy/k8s/helm/eshop-common/Chart.yaml similarity index 100% rename from k8s/helm/eshop-common/Chart.yaml rename to deploy/k8s/helm/eshop-common/Chart.yaml diff --git a/k8s/helm/eshop-common/templates/NOTES.txt b/deploy/k8s/helm/eshop-common/templates/NOTES.txt similarity index 100% rename from k8s/helm/eshop-common/templates/NOTES.txt rename to deploy/k8s/helm/eshop-common/templates/NOTES.txt diff --git a/k8s/helm/eshop-common/templates/_helpers.tpl b/deploy/k8s/helm/eshop-common/templates/_helpers.tpl similarity index 100% rename from k8s/helm/eshop-common/templates/_helpers.tpl rename to deploy/k8s/helm/eshop-common/templates/_helpers.tpl diff --git a/k8s/helm/eshop-common/templates/_names.tpl b/deploy/k8s/helm/eshop-common/templates/_names.tpl similarity index 100% rename from k8s/helm/eshop-common/templates/_names.tpl rename to deploy/k8s/helm/eshop-common/templates/_names.tpl diff --git a/k8s/helm/eshop-common/templates/secret.yaml b/deploy/k8s/helm/eshop-common/templates/secret.yaml similarity index 100% rename from k8s/helm/eshop-common/templates/secret.yaml rename to deploy/k8s/helm/eshop-common/templates/secret.yaml diff --git a/k8s/helm/eshop-common/values.yaml b/deploy/k8s/helm/eshop-common/values.yaml similarity index 100% rename from k8s/helm/eshop-common/values.yaml rename to deploy/k8s/helm/eshop-common/values.yaml diff --git a/k8s/helm/identity-api/.helmignore b/deploy/k8s/helm/identity-api/.helmignore similarity index 100% rename from k8s/helm/identity-api/.helmignore rename to deploy/k8s/helm/identity-api/.helmignore diff --git a/k8s/helm/identity-api/Chart.yaml b/deploy/k8s/helm/identity-api/Chart.yaml similarity index 100% rename from k8s/helm/identity-api/Chart.yaml rename to deploy/k8s/helm/identity-api/Chart.yaml diff --git a/k8s/helm/identity-api/templates/NOTES.txt b/deploy/k8s/helm/identity-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/identity-api/templates/NOTES.txt rename to deploy/k8s/helm/identity-api/templates/NOTES.txt diff --git a/k8s/helm/identity-api/templates/_helpers.tpl b/deploy/k8s/helm/identity-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/identity-api/templates/_helpers.tpl rename to deploy/k8s/helm/identity-api/templates/_helpers.tpl diff --git a/k8s/helm/identity-api/templates/_names.tpl b/deploy/k8s/helm/identity-api/templates/_names.tpl similarity index 100% rename from k8s/helm/identity-api/templates/_names.tpl rename to deploy/k8s/helm/identity-api/templates/_names.tpl diff --git a/k8s/helm/identity-api/templates/configmap.yaml b/deploy/k8s/helm/identity-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/identity-api/templates/configmap.yaml rename to deploy/k8s/helm/identity-api/templates/configmap.yaml diff --git a/k8s/helm/identity-api/templates/deployment.yaml b/deploy/k8s/helm/identity-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/identity-api/templates/deployment.yaml rename to deploy/k8s/helm/identity-api/templates/deployment.yaml diff --git a/k8s/helm/identity-api/templates/ingress-dockerk8s.yaml b/deploy/k8s/helm/identity-api/templates/ingress-dockerk8s.yaml similarity index 100% rename from k8s/helm/identity-api/templates/ingress-dockerk8s.yaml rename to deploy/k8s/helm/identity-api/templates/ingress-dockerk8s.yaml diff --git a/k8s/helm/identity-api/templates/ingress.yaml b/deploy/k8s/helm/identity-api/templates/ingress.yaml similarity index 100% rename from k8s/helm/identity-api/templates/ingress.yaml rename to deploy/k8s/helm/identity-api/templates/ingress.yaml diff --git a/k8s/helm/identity-api/templates/service.yaml b/deploy/k8s/helm/identity-api/templates/service.yaml similarity index 100% rename from k8s/helm/identity-api/templates/service.yaml rename to deploy/k8s/helm/identity-api/templates/service.yaml diff --git a/k8s/helm/identity-api/values.yaml b/deploy/k8s/helm/identity-api/values.yaml similarity index 100% rename from k8s/helm/identity-api/values.yaml rename to deploy/k8s/helm/identity-api/values.yaml diff --git a/k8s/helm/inf.yaml b/deploy/k8s/helm/inf.yaml similarity index 100% rename from k8s/helm/inf.yaml rename to deploy/k8s/helm/inf.yaml diff --git a/k8s/helm/ingress_values.yaml b/deploy/k8s/helm/ingress_values.yaml similarity index 100% rename from k8s/helm/ingress_values.yaml rename to deploy/k8s/helm/ingress_values.yaml diff --git a/k8s/helm/ingress_values_dockerk8s.yaml b/deploy/k8s/helm/ingress_values_dockerk8s.yaml similarity index 100% rename from k8s/helm/ingress_values_dockerk8s.yaml rename to deploy/k8s/helm/ingress_values_dockerk8s.yaml diff --git a/k8s/helm/ingress_values_linkerd.yaml b/deploy/k8s/helm/ingress_values_linkerd.yaml similarity index 100% rename from k8s/helm/ingress_values_linkerd.yaml rename to deploy/k8s/helm/ingress_values_linkerd.yaml diff --git a/k8s/helm/istio/doc.md b/deploy/k8s/helm/istio/doc.md similarity index 100% rename from k8s/helm/istio/doc.md rename to deploy/k8s/helm/istio/doc.md diff --git a/k8s/helm/istio/gateway.yml b/deploy/k8s/helm/istio/gateway.yml similarity index 100% rename from k8s/helm/istio/gateway.yml rename to deploy/k8s/helm/istio/gateway.yml diff --git a/k8s/helm/istio/virtualservices.yml b/deploy/k8s/helm/istio/virtualservices.yml similarity index 100% rename from k8s/helm/istio/virtualservices.yml rename to deploy/k8s/helm/istio/virtualservices.yml diff --git a/k8s/helm/keystore-data/.helmignore b/deploy/k8s/helm/keystore-data/.helmignore similarity index 100% rename from k8s/helm/keystore-data/.helmignore rename to deploy/k8s/helm/keystore-data/.helmignore diff --git a/k8s/helm/keystore-data/Chart.yaml b/deploy/k8s/helm/keystore-data/Chart.yaml similarity index 100% rename from k8s/helm/keystore-data/Chart.yaml rename to deploy/k8s/helm/keystore-data/Chart.yaml diff --git a/k8s/helm/keystore-data/templates/NOTES.txt b/deploy/k8s/helm/keystore-data/templates/NOTES.txt similarity index 100% rename from k8s/helm/keystore-data/templates/NOTES.txt rename to deploy/k8s/helm/keystore-data/templates/NOTES.txt diff --git a/k8s/helm/keystore-data/templates/_helpers.tpl b/deploy/k8s/helm/keystore-data/templates/_helpers.tpl similarity index 100% rename from k8s/helm/keystore-data/templates/_helpers.tpl rename to deploy/k8s/helm/keystore-data/templates/_helpers.tpl diff --git a/k8s/helm/keystore-data/templates/deployment.yaml b/deploy/k8s/helm/keystore-data/templates/deployment.yaml similarity index 100% rename from k8s/helm/keystore-data/templates/deployment.yaml rename to deploy/k8s/helm/keystore-data/templates/deployment.yaml diff --git a/k8s/helm/keystore-data/templates/service.yaml b/deploy/k8s/helm/keystore-data/templates/service.yaml similarity index 100% rename from k8s/helm/keystore-data/templates/service.yaml rename to deploy/k8s/helm/keystore-data/templates/service.yaml diff --git a/k8s/helm/keystore-data/values.yaml b/deploy/k8s/helm/keystore-data/values.yaml similarity index 100% rename from k8s/helm/keystore-data/values.yaml rename to deploy/k8s/helm/keystore-data/values.yaml diff --git a/k8s/helm/locations-api/.helmignore b/deploy/k8s/helm/locations-api/.helmignore similarity index 100% rename from k8s/helm/locations-api/.helmignore rename to deploy/k8s/helm/locations-api/.helmignore diff --git a/k8s/helm/locations-api/Chart.yaml b/deploy/k8s/helm/locations-api/Chart.yaml similarity index 100% rename from k8s/helm/locations-api/Chart.yaml rename to deploy/k8s/helm/locations-api/Chart.yaml diff --git a/k8s/helm/locations-api/templates/NOTES.txt b/deploy/k8s/helm/locations-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/locations-api/templates/NOTES.txt rename to deploy/k8s/helm/locations-api/templates/NOTES.txt diff --git a/k8s/helm/locations-api/templates/_helpers.tpl b/deploy/k8s/helm/locations-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/locations-api/templates/_helpers.tpl rename to deploy/k8s/helm/locations-api/templates/_helpers.tpl diff --git a/k8s/helm/locations-api/templates/_names.tpl b/deploy/k8s/helm/locations-api/templates/_names.tpl similarity index 100% rename from k8s/helm/locations-api/templates/_names.tpl rename to deploy/k8s/helm/locations-api/templates/_names.tpl diff --git a/k8s/helm/locations-api/templates/configmap.yaml b/deploy/k8s/helm/locations-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/locations-api/templates/configmap.yaml rename to deploy/k8s/helm/locations-api/templates/configmap.yaml diff --git a/k8s/helm/locations-api/templates/deployment.yaml b/deploy/k8s/helm/locations-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/locations-api/templates/deployment.yaml rename to deploy/k8s/helm/locations-api/templates/deployment.yaml diff --git a/k8s/helm/locations-api/templates/ingress.yaml b/deploy/k8s/helm/locations-api/templates/ingress.yaml similarity index 100% rename from k8s/helm/locations-api/templates/ingress.yaml rename to deploy/k8s/helm/locations-api/templates/ingress.yaml diff --git a/k8s/helm/locations-api/templates/service.yaml b/deploy/k8s/helm/locations-api/templates/service.yaml similarity index 100% rename from k8s/helm/locations-api/templates/service.yaml rename to deploy/k8s/helm/locations-api/templates/service.yaml diff --git a/k8s/helm/locations-api/values.yaml b/deploy/k8s/helm/locations-api/values.yaml similarity index 100% rename from k8s/helm/locations-api/values.yaml rename to deploy/k8s/helm/locations-api/values.yaml diff --git a/k8s/helm/marketing-api/.helmignore b/deploy/k8s/helm/marketing-api/.helmignore similarity index 100% rename from k8s/helm/marketing-api/.helmignore rename to deploy/k8s/helm/marketing-api/.helmignore diff --git a/k8s/helm/marketing-api/Chart.yaml b/deploy/k8s/helm/marketing-api/Chart.yaml similarity index 100% rename from k8s/helm/marketing-api/Chart.yaml rename to deploy/k8s/helm/marketing-api/Chart.yaml diff --git a/k8s/helm/marketing-api/templates/NOTES.txt b/deploy/k8s/helm/marketing-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/marketing-api/templates/NOTES.txt rename to deploy/k8s/helm/marketing-api/templates/NOTES.txt diff --git a/k8s/helm/marketing-api/templates/_helpers.tpl b/deploy/k8s/helm/marketing-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/marketing-api/templates/_helpers.tpl rename to deploy/k8s/helm/marketing-api/templates/_helpers.tpl diff --git a/k8s/helm/marketing-api/templates/_names.tpl b/deploy/k8s/helm/marketing-api/templates/_names.tpl similarity index 100% rename from k8s/helm/marketing-api/templates/_names.tpl rename to deploy/k8s/helm/marketing-api/templates/_names.tpl diff --git a/k8s/helm/marketing-api/templates/configmap.yaml b/deploy/k8s/helm/marketing-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/marketing-api/templates/configmap.yaml rename to deploy/k8s/helm/marketing-api/templates/configmap.yaml diff --git a/k8s/helm/marketing-api/templates/deployment.yaml b/deploy/k8s/helm/marketing-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/marketing-api/templates/deployment.yaml rename to deploy/k8s/helm/marketing-api/templates/deployment.yaml diff --git a/k8s/helm/marketing-api/templates/ingress.yaml b/deploy/k8s/helm/marketing-api/templates/ingress.yaml similarity index 100% rename from k8s/helm/marketing-api/templates/ingress.yaml rename to deploy/k8s/helm/marketing-api/templates/ingress.yaml diff --git a/k8s/helm/marketing-api/templates/service.yaml b/deploy/k8s/helm/marketing-api/templates/service.yaml similarity index 100% rename from k8s/helm/marketing-api/templates/service.yaml rename to deploy/k8s/helm/marketing-api/templates/service.yaml diff --git a/k8s/helm/marketing-api/values.yaml b/deploy/k8s/helm/marketing-api/values.yaml similarity index 100% rename from k8s/helm/marketing-api/values.yaml rename to deploy/k8s/helm/marketing-api/values.yaml diff --git a/k8s/helm/mobileshoppingagg/.helmignore b/deploy/k8s/helm/mobileshoppingagg/.helmignore similarity index 100% rename from k8s/helm/mobileshoppingagg/.helmignore rename to deploy/k8s/helm/mobileshoppingagg/.helmignore diff --git a/k8s/helm/mobileshoppingagg/Chart.yaml b/deploy/k8s/helm/mobileshoppingagg/Chart.yaml similarity index 100% rename from k8s/helm/mobileshoppingagg/Chart.yaml rename to deploy/k8s/helm/mobileshoppingagg/Chart.yaml diff --git a/k8s/helm/mobileshoppingagg/templates/NOTES.txt b/deploy/k8s/helm/mobileshoppingagg/templates/NOTES.txt similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/NOTES.txt rename to deploy/k8s/helm/mobileshoppingagg/templates/NOTES.txt diff --git a/k8s/helm/mobileshoppingagg/templates/_helpers.tpl b/deploy/k8s/helm/mobileshoppingagg/templates/_helpers.tpl similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/_helpers.tpl rename to deploy/k8s/helm/mobileshoppingagg/templates/_helpers.tpl diff --git a/k8s/helm/mobileshoppingagg/templates/_names.tpl b/deploy/k8s/helm/mobileshoppingagg/templates/_names.tpl similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/_names.tpl rename to deploy/k8s/helm/mobileshoppingagg/templates/_names.tpl diff --git a/k8s/helm/mobileshoppingagg/templates/configmap.yaml b/deploy/k8s/helm/mobileshoppingagg/templates/configmap.yaml similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/configmap.yaml rename to deploy/k8s/helm/mobileshoppingagg/templates/configmap.yaml diff --git a/k8s/helm/mobileshoppingagg/templates/deployment.yaml b/deploy/k8s/helm/mobileshoppingagg/templates/deployment.yaml similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/deployment.yaml rename to deploy/k8s/helm/mobileshoppingagg/templates/deployment.yaml diff --git a/k8s/helm/mobileshoppingagg/templates/ingress.yaml b/deploy/k8s/helm/mobileshoppingagg/templates/ingress.yaml similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/ingress.yaml rename to deploy/k8s/helm/mobileshoppingagg/templates/ingress.yaml diff --git a/k8s/helm/mobileshoppingagg/templates/service.yaml b/deploy/k8s/helm/mobileshoppingagg/templates/service.yaml similarity index 100% rename from k8s/helm/mobileshoppingagg/templates/service.yaml rename to deploy/k8s/helm/mobileshoppingagg/templates/service.yaml diff --git a/k8s/helm/mobileshoppingagg/values.yaml b/deploy/k8s/helm/mobileshoppingagg/values.yaml similarity index 100% rename from k8s/helm/mobileshoppingagg/values.yaml rename to deploy/k8s/helm/mobileshoppingagg/values.yaml diff --git a/k8s/helm/nosql-data/.helmignore b/deploy/k8s/helm/nosql-data/.helmignore similarity index 100% rename from k8s/helm/nosql-data/.helmignore rename to deploy/k8s/helm/nosql-data/.helmignore diff --git a/k8s/helm/nosql-data/Chart.yaml b/deploy/k8s/helm/nosql-data/Chart.yaml similarity index 100% rename from k8s/helm/nosql-data/Chart.yaml rename to deploy/k8s/helm/nosql-data/Chart.yaml diff --git a/k8s/helm/nosql-data/templates/NOTES.txt b/deploy/k8s/helm/nosql-data/templates/NOTES.txt similarity index 100% rename from k8s/helm/nosql-data/templates/NOTES.txt rename to deploy/k8s/helm/nosql-data/templates/NOTES.txt diff --git a/k8s/helm/nosql-data/templates/_helpers.tpl b/deploy/k8s/helm/nosql-data/templates/_helpers.tpl similarity index 100% rename from k8s/helm/nosql-data/templates/_helpers.tpl rename to deploy/k8s/helm/nosql-data/templates/_helpers.tpl diff --git a/k8s/helm/nosql-data/templates/_names.tpl b/deploy/k8s/helm/nosql-data/templates/_names.tpl similarity index 100% rename from k8s/helm/nosql-data/templates/_names.tpl rename to deploy/k8s/helm/nosql-data/templates/_names.tpl diff --git a/k8s/helm/nosql-data/templates/deployment.yaml b/deploy/k8s/helm/nosql-data/templates/deployment.yaml similarity index 100% rename from k8s/helm/nosql-data/templates/deployment.yaml rename to deploy/k8s/helm/nosql-data/templates/deployment.yaml diff --git a/k8s/helm/nosql-data/templates/service.yaml b/deploy/k8s/helm/nosql-data/templates/service.yaml similarity index 100% rename from k8s/helm/nosql-data/templates/service.yaml rename to deploy/k8s/helm/nosql-data/templates/service.yaml diff --git a/k8s/helm/nosql-data/values.yaml b/deploy/k8s/helm/nosql-data/values.yaml similarity index 100% rename from k8s/helm/nosql-data/values.yaml rename to deploy/k8s/helm/nosql-data/values.yaml diff --git a/k8s/helm/ordering-api/.helmignore b/deploy/k8s/helm/ordering-api/.helmignore similarity index 100% rename from k8s/helm/ordering-api/.helmignore rename to deploy/k8s/helm/ordering-api/.helmignore diff --git a/k8s/helm/ordering-api/Chart.yaml b/deploy/k8s/helm/ordering-api/Chart.yaml similarity index 100% rename from k8s/helm/ordering-api/Chart.yaml rename to deploy/k8s/helm/ordering-api/Chart.yaml diff --git a/k8s/helm/ordering-api/templates/NOTES.txt b/deploy/k8s/helm/ordering-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/ordering-api/templates/NOTES.txt rename to deploy/k8s/helm/ordering-api/templates/NOTES.txt diff --git a/k8s/helm/ordering-api/templates/_helpers.tpl b/deploy/k8s/helm/ordering-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/ordering-api/templates/_helpers.tpl rename to deploy/k8s/helm/ordering-api/templates/_helpers.tpl diff --git a/k8s/helm/ordering-api/templates/_names.tpl b/deploy/k8s/helm/ordering-api/templates/_names.tpl similarity index 100% rename from k8s/helm/ordering-api/templates/_names.tpl rename to deploy/k8s/helm/ordering-api/templates/_names.tpl diff --git a/k8s/helm/ordering-api/templates/configmap.yaml b/deploy/k8s/helm/ordering-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/ordering-api/templates/configmap.yaml rename to deploy/k8s/helm/ordering-api/templates/configmap.yaml diff --git a/k8s/helm/ordering-api/templates/deployment.yaml b/deploy/k8s/helm/ordering-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/ordering-api/templates/deployment.yaml rename to deploy/k8s/helm/ordering-api/templates/deployment.yaml diff --git a/k8s/helm/ordering-api/templates/service.yaml b/deploy/k8s/helm/ordering-api/templates/service.yaml similarity index 100% rename from k8s/helm/ordering-api/templates/service.yaml rename to deploy/k8s/helm/ordering-api/templates/service.yaml diff --git a/k8s/helm/ordering-api/values.yaml b/deploy/k8s/helm/ordering-api/values.yaml similarity index 100% rename from k8s/helm/ordering-api/values.yaml rename to deploy/k8s/helm/ordering-api/values.yaml diff --git a/k8s/helm/ordering-backgroundtasks/.helmignore b/deploy/k8s/helm/ordering-backgroundtasks/.helmignore similarity index 100% rename from k8s/helm/ordering-backgroundtasks/.helmignore rename to deploy/k8s/helm/ordering-backgroundtasks/.helmignore diff --git a/k8s/helm/ordering-backgroundtasks/Chart.yaml b/deploy/k8s/helm/ordering-backgroundtasks/Chart.yaml similarity index 100% rename from k8s/helm/ordering-backgroundtasks/Chart.yaml rename to deploy/k8s/helm/ordering-backgroundtasks/Chart.yaml diff --git a/k8s/helm/ordering-backgroundtasks/templates/NOTES.txt b/deploy/k8s/helm/ordering-backgroundtasks/templates/NOTES.txt similarity index 100% rename from k8s/helm/ordering-backgroundtasks/templates/NOTES.txt rename to deploy/k8s/helm/ordering-backgroundtasks/templates/NOTES.txt diff --git a/k8s/helm/ordering-backgroundtasks/templates/_helpers.tpl b/deploy/k8s/helm/ordering-backgroundtasks/templates/_helpers.tpl similarity index 100% rename from k8s/helm/ordering-backgroundtasks/templates/_helpers.tpl rename to deploy/k8s/helm/ordering-backgroundtasks/templates/_helpers.tpl diff --git a/k8s/helm/ordering-backgroundtasks/templates/_names.tpl b/deploy/k8s/helm/ordering-backgroundtasks/templates/_names.tpl similarity index 100% rename from k8s/helm/ordering-backgroundtasks/templates/_names.tpl rename to deploy/k8s/helm/ordering-backgroundtasks/templates/_names.tpl diff --git a/k8s/helm/ordering-backgroundtasks/templates/configmap.yaml b/deploy/k8s/helm/ordering-backgroundtasks/templates/configmap.yaml similarity index 100% rename from k8s/helm/ordering-backgroundtasks/templates/configmap.yaml rename to deploy/k8s/helm/ordering-backgroundtasks/templates/configmap.yaml diff --git a/k8s/helm/ordering-backgroundtasks/templates/deployment.yaml b/deploy/k8s/helm/ordering-backgroundtasks/templates/deployment.yaml similarity index 100% rename from k8s/helm/ordering-backgroundtasks/templates/deployment.yaml rename to deploy/k8s/helm/ordering-backgroundtasks/templates/deployment.yaml diff --git a/k8s/helm/ordering-backgroundtasks/templates/service.yaml b/deploy/k8s/helm/ordering-backgroundtasks/templates/service.yaml similarity index 100% rename from k8s/helm/ordering-backgroundtasks/templates/service.yaml rename to deploy/k8s/helm/ordering-backgroundtasks/templates/service.yaml diff --git a/k8s/helm/ordering-backgroundtasks/values.yaml b/deploy/k8s/helm/ordering-backgroundtasks/values.yaml similarity index 100% rename from k8s/helm/ordering-backgroundtasks/values.yaml rename to deploy/k8s/helm/ordering-backgroundtasks/values.yaml diff --git a/k8s/helm/ordering-signalrhub/.helmignore b/deploy/k8s/helm/ordering-signalrhub/.helmignore similarity index 100% rename from k8s/helm/ordering-signalrhub/.helmignore rename to deploy/k8s/helm/ordering-signalrhub/.helmignore diff --git a/k8s/helm/ordering-signalrhub/Chart.yaml b/deploy/k8s/helm/ordering-signalrhub/Chart.yaml similarity index 100% rename from k8s/helm/ordering-signalrhub/Chart.yaml rename to deploy/k8s/helm/ordering-signalrhub/Chart.yaml diff --git a/k8s/helm/ordering-signalrhub/templates/NOTES.txt b/deploy/k8s/helm/ordering-signalrhub/templates/NOTES.txt similarity index 100% rename from k8s/helm/ordering-signalrhub/templates/NOTES.txt rename to deploy/k8s/helm/ordering-signalrhub/templates/NOTES.txt diff --git a/k8s/helm/ordering-signalrhub/templates/_helpers.tpl b/deploy/k8s/helm/ordering-signalrhub/templates/_helpers.tpl similarity index 100% rename from k8s/helm/ordering-signalrhub/templates/_helpers.tpl rename to deploy/k8s/helm/ordering-signalrhub/templates/_helpers.tpl diff --git a/k8s/helm/ordering-signalrhub/templates/_names.tpl b/deploy/k8s/helm/ordering-signalrhub/templates/_names.tpl similarity index 100% rename from k8s/helm/ordering-signalrhub/templates/_names.tpl rename to deploy/k8s/helm/ordering-signalrhub/templates/_names.tpl diff --git a/k8s/helm/ordering-signalrhub/templates/configmap.yaml b/deploy/k8s/helm/ordering-signalrhub/templates/configmap.yaml similarity index 100% rename from k8s/helm/ordering-signalrhub/templates/configmap.yaml rename to deploy/k8s/helm/ordering-signalrhub/templates/configmap.yaml diff --git a/k8s/helm/ordering-signalrhub/templates/deployment.yaml b/deploy/k8s/helm/ordering-signalrhub/templates/deployment.yaml similarity index 100% rename from k8s/helm/ordering-signalrhub/templates/deployment.yaml rename to deploy/k8s/helm/ordering-signalrhub/templates/deployment.yaml diff --git a/k8s/helm/ordering-signalrhub/templates/service.yaml b/deploy/k8s/helm/ordering-signalrhub/templates/service.yaml similarity index 100% rename from k8s/helm/ordering-signalrhub/templates/service.yaml rename to deploy/k8s/helm/ordering-signalrhub/templates/service.yaml diff --git a/k8s/helm/ordering-signalrhub/values.yaml b/deploy/k8s/helm/ordering-signalrhub/values.yaml similarity index 100% rename from k8s/helm/ordering-signalrhub/values.yaml rename to deploy/k8s/helm/ordering-signalrhub/values.yaml diff --git a/k8s/helm/payment-api/.helmignore b/deploy/k8s/helm/payment-api/.helmignore similarity index 100% rename from k8s/helm/payment-api/.helmignore rename to deploy/k8s/helm/payment-api/.helmignore diff --git a/k8s/helm/payment-api/Chart.yaml b/deploy/k8s/helm/payment-api/Chart.yaml similarity index 100% rename from k8s/helm/payment-api/Chart.yaml rename to deploy/k8s/helm/payment-api/Chart.yaml diff --git a/k8s/helm/payment-api/templates/NOTES.txt b/deploy/k8s/helm/payment-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/payment-api/templates/NOTES.txt rename to deploy/k8s/helm/payment-api/templates/NOTES.txt diff --git a/k8s/helm/payment-api/templates/_helpers.tpl b/deploy/k8s/helm/payment-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/payment-api/templates/_helpers.tpl rename to deploy/k8s/helm/payment-api/templates/_helpers.tpl diff --git a/k8s/helm/payment-api/templates/_names.tpl b/deploy/k8s/helm/payment-api/templates/_names.tpl similarity index 100% rename from k8s/helm/payment-api/templates/_names.tpl rename to deploy/k8s/helm/payment-api/templates/_names.tpl diff --git a/k8s/helm/payment-api/templates/configmap.yaml b/deploy/k8s/helm/payment-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/payment-api/templates/configmap.yaml rename to deploy/k8s/helm/payment-api/templates/configmap.yaml diff --git a/k8s/helm/payment-api/templates/deployment.yaml b/deploy/k8s/helm/payment-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/payment-api/templates/deployment.yaml rename to deploy/k8s/helm/payment-api/templates/deployment.yaml diff --git a/k8s/helm/payment-api/templates/service.yaml b/deploy/k8s/helm/payment-api/templates/service.yaml similarity index 100% rename from k8s/helm/payment-api/templates/service.yaml rename to deploy/k8s/helm/payment-api/templates/service.yaml diff --git a/k8s/helm/payment-api/values.yaml b/deploy/k8s/helm/payment-api/values.yaml similarity index 100% rename from k8s/helm/payment-api/values.yaml rename to deploy/k8s/helm/payment-api/values.yaml diff --git a/k8s/helm/rabbitmq/.helmignore b/deploy/k8s/helm/rabbitmq/.helmignore similarity index 100% rename from k8s/helm/rabbitmq/.helmignore rename to deploy/k8s/helm/rabbitmq/.helmignore diff --git a/k8s/helm/rabbitmq/Chart.yaml b/deploy/k8s/helm/rabbitmq/Chart.yaml similarity index 100% rename from k8s/helm/rabbitmq/Chart.yaml rename to deploy/k8s/helm/rabbitmq/Chart.yaml diff --git a/k8s/helm/rabbitmq/templates/NOTES.txt b/deploy/k8s/helm/rabbitmq/templates/NOTES.txt similarity index 100% rename from k8s/helm/rabbitmq/templates/NOTES.txt rename to deploy/k8s/helm/rabbitmq/templates/NOTES.txt diff --git a/k8s/helm/rabbitmq/templates/_helpers.tpl b/deploy/k8s/helm/rabbitmq/templates/_helpers.tpl similarity index 100% rename from k8s/helm/rabbitmq/templates/_helpers.tpl rename to deploy/k8s/helm/rabbitmq/templates/_helpers.tpl diff --git a/k8s/helm/rabbitmq/templates/_names.tpl b/deploy/k8s/helm/rabbitmq/templates/_names.tpl similarity index 100% rename from k8s/helm/rabbitmq/templates/_names.tpl rename to deploy/k8s/helm/rabbitmq/templates/_names.tpl diff --git a/k8s/helm/rabbitmq/templates/deployment.yaml b/deploy/k8s/helm/rabbitmq/templates/deployment.yaml similarity index 100% rename from k8s/helm/rabbitmq/templates/deployment.yaml rename to deploy/k8s/helm/rabbitmq/templates/deployment.yaml diff --git a/k8s/helm/rabbitmq/templates/service.yaml b/deploy/k8s/helm/rabbitmq/templates/service.yaml similarity index 100% rename from k8s/helm/rabbitmq/templates/service.yaml rename to deploy/k8s/helm/rabbitmq/templates/service.yaml diff --git a/k8s/helm/rabbitmq/values.yaml b/deploy/k8s/helm/rabbitmq/values.yaml similarity index 100% rename from k8s/helm/rabbitmq/values.yaml rename to deploy/k8s/helm/rabbitmq/values.yaml diff --git a/k8s/helm/sql-data/.helmignore b/deploy/k8s/helm/sql-data/.helmignore similarity index 100% rename from k8s/helm/sql-data/.helmignore rename to deploy/k8s/helm/sql-data/.helmignore diff --git a/k8s/helm/sql-data/Chart.yaml b/deploy/k8s/helm/sql-data/Chart.yaml similarity index 100% rename from k8s/helm/sql-data/Chart.yaml rename to deploy/k8s/helm/sql-data/Chart.yaml diff --git a/k8s/helm/sql-data/templates/NOTES.txt b/deploy/k8s/helm/sql-data/templates/NOTES.txt similarity index 100% rename from k8s/helm/sql-data/templates/NOTES.txt rename to deploy/k8s/helm/sql-data/templates/NOTES.txt diff --git a/k8s/helm/sql-data/templates/_helpers.tpl b/deploy/k8s/helm/sql-data/templates/_helpers.tpl similarity index 100% rename from k8s/helm/sql-data/templates/_helpers.tpl rename to deploy/k8s/helm/sql-data/templates/_helpers.tpl diff --git a/k8s/helm/sql-data/templates/_names.tpl b/deploy/k8s/helm/sql-data/templates/_names.tpl similarity index 100% rename from k8s/helm/sql-data/templates/_names.tpl rename to deploy/k8s/helm/sql-data/templates/_names.tpl diff --git a/k8s/helm/sql-data/templates/deployment.yaml b/deploy/k8s/helm/sql-data/templates/deployment.yaml similarity index 100% rename from k8s/helm/sql-data/templates/deployment.yaml rename to deploy/k8s/helm/sql-data/templates/deployment.yaml diff --git a/k8s/helm/sql-data/templates/service.yaml b/deploy/k8s/helm/sql-data/templates/service.yaml similarity index 100% rename from k8s/helm/sql-data/templates/service.yaml rename to deploy/k8s/helm/sql-data/templates/service.yaml diff --git a/k8s/helm/sql-data/values.yaml b/deploy/k8s/helm/sql-data/values.yaml similarity index 100% rename from k8s/helm/sql-data/values.yaml rename to deploy/k8s/helm/sql-data/values.yaml diff --git a/k8s/helm/webhooks-api/.helmignore b/deploy/k8s/helm/webhooks-api/.helmignore similarity index 100% rename from k8s/helm/webhooks-api/.helmignore rename to deploy/k8s/helm/webhooks-api/.helmignore diff --git a/k8s/helm/webhooks-api/Chart.yaml b/deploy/k8s/helm/webhooks-api/Chart.yaml similarity index 100% rename from k8s/helm/webhooks-api/Chart.yaml rename to deploy/k8s/helm/webhooks-api/Chart.yaml diff --git a/k8s/helm/webhooks-api/templates/NOTES.txt b/deploy/k8s/helm/webhooks-api/templates/NOTES.txt similarity index 100% rename from k8s/helm/webhooks-api/templates/NOTES.txt rename to deploy/k8s/helm/webhooks-api/templates/NOTES.txt diff --git a/k8s/helm/webhooks-api/templates/_helpers.tpl b/deploy/k8s/helm/webhooks-api/templates/_helpers.tpl similarity index 100% rename from k8s/helm/webhooks-api/templates/_helpers.tpl rename to deploy/k8s/helm/webhooks-api/templates/_helpers.tpl diff --git a/k8s/helm/webhooks-api/templates/_names.tpl b/deploy/k8s/helm/webhooks-api/templates/_names.tpl similarity index 100% rename from k8s/helm/webhooks-api/templates/_names.tpl rename to deploy/k8s/helm/webhooks-api/templates/_names.tpl diff --git a/k8s/helm/webhooks-api/templates/configmap.yaml b/deploy/k8s/helm/webhooks-api/templates/configmap.yaml similarity index 100% rename from k8s/helm/webhooks-api/templates/configmap.yaml rename to deploy/k8s/helm/webhooks-api/templates/configmap.yaml diff --git a/k8s/helm/webhooks-api/templates/deployment.yaml b/deploy/k8s/helm/webhooks-api/templates/deployment.yaml similarity index 100% rename from k8s/helm/webhooks-api/templates/deployment.yaml rename to deploy/k8s/helm/webhooks-api/templates/deployment.yaml diff --git a/k8s/helm/webhooks-api/templates/ingress.yaml b/deploy/k8s/helm/webhooks-api/templates/ingress.yaml similarity index 100% rename from k8s/helm/webhooks-api/templates/ingress.yaml rename to deploy/k8s/helm/webhooks-api/templates/ingress.yaml diff --git a/k8s/helm/webhooks-api/templates/service.yaml b/deploy/k8s/helm/webhooks-api/templates/service.yaml similarity index 100% rename from k8s/helm/webhooks-api/templates/service.yaml rename to deploy/k8s/helm/webhooks-api/templates/service.yaml diff --git a/k8s/helm/webhooks-api/values.yaml b/deploy/k8s/helm/webhooks-api/values.yaml similarity index 100% rename from k8s/helm/webhooks-api/values.yaml rename to deploy/k8s/helm/webhooks-api/values.yaml diff --git a/k8s/helm/webhooks-web/.helmignore b/deploy/k8s/helm/webhooks-web/.helmignore similarity index 100% rename from k8s/helm/webhooks-web/.helmignore rename to deploy/k8s/helm/webhooks-web/.helmignore diff --git a/k8s/helm/webhooks-web/Chart.yaml b/deploy/k8s/helm/webhooks-web/Chart.yaml similarity index 100% rename from k8s/helm/webhooks-web/Chart.yaml rename to deploy/k8s/helm/webhooks-web/Chart.yaml diff --git a/k8s/helm/webhooks-web/templates/NOTES.txt b/deploy/k8s/helm/webhooks-web/templates/NOTES.txt similarity index 100% rename from k8s/helm/webhooks-web/templates/NOTES.txt rename to deploy/k8s/helm/webhooks-web/templates/NOTES.txt diff --git a/k8s/helm/webhooks-web/templates/_helpers.tpl b/deploy/k8s/helm/webhooks-web/templates/_helpers.tpl similarity index 100% rename from k8s/helm/webhooks-web/templates/_helpers.tpl rename to deploy/k8s/helm/webhooks-web/templates/_helpers.tpl diff --git a/k8s/helm/webhooks-web/templates/_names.tpl b/deploy/k8s/helm/webhooks-web/templates/_names.tpl similarity index 100% rename from k8s/helm/webhooks-web/templates/_names.tpl rename to deploy/k8s/helm/webhooks-web/templates/_names.tpl diff --git a/k8s/helm/webhooks-web/templates/configmap.yaml b/deploy/k8s/helm/webhooks-web/templates/configmap.yaml similarity index 100% rename from k8s/helm/webhooks-web/templates/configmap.yaml rename to deploy/k8s/helm/webhooks-web/templates/configmap.yaml diff --git a/k8s/helm/webhooks-web/templates/deployment.yaml b/deploy/k8s/helm/webhooks-web/templates/deployment.yaml similarity index 100% rename from k8s/helm/webhooks-web/templates/deployment.yaml rename to deploy/k8s/helm/webhooks-web/templates/deployment.yaml diff --git a/k8s/helm/webhooks-web/templates/ingress.yaml b/deploy/k8s/helm/webhooks-web/templates/ingress.yaml similarity index 100% rename from k8s/helm/webhooks-web/templates/ingress.yaml rename to deploy/k8s/helm/webhooks-web/templates/ingress.yaml diff --git a/k8s/helm/webhooks-web/templates/service.yaml b/deploy/k8s/helm/webhooks-web/templates/service.yaml similarity index 100% rename from k8s/helm/webhooks-web/templates/service.yaml rename to deploy/k8s/helm/webhooks-web/templates/service.yaml diff --git a/k8s/helm/webhooks-web/values.yaml b/deploy/k8s/helm/webhooks-web/values.yaml similarity index 100% rename from k8s/helm/webhooks-web/values.yaml rename to deploy/k8s/helm/webhooks-web/values.yaml diff --git a/k8s/helm/webmvc/.helmignore b/deploy/k8s/helm/webmvc/.helmignore similarity index 100% rename from k8s/helm/webmvc/.helmignore rename to deploy/k8s/helm/webmvc/.helmignore diff --git a/k8s/helm/webmvc/Chart.yaml b/deploy/k8s/helm/webmvc/Chart.yaml similarity index 100% rename from k8s/helm/webmvc/Chart.yaml rename to deploy/k8s/helm/webmvc/Chart.yaml diff --git a/k8s/helm/webmvc/templates/NOTES.txt b/deploy/k8s/helm/webmvc/templates/NOTES.txt similarity index 100% rename from k8s/helm/webmvc/templates/NOTES.txt rename to deploy/k8s/helm/webmvc/templates/NOTES.txt diff --git a/k8s/helm/webmvc/templates/_helpers.tpl b/deploy/k8s/helm/webmvc/templates/_helpers.tpl similarity index 100% rename from k8s/helm/webmvc/templates/_helpers.tpl rename to deploy/k8s/helm/webmvc/templates/_helpers.tpl diff --git a/k8s/helm/webmvc/templates/_names.tpl b/deploy/k8s/helm/webmvc/templates/_names.tpl similarity index 100% rename from k8s/helm/webmvc/templates/_names.tpl rename to deploy/k8s/helm/webmvc/templates/_names.tpl diff --git a/k8s/helm/webmvc/templates/configmap.yaml b/deploy/k8s/helm/webmvc/templates/configmap.yaml similarity index 100% rename from k8s/helm/webmvc/templates/configmap.yaml rename to deploy/k8s/helm/webmvc/templates/configmap.yaml diff --git a/k8s/helm/webmvc/templates/deployment.yaml b/deploy/k8s/helm/webmvc/templates/deployment.yaml similarity index 100% rename from k8s/helm/webmvc/templates/deployment.yaml rename to deploy/k8s/helm/webmvc/templates/deployment.yaml diff --git a/k8s/helm/webmvc/templates/ingress-dockerk8s.yaml b/deploy/k8s/helm/webmvc/templates/ingress-dockerk8s.yaml similarity index 100% rename from k8s/helm/webmvc/templates/ingress-dockerk8s.yaml rename to deploy/k8s/helm/webmvc/templates/ingress-dockerk8s.yaml diff --git a/k8s/helm/webmvc/templates/ingress.yaml b/deploy/k8s/helm/webmvc/templates/ingress.yaml similarity index 100% rename from k8s/helm/webmvc/templates/ingress.yaml rename to deploy/k8s/helm/webmvc/templates/ingress.yaml diff --git a/k8s/helm/webmvc/templates/service.yaml b/deploy/k8s/helm/webmvc/templates/service.yaml similarity index 100% rename from k8s/helm/webmvc/templates/service.yaml rename to deploy/k8s/helm/webmvc/templates/service.yaml diff --git a/k8s/helm/webmvc/values.yaml b/deploy/k8s/helm/webmvc/values.yaml similarity index 100% rename from k8s/helm/webmvc/values.yaml rename to deploy/k8s/helm/webmvc/values.yaml diff --git a/k8s/helm/webshoppingagg/.helmignore b/deploy/k8s/helm/webshoppingagg/.helmignore similarity index 100% rename from k8s/helm/webshoppingagg/.helmignore rename to deploy/k8s/helm/webshoppingagg/.helmignore diff --git a/k8s/helm/webshoppingagg/Chart.yaml b/deploy/k8s/helm/webshoppingagg/Chart.yaml similarity index 100% rename from k8s/helm/webshoppingagg/Chart.yaml rename to deploy/k8s/helm/webshoppingagg/Chart.yaml diff --git a/k8s/helm/webshoppingagg/templates/NOTES.txt b/deploy/k8s/helm/webshoppingagg/templates/NOTES.txt similarity index 100% rename from k8s/helm/webshoppingagg/templates/NOTES.txt rename to deploy/k8s/helm/webshoppingagg/templates/NOTES.txt diff --git a/k8s/helm/webshoppingagg/templates/_helpers.tpl b/deploy/k8s/helm/webshoppingagg/templates/_helpers.tpl similarity index 100% rename from k8s/helm/webshoppingagg/templates/_helpers.tpl rename to deploy/k8s/helm/webshoppingagg/templates/_helpers.tpl diff --git a/k8s/helm/webshoppingagg/templates/_names.tpl b/deploy/k8s/helm/webshoppingagg/templates/_names.tpl similarity index 100% rename from k8s/helm/webshoppingagg/templates/_names.tpl rename to deploy/k8s/helm/webshoppingagg/templates/_names.tpl diff --git a/k8s/helm/webshoppingagg/templates/configmap.yaml b/deploy/k8s/helm/webshoppingagg/templates/configmap.yaml similarity index 100% rename from k8s/helm/webshoppingagg/templates/configmap.yaml rename to deploy/k8s/helm/webshoppingagg/templates/configmap.yaml diff --git a/k8s/helm/webshoppingagg/templates/deployment.yaml b/deploy/k8s/helm/webshoppingagg/templates/deployment.yaml similarity index 100% rename from k8s/helm/webshoppingagg/templates/deployment.yaml rename to deploy/k8s/helm/webshoppingagg/templates/deployment.yaml diff --git a/k8s/helm/webshoppingagg/templates/ingress.yaml b/deploy/k8s/helm/webshoppingagg/templates/ingress.yaml similarity index 100% rename from k8s/helm/webshoppingagg/templates/ingress.yaml rename to deploy/k8s/helm/webshoppingagg/templates/ingress.yaml diff --git a/k8s/helm/webshoppingagg/templates/service.yaml b/deploy/k8s/helm/webshoppingagg/templates/service.yaml similarity index 100% rename from k8s/helm/webshoppingagg/templates/service.yaml rename to deploy/k8s/helm/webshoppingagg/templates/service.yaml diff --git a/k8s/helm/webshoppingagg/values.yaml b/deploy/k8s/helm/webshoppingagg/values.yaml similarity index 100% rename from k8s/helm/webshoppingagg/values.yaml rename to deploy/k8s/helm/webshoppingagg/values.yaml diff --git a/k8s/helm/webspa/.helmignore b/deploy/k8s/helm/webspa/.helmignore similarity index 100% rename from k8s/helm/webspa/.helmignore rename to deploy/k8s/helm/webspa/.helmignore diff --git a/k8s/helm/webspa/Chart.yaml b/deploy/k8s/helm/webspa/Chart.yaml similarity index 100% rename from k8s/helm/webspa/Chart.yaml rename to deploy/k8s/helm/webspa/Chart.yaml diff --git a/k8s/helm/webspa/templates/NOTES.txt b/deploy/k8s/helm/webspa/templates/NOTES.txt similarity index 100% rename from k8s/helm/webspa/templates/NOTES.txt rename to deploy/k8s/helm/webspa/templates/NOTES.txt diff --git a/k8s/helm/webspa/templates/_helpers.tpl b/deploy/k8s/helm/webspa/templates/_helpers.tpl similarity index 100% rename from k8s/helm/webspa/templates/_helpers.tpl rename to deploy/k8s/helm/webspa/templates/_helpers.tpl diff --git a/k8s/helm/webspa/templates/_names.tpl b/deploy/k8s/helm/webspa/templates/_names.tpl similarity index 100% rename from k8s/helm/webspa/templates/_names.tpl rename to deploy/k8s/helm/webspa/templates/_names.tpl diff --git a/k8s/helm/webspa/templates/configmap.yaml b/deploy/k8s/helm/webspa/templates/configmap.yaml similarity index 100% rename from k8s/helm/webspa/templates/configmap.yaml rename to deploy/k8s/helm/webspa/templates/configmap.yaml diff --git a/k8s/helm/webspa/templates/deployment.yaml b/deploy/k8s/helm/webspa/templates/deployment.yaml similarity index 100% rename from k8s/helm/webspa/templates/deployment.yaml rename to deploy/k8s/helm/webspa/templates/deployment.yaml diff --git a/k8s/helm/webspa/templates/ingress.yaml b/deploy/k8s/helm/webspa/templates/ingress.yaml similarity index 100% rename from k8s/helm/webspa/templates/ingress.yaml rename to deploy/k8s/helm/webspa/templates/ingress.yaml diff --git a/k8s/helm/webspa/templates/service.yaml b/deploy/k8s/helm/webspa/templates/service.yaml similarity index 100% rename from k8s/helm/webspa/templates/service.yaml rename to deploy/k8s/helm/webspa/templates/service.yaml diff --git a/k8s/helm/webspa/values.yaml b/deploy/k8s/helm/webspa/values.yaml similarity index 100% rename from k8s/helm/webspa/values.yaml rename to deploy/k8s/helm/webspa/values.yaml diff --git a/k8s/helm/webstatus/.helmignore b/deploy/k8s/helm/webstatus/.helmignore similarity index 100% rename from k8s/helm/webstatus/.helmignore rename to deploy/k8s/helm/webstatus/.helmignore diff --git a/k8s/helm/webstatus/Chart.yaml b/deploy/k8s/helm/webstatus/Chart.yaml similarity index 100% rename from k8s/helm/webstatus/Chart.yaml rename to deploy/k8s/helm/webstatus/Chart.yaml diff --git a/k8s/helm/webstatus/templates/NOTES.txt b/deploy/k8s/helm/webstatus/templates/NOTES.txt similarity index 100% rename from k8s/helm/webstatus/templates/NOTES.txt rename to deploy/k8s/helm/webstatus/templates/NOTES.txt diff --git a/k8s/helm/webstatus/templates/_helpers.tpl b/deploy/k8s/helm/webstatus/templates/_helpers.tpl similarity index 100% rename from k8s/helm/webstatus/templates/_helpers.tpl rename to deploy/k8s/helm/webstatus/templates/_helpers.tpl diff --git a/k8s/helm/webstatus/templates/_names.tpl b/deploy/k8s/helm/webstatus/templates/_names.tpl similarity index 100% rename from k8s/helm/webstatus/templates/_names.tpl rename to deploy/k8s/helm/webstatus/templates/_names.tpl diff --git a/k8s/helm/webstatus/templates/configmap.yaml b/deploy/k8s/helm/webstatus/templates/configmap.yaml similarity index 100% rename from k8s/helm/webstatus/templates/configmap.yaml rename to deploy/k8s/helm/webstatus/templates/configmap.yaml diff --git a/k8s/helm/webstatus/templates/deployment.yaml b/deploy/k8s/helm/webstatus/templates/deployment.yaml similarity index 100% rename from k8s/helm/webstatus/templates/deployment.yaml rename to deploy/k8s/helm/webstatus/templates/deployment.yaml diff --git a/k8s/helm/webstatus/templates/ingress.yaml b/deploy/k8s/helm/webstatus/templates/ingress.yaml similarity index 100% rename from k8s/helm/webstatus/templates/ingress.yaml rename to deploy/k8s/helm/webstatus/templates/ingress.yaml diff --git a/k8s/helm/webstatus/templates/service.yaml b/deploy/k8s/helm/webstatus/templates/service.yaml similarity index 100% rename from k8s/helm/webstatus/templates/service.yaml rename to deploy/k8s/helm/webstatus/templates/service.yaml diff --git a/k8s/helm/webstatus/values.yaml b/deploy/k8s/helm/webstatus/values.yaml similarity index 100% rename from k8s/helm/webstatus/values.yaml rename to deploy/k8s/helm/webstatus/values.yaml diff --git a/k8s/img/blob_creation.png b/deploy/k8s/img/blob_creation.png similarity index 100% rename from k8s/img/blob_creation.png rename to deploy/k8s/img/blob_creation.png diff --git a/k8s/img/deploy_script_task.png b/deploy/k8s/img/deploy_script_task.png similarity index 100% rename from k8s/img/deploy_script_task.png rename to deploy/k8s/img/deploy_script_task.png diff --git a/k8s/img/get_kubectlbin_task.png b/deploy/k8s/img/get_kubectlbin_task.png similarity index 100% rename from k8s/img/get_kubectlbin_task.png rename to deploy/k8s/img/get_kubectlbin_task.png diff --git a/k8s/img/get_kubectlconfig_task.png b/deploy/k8s/img/get_kubectlconfig_task.png similarity index 100% rename from k8s/img/get_kubectlconfig_task.png rename to deploy/k8s/img/get_kubectlconfig_task.png diff --git a/k8s/internalurls.yaml b/deploy/k8s/internalurls.yaml similarity index 100% rename from k8s/internalurls.yaml rename to deploy/k8s/internalurls.yaml diff --git a/k8s/linkerd/basket-api-sp.yaml b/deploy/k8s/linkerd/basket-api-sp.yaml similarity index 100% rename from k8s/linkerd/basket-api-sp.yaml rename to deploy/k8s/linkerd/basket-api-sp.yaml diff --git a/k8s/linkerd/catalog-api-sp.yaml b/deploy/k8s/linkerd/catalog-api-sp.yaml similarity index 100% rename from k8s/linkerd/catalog-api-sp.yaml rename to deploy/k8s/linkerd/catalog-api-sp.yaml diff --git a/k8s/nginx-ingress/cloud-generic.yaml b/deploy/k8s/nginx-ingress/cloud-generic.yaml similarity index 100% rename from k8s/nginx-ingress/cloud-generic.yaml rename to deploy/k8s/nginx-ingress/cloud-generic.yaml diff --git a/k8s/nginx-ingress/cm.yaml b/deploy/k8s/nginx-ingress/cm.yaml similarity index 100% rename from k8s/nginx-ingress/cm.yaml rename to deploy/k8s/nginx-ingress/cm.yaml diff --git a/k8s/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml b/deploy/k8s/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml similarity index 100% rename from k8s/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml rename to deploy/k8s/nginx-ingress/local-dockerk8s/identityapi-cm-fix.yaml diff --git a/k8s/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml b/deploy/k8s/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml similarity index 100% rename from k8s/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml rename to deploy/k8s/nginx-ingress/local-dockerk8s/mvc-cm-fix.yaml diff --git a/k8s/nginx-ingress/local-dockerk8s/mvc-fix.yaml b/deploy/k8s/nginx-ingress/local-dockerk8s/mvc-fix.yaml similarity index 100% rename from k8s/nginx-ingress/local-dockerk8s/mvc-fix.yaml rename to deploy/k8s/nginx-ingress/local-dockerk8s/mvc-fix.yaml diff --git a/k8s/nginx-ingress/mandatory-istio.yaml b/deploy/k8s/nginx-ingress/mandatory-istio.yaml similarity index 100% rename from k8s/nginx-ingress/mandatory-istio.yaml rename to deploy/k8s/nginx-ingress/mandatory-istio.yaml diff --git a/k8s/nginx-ingress/mandatory.yaml b/deploy/k8s/nginx-ingress/mandatory.yaml similarity index 100% rename from k8s/nginx-ingress/mandatory.yaml rename to deploy/k8s/nginx-ingress/mandatory.yaml diff --git a/k8s/nginx-ingress/service-nodeport.yaml b/deploy/k8s/nginx-ingress/service-nodeport.yaml similarity index 100% rename from k8s/nginx-ingress/service-nodeport.yaml rename to deploy/k8s/nginx-ingress/service-nodeport.yaml diff --git a/k8s/nodeports/rabbitmq-admin.yaml b/deploy/k8s/nodeports/rabbitmq-admin.yaml similarity index 100% rename from k8s/nodeports/rabbitmq-admin.yaml rename to deploy/k8s/nodeports/rabbitmq-admin.yaml diff --git a/k8s/nodeports/sql-service.yaml b/deploy/k8s/nodeports/sql-service.yaml similarity index 100% rename from k8s/nodeports/sql-service.yaml rename to deploy/k8s/nodeports/sql-service.yaml diff --git a/k8s/readme.md b/deploy/k8s/readme.md similarity index 100% rename from k8s/readme.md rename to deploy/k8s/readme.md diff --git a/k8s/.kube/schema/v1.6.6/api/v1/schema.json b/k8s/.kube/schema/v1.6.6/api/v1/schema.json deleted file mode 100644 index 1fb315f47..000000000 --- a/k8s/.kube/schema/v1.6.6/api/v1/schema.json +++ /dev/null @@ -1,20838 +0,0 @@ -{ - "swaggerVersion": "1.2", - "apiVersion": "v1", - "basePath": "https://10.240.255.15:443", - "resourcePath": "/api/v1", - "info": { - "title": "", - "description": "" - }, - "apis": [ - { - "path": "/api/v1/namespaces/{namespace}/bindings", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Binding", - "method": "POST", - "summary": "create a Binding", - "nickname": "createNamespacedBinding", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Binding", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Binding" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/componentstatuses", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ComponentStatusList", - "method": "GET", - "summary": "list objects of kind ComponentStatus", - "nickname": "listComponentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ComponentStatusList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/componentstatuses/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ComponentStatus", - "method": "GET", - "summary": "read the specified ComponentStatus", - "nickname": "readComponentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ComponentStatus", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ComponentStatus" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ConfigMapList", - "method": "GET", - "summary": "list or watch objects of kind ConfigMap", - "nickname": "listNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMapList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ConfigMap", - "method": "POST", - "summary": "create a ConfigMap", - "nickname": "createNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ConfigMap", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ConfigMap", - "nickname": "deletecollectionNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ConfigMap", - "nickname": "watchNamespacedConfigMapList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/configmaps/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ConfigMap", - "method": "GET", - "summary": "read the specified ConfigMap", - "nickname": "readNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ConfigMap", - "method": "PUT", - "summary": "replace the specified ConfigMap", - "nickname": "replaceNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ConfigMap", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ConfigMap", - "method": "PATCH", - "summary": "partially update the specified ConfigMap", - "nickname": "patchNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ConfigMap", - "nickname": "deleteNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/configmaps/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ConfigMap", - "nickname": "watchNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ConfigMapList", - "method": "GET", - "summary": "list or watch objects of kind ConfigMap", - "nickname": "listConfigMapForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMapList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ConfigMap", - "nickname": "watchConfigMapListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EndpointsList", - "method": "GET", - "summary": "list or watch objects of kind Endpoints", - "nickname": "listNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EndpointsList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Endpoints", - "method": "POST", - "summary": "create Endpoints", - "nickname": "createNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Endpoints", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Endpoints", - "nickname": "deletecollectionNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Endpoints", - "nickname": "watchNamespacedEndpointsList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/endpoints/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Endpoints", - "method": "GET", - "summary": "read the specified Endpoints", - "nickname": "readNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Endpoints", - "method": "PUT", - "summary": "replace the specified Endpoints", - "nickname": "replaceNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Endpoints", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Endpoints", - "method": "PATCH", - "summary": "partially update the specified Endpoints", - "nickname": "patchNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete Endpoints", - "nickname": "deleteNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/endpoints/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Endpoints", - "nickname": "watchNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EndpointsList", - "method": "GET", - "summary": "list or watch objects of kind Endpoints", - "nickname": "listEndpointsForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EndpointsList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Endpoints", - "nickname": "watchEndpointsListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EventList", - "method": "GET", - "summary": "list or watch objects of kind Event", - "nickname": "listNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EventList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Event", - "method": "POST", - "summary": "create an Event", - "nickname": "createNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Event", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Event", - "nickname": "deletecollectionNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Event", - "nickname": "watchNamespacedEventList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/events/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Event", - "method": "GET", - "summary": "read the specified Event", - "nickname": "readNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Event", - "method": "PUT", - "summary": "replace the specified Event", - "nickname": "replaceNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Event", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Event", - "method": "PATCH", - "summary": "partially update the specified Event", - "nickname": "patchNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete an Event", - "nickname": "deleteNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/events/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Event", - "nickname": "watchNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EventList", - "method": "GET", - "summary": "list or watch objects of kind Event", - "nickname": "listEventForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EventList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Event", - "nickname": "watchEventListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.LimitRangeList", - "method": "GET", - "summary": "list or watch objects of kind LimitRange", - "nickname": "listNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRangeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.LimitRange", - "method": "POST", - "summary": "create a LimitRange", - "nickname": "createNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.LimitRange", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of LimitRange", - "nickname": "deletecollectionNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of LimitRange", - "nickname": "watchNamespacedLimitRangeList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/limitranges/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.LimitRange", - "method": "GET", - "summary": "read the specified LimitRange", - "nickname": "readNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.LimitRange", - "method": "PUT", - "summary": "replace the specified LimitRange", - "nickname": "replaceNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.LimitRange", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.LimitRange", - "method": "PATCH", - "summary": "partially update the specified LimitRange", - "nickname": "patchNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a LimitRange", - "nickname": "deleteNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/limitranges/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind LimitRange", - "nickname": "watchNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.LimitRangeList", - "method": "GET", - "summary": "list or watch objects of kind LimitRange", - "nickname": "listLimitRangeForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRangeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of LimitRange", - "nickname": "watchLimitRangeListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.NamespaceList", - "method": "GET", - "summary": "list or watch objects of kind Namespace", - "nickname": "listNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.NamespaceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "POST", - "summary": "create a Namespace", - "nickname": "createNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Namespace", - "nickname": "watchNamespaceList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Namespace", - "method": "GET", - "summary": "read the specified Namespace", - "nickname": "readNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PUT", - "summary": "replace the specified Namespace", - "nickname": "replaceNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PATCH", - "summary": "partially update the specified Namespace", - "nickname": "patchNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Namespace", - "nickname": "deleteNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Namespace", - "nickname": "watchNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{name}/finalize", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Namespace", - "method": "PUT", - "summary": "replace finalize of the specified Namespace", - "nickname": "replaceNamespaceFinalize", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Namespace", - "method": "GET", - "summary": "read status of the specified Namespace", - "nickname": "readNamespaceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PUT", - "summary": "replace status of the specified Namespace", - "nickname": "replaceNamespaceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PATCH", - "summary": "partially update status of the specified Namespace", - "nickname": "patchNamespaceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/nodes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.NodeList", - "method": "GET", - "summary": "list or watch objects of kind Node", - "nickname": "listNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.NodeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "POST", - "summary": "create a Node", - "nickname": "createNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Node", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Node", - "nickname": "deletecollectionNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/nodes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Node", - "nickname": "watchNodeList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Node", - "method": "GET", - "summary": "read the specified Node", - "nickname": "readNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PUT", - "summary": "replace the specified Node", - "nickname": "replaceNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Node", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PATCH", - "summary": "partially update the specified Node", - "nickname": "patchNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Node", - "nickname": "deleteNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/nodes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Node", - "nickname": "watchNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/nodes/{name}/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Node", - "nickname": "proxyGETNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Node", - "nickname": "proxyPUTNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Node", - "nickname": "proxyPOSTNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Node", - "nickname": "proxyPATCHNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Node", - "nickname": "proxyDELETENodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Node", - "nickname": "proxyHEADNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Node", - "nickname": "proxyOPTIONSNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/nodes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Node", - "nickname": "proxyGETNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Node", - "nickname": "proxyPUTNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Node", - "nickname": "proxyPOSTNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Node", - "nickname": "proxyPATCHNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Node", - "nickname": "proxyDELETENode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Node", - "nickname": "proxyHEADNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Node", - "nickname": "proxyOPTIONSNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}/proxy", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Node", - "nickname": "connectGetNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Node", - "nickname": "connectPostNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Node", - "nickname": "connectPutNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Node", - "nickname": "connectDeleteNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Node", - "nickname": "connectHeadNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Node", - "nickname": "connectOptionsNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}/proxy/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Node", - "nickname": "connectGetNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Node", - "nickname": "connectPostNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Node", - "nickname": "connectPutNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Node", - "nickname": "connectDeleteNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Node", - "nickname": "connectHeadNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Node", - "nickname": "connectOptionsNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Node", - "method": "GET", - "summary": "read status of the specified Node", - "nickname": "readNodeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PUT", - "summary": "replace status of the specified Node", - "nickname": "replaceNodeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Node", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PATCH", - "summary": "partially update status of the specified Node", - "nickname": "patchNodeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaimList", - "method": "GET", - "summary": "list or watch objects of kind PersistentVolumeClaim", - "nickname": "listNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaimList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "POST", - "summary": "create a PersistentVolumeClaim", - "nickname": "createNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolumeClaim", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PersistentVolumeClaim", - "nickname": "deletecollectionNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PersistentVolumeClaim", - "nickname": "watchNamespacedPersistentVolumeClaimList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaim", - "method": "GET", - "summary": "read the specified PersistentVolumeClaim", - "nickname": "readNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PUT", - "summary": "replace the specified PersistentVolumeClaim", - "nickname": "replaceNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolumeClaim", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PATCH", - "summary": "partially update the specified PersistentVolumeClaim", - "nickname": "patchNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PersistentVolumeClaim", - "nickname": "deleteNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PersistentVolumeClaim", - "nickname": "watchNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaimList", - "method": "GET", - "summary": "list or watch objects of kind PersistentVolumeClaim", - "nickname": "listPersistentVolumeClaimForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaimList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PersistentVolumeClaim", - "nickname": "watchPersistentVolumeClaimListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaim", - "method": "GET", - "summary": "read status of the specified PersistentVolumeClaim", - "nickname": "readNamespacedPersistentVolumeClaimStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PUT", - "summary": "replace status of the specified PersistentVolumeClaim", - "nickname": "replaceNamespacedPersistentVolumeClaimStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolumeClaim", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PATCH", - "summary": "partially update status of the specified PersistentVolumeClaim", - "nickname": "patchNamespacedPersistentVolumeClaimStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeList", - "method": "GET", - "summary": "list or watch objects of kind PersistentVolume", - "nickname": "listPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "POST", - "summary": "create a PersistentVolume", - "nickname": "createPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolume", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PersistentVolume", - "nickname": "deletecollectionPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/persistentvolumes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PersistentVolume", - "nickname": "watchPersistentVolumeList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolume", - "method": "GET", - "summary": "read the specified PersistentVolume", - "nickname": "readPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PUT", - "summary": "replace the specified PersistentVolume", - "nickname": "replacePersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolume", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PATCH", - "summary": "partially update the specified PersistentVolume", - "nickname": "patchPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PersistentVolume", - "nickname": "deletePersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/persistentvolumes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PersistentVolume", - "nickname": "watchPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumes/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolume", - "method": "GET", - "summary": "read status of the specified PersistentVolume", - "nickname": "readPersistentVolumeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PUT", - "summary": "replace status of the specified PersistentVolume", - "nickname": "replacePersistentVolumeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolume", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PATCH", - "summary": "partially update status of the specified PersistentVolume", - "nickname": "patchPersistentVolumeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodList", - "method": "GET", - "summary": "list or watch objects of kind Pod", - "nickname": "listNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "POST", - "summary": "create a Pod", - "nickname": "createNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Pod", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Pod", - "nickname": "deletecollectionNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Pod", - "nickname": "watchNamespacedPodList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Pod", - "method": "GET", - "summary": "read the specified Pod", - "nickname": "readNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PUT", - "summary": "replace the specified Pod", - "nickname": "replaceNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Pod", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PATCH", - "summary": "partially update the specified Pod", - "nickname": "patchNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Pod", - "nickname": "deleteNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/pods/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Pod", - "nickname": "watchNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/pods/{name}/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Pod", - "nickname": "proxyGETNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Pod", - "nickname": "proxyPUTNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Pod", - "nickname": "proxyPOSTNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Pod", - "nickname": "proxyPATCHNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Pod", - "nickname": "proxyDELETENamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Pod", - "nickname": "proxyHEADNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Pod", - "nickname": "proxyOPTIONSNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/pods/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Pod", - "nickname": "proxyGETNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Pod", - "nickname": "proxyPUTNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Pod", - "nickname": "proxyPOSTNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Pod", - "nickname": "proxyPATCHNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Pod", - "nickname": "proxyDELETENamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Pod", - "nickname": "proxyHEADNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Pod", - "nickname": "proxyOPTIONSNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodList", - "method": "GET", - "summary": "list or watch objects of kind Pod", - "nickname": "listPodForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Pod", - "nickname": "watchPodListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/attach", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to attach of Pod", - "nickname": "connectGetNamespacedPodAttach", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to attach of Pod", - "nickname": "connectPostNamespacedPodAttach", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/binding", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Binding", - "method": "POST", - "summary": "create binding of a Binding", - "nickname": "createNamespacedBindingBinding", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Binding", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Binding", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Binding" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/eviction", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1beta1.Eviction", - "method": "POST", - "summary": "create eviction of an Eviction", - "nickname": "createNamespacedEvictionEviction", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Eviction", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Eviction", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Eviction" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/exec", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to exec of Pod", - "nickname": "connectGetNamespacedPodExec", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Redirect the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Redirect the standard output stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Redirect the standard error stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "command", - "description": "Command is the remote command to execute. argv array. Not executed within a shell.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to exec of Pod", - "nickname": "connectPostNamespacedPodExec", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Redirect the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Redirect the standard output stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Redirect the standard error stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "command", - "description": "Command is the remote command to execute. argv array. Not executed within a shell.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/log", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "read log of the specified Pod", - "nickname": "readNamespacedPodLog", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "The container for which to stream logs. Defaults to only container if there is one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "follow", - "description": "Follow the log stream of the pod. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "previous", - "description": "Return previous terminated container logs. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "sinceSeconds", - "description": "A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "timestamps", - "description": "If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "tailLines", - "description": "If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "limitBytes", - "description": "If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "string" - } - ], - "produces": [ - "text/plain", - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/portforward", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to portforward of Pod", - "nickname": "connectGetNamespacedPodPortforward", - "parameters": [ - { - "type": "integer", - "paramType": "query", - "name": "ports", - "description": "List of ports to forward Required when using WebSockets", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to portforward of Pod", - "nickname": "connectPostNamespacedPodPortforward", - "parameters": [ - { - "type": "integer", - "paramType": "query", - "name": "ports", - "description": "List of ports to forward Required when using WebSockets", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/proxy", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Pod", - "nickname": "connectGetNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Pod", - "nickname": "connectPostNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Pod", - "nickname": "connectPutNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Pod", - "nickname": "connectDeleteNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Pod", - "nickname": "connectHeadNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Pod", - "nickname": "connectOptionsNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Pod", - "nickname": "connectGetNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Pod", - "nickname": "connectPostNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Pod", - "nickname": "connectPutNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Pod", - "nickname": "connectDeleteNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Pod", - "nickname": "connectHeadNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Pod", - "nickname": "connectOptionsNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Pod", - "method": "GET", - "summary": "read status of the specified Pod", - "nickname": "readNamespacedPodStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PUT", - "summary": "replace status of the specified Pod", - "nickname": "replaceNamespacedPodStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Pod", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PATCH", - "summary": "partially update status of the specified Pod", - "nickname": "patchNamespacedPodStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodTemplateList", - "method": "GET", - "summary": "list or watch objects of kind PodTemplate", - "nickname": "listNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplateList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PodTemplate", - "method": "POST", - "summary": "create a PodTemplate", - "nickname": "createNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PodTemplate", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PodTemplate", - "nickname": "deletecollectionNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PodTemplate", - "nickname": "watchNamespacedPodTemplateList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/podtemplates/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodTemplate", - "method": "GET", - "summary": "read the specified PodTemplate", - "nickname": "readNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PodTemplate", - "method": "PUT", - "summary": "replace the specified PodTemplate", - "nickname": "replaceNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PodTemplate", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PodTemplate", - "method": "PATCH", - "summary": "partially update the specified PodTemplate", - "nickname": "patchNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PodTemplate", - "nickname": "deleteNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/podtemplates/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PodTemplate", - "nickname": "watchNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodTemplateList", - "method": "GET", - "summary": "list or watch objects of kind PodTemplate", - "nickname": "listPodTemplateForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplateList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PodTemplate", - "nickname": "watchPodTemplateListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationControllerList", - "method": "GET", - "summary": "list or watch objects of kind ReplicationController", - "nickname": "listNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationControllerList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "POST", - "summary": "create a ReplicationController", - "nickname": "createNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ReplicationController", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ReplicationController", - "nickname": "deletecollectionNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicationController", - "nickname": "watchNamespacedReplicationControllerList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationController", - "method": "GET", - "summary": "read the specified ReplicationController", - "nickname": "readNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PUT", - "summary": "replace the specified ReplicationController", - "nickname": "replaceNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ReplicationController", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PATCH", - "summary": "partially update the specified ReplicationController", - "nickname": "patchNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ReplicationController", - "nickname": "deleteNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ReplicationController", - "nickname": "watchNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationControllerList", - "method": "GET", - "summary": "list or watch objects of kind ReplicationController", - "nickname": "listReplicationControllerForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationControllerList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicationController", - "nickname": "watchReplicationControllerListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationController", - "method": "GET", - "summary": "read status of the specified ReplicationController", - "nickname": "readNamespacedReplicationControllerStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PUT", - "summary": "replace status of the specified ReplicationController", - "nickname": "replaceNamespacedReplicationControllerStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ReplicationController", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PATCH", - "summary": "partially update status of the specified ReplicationController", - "nickname": "patchNamespacedReplicationControllerStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuotaList", - "method": "GET", - "summary": "list or watch objects of kind ResourceQuota", - "nickname": "listNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuotaList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "POST", - "summary": "create a ResourceQuota", - "nickname": "createNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ResourceQuota", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ResourceQuota", - "nickname": "deletecollectionNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ResourceQuota", - "nickname": "watchNamespacedResourceQuotaList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/resourcequotas/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuota", - "method": "GET", - "summary": "read the specified ResourceQuota", - "nickname": "readNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PUT", - "summary": "replace the specified ResourceQuota", - "nickname": "replaceNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ResourceQuota", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PATCH", - "summary": "partially update the specified ResourceQuota", - "nickname": "patchNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ResourceQuota", - "nickname": "deleteNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ResourceQuota", - "nickname": "watchNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuotaList", - "method": "GET", - "summary": "list or watch objects of kind ResourceQuota", - "nickname": "listResourceQuotaForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuotaList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ResourceQuota", - "nickname": "watchResourceQuotaListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/resourcequotas/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuota", - "method": "GET", - "summary": "read status of the specified ResourceQuota", - "nickname": "readNamespacedResourceQuotaStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PUT", - "summary": "replace status of the specified ResourceQuota", - "nickname": "replaceNamespacedResourceQuotaStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ResourceQuota", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PATCH", - "summary": "partially update status of the specified ResourceQuota", - "nickname": "patchNamespacedResourceQuotaStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.SecretList", - "method": "GET", - "summary": "list or watch objects of kind Secret", - "nickname": "listNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.SecretList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Secret", - "method": "POST", - "summary": "create a Secret", - "nickname": "createNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Secret", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Secret", - "nickname": "deletecollectionNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Secret", - "nickname": "watchNamespacedSecretList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/secrets/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Secret", - "method": "GET", - "summary": "read the specified Secret", - "nickname": "readNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Secret", - "method": "PUT", - "summary": "replace the specified Secret", - "nickname": "replaceNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Secret", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Secret", - "method": "PATCH", - "summary": "partially update the specified Secret", - "nickname": "patchNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Secret", - "nickname": "deleteNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/secrets/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Secret", - "nickname": "watchNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.SecretList", - "method": "GET", - "summary": "list or watch objects of kind Secret", - "nickname": "listSecretForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.SecretList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Secret", - "nickname": "watchSecretListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceAccountList", - "method": "GET", - "summary": "list or watch objects of kind ServiceAccount", - "nickname": "listNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccountList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ServiceAccount", - "method": "POST", - "summary": "create a ServiceAccount", - "nickname": "createNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ServiceAccount", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ServiceAccount", - "nickname": "deletecollectionNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ServiceAccount", - "nickname": "watchNamespacedServiceAccountList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/serviceaccounts/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceAccount", - "method": "GET", - "summary": "read the specified ServiceAccount", - "nickname": "readNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ServiceAccount", - "method": "PUT", - "summary": "replace the specified ServiceAccount", - "nickname": "replaceNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ServiceAccount", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ServiceAccount", - "method": "PATCH", - "summary": "partially update the specified ServiceAccount", - "nickname": "patchNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ServiceAccount", - "nickname": "deleteNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ServiceAccount", - "nickname": "watchNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceAccountList", - "method": "GET", - "summary": "list or watch objects of kind ServiceAccount", - "nickname": "listServiceAccountForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccountList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ServiceAccount", - "nickname": "watchServiceAccountListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceList", - "method": "GET", - "summary": "list or watch objects of kind Service", - "nickname": "listNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "POST", - "summary": "create a Service", - "nickname": "createNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Service", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Service", - "nickname": "watchNamespacedServiceList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Service", - "method": "GET", - "summary": "read the specified Service", - "nickname": "readNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PUT", - "summary": "replace the specified Service", - "nickname": "replaceNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Service", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PATCH", - "summary": "partially update the specified Service", - "nickname": "patchNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Service", - "nickname": "deleteNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/services/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Service", - "nickname": "watchNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/services/{name}/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Service", - "nickname": "proxyGETNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Service", - "nickname": "proxyPUTNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Service", - "nickname": "proxyPOSTNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Service", - "nickname": "proxyPATCHNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Service", - "nickname": "proxyDELETENamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Service", - "nickname": "proxyHEADNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Service", - "nickname": "proxyOPTIONSNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/services/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Service", - "nickname": "proxyGETNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Service", - "nickname": "proxyPUTNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Service", - "nickname": "proxyPOSTNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Service", - "nickname": "proxyPATCHNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Service", - "nickname": "proxyDELETENamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Service", - "nickname": "proxyHEADNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Service", - "nickname": "proxyOPTIONSNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceList", - "method": "GET", - "summary": "list or watch objects of kind Service", - "nickname": "listServiceForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Service", - "nickname": "watchServiceListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}/proxy", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Service", - "nickname": "connectGetNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Service", - "nickname": "connectPostNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Service", - "nickname": "connectPutNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Service", - "nickname": "connectDeleteNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Service", - "nickname": "connectHeadNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Service", - "nickname": "connectOptionsNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Service", - "nickname": "connectGetNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Service", - "nickname": "connectPostNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Service", - "nickname": "connectPutNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Service", - "nickname": "connectDeleteNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Service", - "nickname": "connectHeadNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Service", - "nickname": "connectOptionsNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Service", - "method": "GET", - "summary": "read status of the specified Service", - "nickname": "readNamespacedServiceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PUT", - "summary": "replace status of the specified Service", - "nickname": "replaceNamespacedServiceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Service", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PATCH", - "summary": "partially update status of the specified Service", - "nickname": "patchNamespacedServiceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.APIResourceList", - "method": "GET", - "summary": "get available resources", - "nickname": "getAPIResources", - "parameters": [], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ] - } - ] - } - ], - "models": { - "v1.Binding": { - "id": "v1.Binding", - "description": "Binding ties one object to another. For example, a pod is bound to a node by a scheduler.", - "required": [ - "target" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "target": { - "$ref": "v1.ObjectReference", - "description": "The target object that you want to bind to the standard object." - } - } - }, - "v1.ObjectMeta": { - "id": "v1.ObjectMeta", - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "properties": { - "name": { - "type": "string", - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "generateName": { - "type": "string", - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency" - }, - "namespace": { - "type": "string", - "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces" - }, - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "uid": { - "type": "string", - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "resourceVersion": { - "type": "string", - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - }, - "generation": { - "type": "integer", - "format": "int64", - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only." - }, - "creationTimestamp": { - "type": "string", - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionTimestamp": { - "type": "string", - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only." - }, - "labels": { - "type": "object", - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels" - }, - "annotations": { - "type": "object", - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations" - }, - "ownerReferences": { - "type": "array", - "items": { - "$ref": "v1.OwnerReference" - }, - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller." - }, - "finalizers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed." - }, - "clusterName": { - "type": "string", - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request." - } - } - }, - "v1.OwnerReference": { - "id": "v1.OwnerReference", - "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "API version of the referent." - }, - "kind": { - "type": "string", - "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "uid": { - "type": "string", - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "controller": { - "type": "boolean", - "description": "If true, this reference points to the managing controller." - }, - "blockOwnerDeletion": { - "type": "boolean", - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned." - } - } - }, - "v1.ObjectReference": { - "id": "v1.ObjectReference", - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "properties": { - "kind": { - "type": "string", - "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "namespace": { - "type": "string", - "description": "Namespace of the referent. More info: http://kubernetes.io/docs/user-guide/namespaces" - }, - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "uid": { - "type": "string", - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "apiVersion": { - "type": "string", - "description": "API version of the referent." - }, - "resourceVersion": { - "type": "string", - "description": "Specific resourceVersion to which this reference is made, if any. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - }, - "fieldPath": { - "type": "string", - "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object." - } - } - }, - "v1.ComponentStatusList": { - "id": "v1.ComponentStatusList", - "description": "Status of all the conditions for the component as a list of ComponentStatus objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ComponentStatus" - }, - "description": "List of ComponentStatus objects." - } - } - }, - "v1.ListMeta": { - "id": "v1.ListMeta", - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "properties": { - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "resourceVersion": { - "type": "string", - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - } - } - }, - "v1.ComponentStatus": { - "id": "v1.ComponentStatus", - "description": "ComponentStatus (and ComponentStatusList) holds the cluster validation info.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.ComponentCondition" - }, - "description": "List of component conditions observed" - } - } - }, - "v1.ComponentCondition": { - "id": "v1.ComponentCondition", - "description": "Information about the condition of a component.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of condition for a component. Valid value: \"Healthy\"" - }, - "status": { - "type": "string", - "description": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\"." - }, - "message": { - "type": "string", - "description": "Message about the condition for a component. For example, information about a health check." - }, - "error": { - "type": "string", - "description": "Condition error code for a component. For example, a health check error code." - } - } - }, - "v1.ConfigMapList": { - "id": "v1.ConfigMapList", - "description": "ConfigMapList is a resource containing a list of ConfigMap objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ConfigMap" - }, - "description": "Items is the list of ConfigMaps." - } - } - }, - "v1.ConfigMap": { - "id": "v1.ConfigMap", - "description": "ConfigMap holds configuration data for pods to consume.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "data": { - "type": "object", - "description": "Data contains the configuration data. Each key must be a valid DNS_SUBDOMAIN with an optional leading dot." - } - } - }, - "v1.Status": { - "id": "v1.Status", - "description": "Status is a return value for calls that don't return other objects.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "status": { - "type": "string", - "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "message": { - "type": "string", - "description": "A human-readable description of the status of this operation." - }, - "reason": { - "type": "string", - "description": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it." - }, - "details": { - "$ref": "v1.StatusDetails", - "description": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type." - }, - "code": { - "type": "integer", - "format": "int32", - "description": "Suggested HTTP return code for this status, 0 if not set." - } - } - }, - "v1.StatusDetails": { - "id": "v1.StatusDetails", - "description": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", - "properties": { - "name": { - "type": "string", - "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described)." - }, - "group": { - "type": "string", - "description": "The group attribute of the resource associated with the status StatusReason." - }, - "kind": { - "type": "string", - "description": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "causes": { - "type": "array", - "items": { - "$ref": "v1.StatusCause" - }, - "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes." - }, - "retryAfterSeconds": { - "type": "integer", - "format": "int32", - "description": "If specified, the time in seconds before the operation should be retried." - } - } - }, - "v1.StatusCause": { - "id": "v1.StatusCause", - "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", - "properties": { - "reason": { - "type": "string", - "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available." - }, - "message": { - "type": "string", - "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader." - }, - "field": { - "type": "string", - "description": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"" - } - } - }, - "v1.WatchEvent": { - "id": "v1.WatchEvent", - "required": [ - "type", - "object" - ], - "properties": { - "type": { - "type": "string" - }, - "object": { - "type": "string" - } - } - }, - "v1.Patch": { - "id": "v1.Patch", - "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", - "properties": {} - }, - "v1.DeleteOptions": { - "id": "v1.DeleteOptions", - "description": "DeleteOptions may be provided when deleting an API object.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "gracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately." - }, - "preconditions": { - "$ref": "v1.Preconditions", - "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned." - }, - "orphanDependents": { - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both." - }, - "propagationPolicy": { - "$ref": "v1.DeletionPropagation", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy." - } - } - }, - "v1.Preconditions": { - "id": "v1.Preconditions", - "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", - "properties": { - "uid": { - "$ref": "types.UID", - "description": "Specifies the target UID." - } - } - }, - "types.UID": { - "id": "types.UID", - "properties": {} - }, - "v1.DeletionPropagation": { - "id": "v1.DeletionPropagation", - "properties": {} - }, - "v1.EndpointsList": { - "id": "v1.EndpointsList", - "description": "EndpointsList is a list of endpoints.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Endpoints" - }, - "description": "List of endpoints." - } - } - }, - "v1.Endpoints": { - "id": "v1.Endpoints", - "description": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", - "required": [ - "subsets" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "subsets": { - "type": "array", - "items": { - "$ref": "v1.EndpointSubset" - }, - "description": "The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service." - } - } - }, - "v1.EndpointSubset": { - "id": "v1.EndpointSubset", - "description": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]", - "properties": { - "addresses": { - "type": "array", - "items": { - "$ref": "v1.EndpointAddress" - }, - "description": "IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize." - }, - "notReadyAddresses": { - "type": "array", - "items": { - "$ref": "v1.EndpointAddress" - }, - "description": "IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check." - }, - "ports": { - "type": "array", - "items": { - "$ref": "v1.EndpointPort" - }, - "description": "Port numbers available on the related IP addresses." - } - } - }, - "v1.EndpointAddress": { - "id": "v1.EndpointAddress", - "description": "EndpointAddress is a tuple that describes single IP address.", - "required": [ - "ip" - ], - "properties": { - "ip": { - "type": "string", - "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready." - }, - "hostname": { - "type": "string", - "description": "The Hostname of this endpoint" - }, - "nodeName": { - "type": "string", - "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node." - }, - "targetRef": { - "$ref": "v1.ObjectReference", - "description": "Reference to object providing the endpoint." - } - } - }, - "v1.EndpointPort": { - "id": "v1.EndpointPort", - "description": "EndpointPort is a tuple that describes a single port.", - "required": [ - "port" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined." - }, - "port": { - "type": "integer", - "format": "int32", - "description": "The port number of the endpoint." - }, - "protocol": { - "type": "string", - "description": "The IP protocol for this port. Must be UDP or TCP. Default is TCP." - } - } - }, - "v1.EventList": { - "id": "v1.EventList", - "description": "EventList is a list of events.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Event" - }, - "description": "List of events" - } - } - }, - "v1.Event": { - "id": "v1.Event", - "description": "Event is a report of an event somewhere in the cluster.", - "required": [ - "metadata", - "involvedObject" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "involvedObject": { - "$ref": "v1.ObjectReference", - "description": "The object that this event is about." - }, - "reason": { - "type": "string", - "description": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status." - }, - "message": { - "type": "string", - "description": "A human-readable description of the status of this operation." - }, - "source": { - "$ref": "v1.EventSource", - "description": "The component reporting this event. Should be a short machine understandable string." - }, - "firstTimestamp": { - "type": "string", - "description": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)" - }, - "lastTimestamp": { - "type": "string", - "description": "The time at which the most recent occurrence of this event was recorded." - }, - "count": { - "type": "integer", - "format": "int32", - "description": "The number of times this event has occurred." - }, - "type": { - "type": "string", - "description": "Type of this event (Normal, Warning), new types could be added in the future" - } - } - }, - "v1.EventSource": { - "id": "v1.EventSource", - "description": "EventSource contains information for an event.", - "properties": { - "component": { - "type": "string", - "description": "Component from which the event is generated." - }, - "host": { - "type": "string", - "description": "Node name on which the event is generated." - } - } - }, - "v1.LimitRangeList": { - "id": "v1.LimitRangeList", - "description": "LimitRangeList is a list of LimitRange items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.LimitRange" - }, - "description": "Items is a list of LimitRange objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md" - } - } - }, - "v1.LimitRange": { - "id": "v1.LimitRange", - "description": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.LimitRangeSpec", - "description": "Spec defines the limits enforced. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.LimitRangeSpec": { - "id": "v1.LimitRangeSpec", - "description": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", - "required": [ - "limits" - ], - "properties": { - "limits": { - "type": "array", - "items": { - "$ref": "v1.LimitRangeItem" - }, - "description": "Limits is the list of LimitRangeItem objects that are enforced." - } - } - }, - "v1.LimitRangeItem": { - "id": "v1.LimitRangeItem", - "description": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", - "properties": { - "type": { - "type": "string", - "description": "Type of resource that this limit applies to." - }, - "max": { - "type": "object", - "description": "Max usage constraints on this kind by resource name." - }, - "min": { - "type": "object", - "description": "Min usage constraints on this kind by resource name." - }, - "default": { - "type": "object", - "description": "Default resource requirement limit value by resource name if resource limit is omitted." - }, - "defaultRequest": { - "type": "object", - "description": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted." - }, - "maxLimitRequestRatio": { - "type": "object", - "description": "MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource." - } - } - }, - "v1.NamespaceList": { - "id": "v1.NamespaceList", - "description": "NamespaceList is a list of Namespaces.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Namespace" - }, - "description": "Items is the list of Namespace objects in the list. More info: http://kubernetes.io/docs/user-guide/namespaces" - } - } - }, - "v1.Namespace": { - "id": "v1.Namespace", - "description": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.NamespaceSpec", - "description": "Spec defines the behavior of the Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.NamespaceStatus", - "description": "Status describes the current status of a Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.NamespaceSpec": { - "id": "v1.NamespaceSpec", - "description": "NamespaceSpec describes the attributes on a Namespace.", - "properties": { - "finalizers": { - "type": "array", - "items": { - "$ref": "v1.FinalizerName" - }, - "description": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers" - } - } - }, - "v1.FinalizerName": { - "id": "v1.FinalizerName", - "properties": {} - }, - "v1.NamespaceStatus": { - "id": "v1.NamespaceStatus", - "description": "NamespaceStatus is information about the current status of a Namespace.", - "properties": { - "phase": { - "type": "string", - "description": "Phase is the current lifecycle phase of the namespace. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases" - } - } - }, - "v1.NodeList": { - "id": "v1.NodeList", - "description": "NodeList is the whole list of all Nodes which have been registered with master.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Node" - }, - "description": "List of nodes" - } - } - }, - "v1.Node": { - "id": "v1.Node", - "description": "Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.NodeSpec", - "description": "Spec defines the behavior of a node. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.NodeStatus", - "description": "Most recently observed status of the node. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.NodeSpec": { - "id": "v1.NodeSpec", - "description": "NodeSpec describes the attributes that a node is created with.", - "properties": { - "podCIDR": { - "type": "string", - "description": "PodCIDR represents the pod IP range assigned to the node." - }, - "externalID": { - "type": "string", - "description": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated." - }, - "providerID": { - "type": "string", - "description": "ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e" - }, - "unschedulable": { - "type": "boolean", - "description": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration" - }, - "taints": { - "type": "array", - "items": { - "$ref": "v1.Taint" - }, - "description": "If specified, the node's taints." - } - } - }, - "v1.Taint": { - "id": "v1.Taint", - "description": "The node this Taint is attached to has the effect \"effect\" on any pod that that does not tolerate the Taint.", - "required": [ - "key", - "effect" - ], - "properties": { - "key": { - "type": "string", - "description": "Required. The taint key to be applied to a node." - }, - "value": { - "type": "string", - "description": "Required. The taint value corresponding to the taint key." - }, - "effect": { - "type": "string", - "description": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute." - }, - "timeAdded": { - "type": "string", - "description": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints." - } - } - }, - "v1.NodeStatus": { - "id": "v1.NodeStatus", - "description": "NodeStatus is information about the current status of a node.", - "properties": { - "capacity": { - "type": "object", - "description": "Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details." - }, - "allocatable": { - "type": "object", - "description": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity." - }, - "phase": { - "type": "string", - "description": "NodePhase is the recently observed lifecycle phase of the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase The field is never populated, and now is deprecated." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.NodeCondition" - }, - "description": "Conditions is an array of current observed node conditions. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition" - }, - "addresses": { - "type": "array", - "items": { - "$ref": "v1.NodeAddress" - }, - "description": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses" - }, - "daemonEndpoints": { - "$ref": "v1.NodeDaemonEndpoints", - "description": "Endpoints of daemons running on the Node." - }, - "nodeInfo": { - "$ref": "v1.NodeSystemInfo", - "description": "Set of ids/uuids to uniquely identify the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info" - }, - "images": { - "type": "array", - "items": { - "$ref": "v1.ContainerImage" - }, - "description": "List of container images on this node" - }, - "volumesInUse": { - "type": "array", - "items": { - "$ref": "v1.UniqueVolumeName" - }, - "description": "List of attachable volumes in use (mounted) by the node." - }, - "volumesAttached": { - "type": "array", - "items": { - "$ref": "v1.AttachedVolume" - }, - "description": "List of volumes that are attached to the node." - } - } - }, - "v1.NodeCondition": { - "id": "v1.NodeCondition", - "description": "NodeCondition contains condition information for a node.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of node condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastHeartbeatTime": { - "type": "string", - "description": "Last time we got an update on a given condition." - }, - "lastTransitionTime": { - "type": "string", - "description": "Last time the condition transit from one status to another." - }, - "reason": { - "type": "string", - "description": "(brief) reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "Human readable message indicating details about last transition." - } - } - }, - "v1.NodeAddress": { - "id": "v1.NodeAddress", - "description": "NodeAddress contains information for the node's address.", - "required": [ - "type", - "address" - ], - "properties": { - "type": { - "type": "string", - "description": "Node address type, one of Hostname, ExternalIP or InternalIP." - }, - "address": { - "type": "string", - "description": "The node address." - } - } - }, - "v1.NodeDaemonEndpoints": { - "id": "v1.NodeDaemonEndpoints", - "description": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", - "properties": { - "kubeletEndpoint": { - "$ref": "v1.DaemonEndpoint", - "description": "Endpoint on which Kubelet is listening." - } - } - }, - "v1.DaemonEndpoint": { - "id": "v1.DaemonEndpoint", - "description": "DaemonEndpoint contains information about a single Daemon endpoint.", - "required": [ - "Port" - ], - "properties": { - "Port": { - "type": "integer", - "format": "int32", - "description": "Port number of the given endpoint." - } - } - }, - "v1.NodeSystemInfo": { - "id": "v1.NodeSystemInfo", - "description": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", - "required": [ - "machineID", - "systemUUID", - "bootID", - "kernelVersion", - "osImage", - "containerRuntimeVersion", - "kubeletVersion", - "kubeProxyVersion", - "operatingSystem", - "architecture" - ], - "properties": { - "machineID": { - "type": "string", - "description": "MachineID reported by the node. For unique machine identification in the cluster this field is prefered. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html" - }, - "systemUUID": { - "type": "string", - "description": "SystemUUID reported by the node. For unique machine identification MachineID is prefered. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html" - }, - "bootID": { - "type": "string", - "description": "Boot ID reported by the node." - }, - "kernelVersion": { - "type": "string", - "description": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64)." - }, - "osImage": { - "type": "string", - "description": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy))." - }, - "containerRuntimeVersion": { - "type": "string", - "description": "ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0)." - }, - "kubeletVersion": { - "type": "string", - "description": "Kubelet Version reported by the node." - }, - "kubeProxyVersion": { - "type": "string", - "description": "KubeProxy Version reported by the node." - }, - "operatingSystem": { - "type": "string", - "description": "The Operating System reported by the node" - }, - "architecture": { - "type": "string", - "description": "The Architecture reported by the node" - } - } - }, - "v1.ContainerImage": { - "id": "v1.ContainerImage", - "description": "Describe a container image", - "required": [ - "names" - ], - "properties": { - "names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Names by which this image is known. e.g. [\"gcr.io/google_containers/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]" - }, - "sizeBytes": { - "type": "integer", - "format": "int64", - "description": "The size of the image in bytes." - } - } - }, - "v1.UniqueVolumeName": { - "id": "v1.UniqueVolumeName", - "properties": {} - }, - "v1.AttachedVolume": { - "id": "v1.AttachedVolume", - "description": "AttachedVolume describes a volume attached to a node", - "required": [ - "name", - "devicePath" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the attached volume" - }, - "devicePath": { - "type": "string", - "description": "DevicePath represents the device path where the volume should be available" - } - } - }, - "v1.PersistentVolumeClaimList": { - "id": "v1.PersistentVolumeClaimList", - "description": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeClaim" - }, - "description": "A list of persistent volume claims. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - } - } - }, - "v1.PersistentVolumeClaim": { - "id": "v1.PersistentVolumeClaim", - "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PersistentVolumeClaimSpec", - "description": "Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "status": { - "$ref": "v1.PersistentVolumeClaimStatus", - "description": "Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - } - } - }, - "v1.PersistentVolumeClaimSpec": { - "id": "v1.PersistentVolumeClaimSpec", - "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "properties": { - "accessModes": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeAccessMode" - }, - "description": "AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1" - }, - "selector": { - "$ref": "v1.LabelSelector", - "description": "A label query over volumes to consider for binding." - }, - "resources": { - "$ref": "v1.ResourceRequirements", - "description": "Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources" - }, - "volumeName": { - "type": "string", - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim." - }, - "storageClassName": { - "type": "string", - "description": "Name of the StorageClass required by the claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#class-1" - } - } - }, - "v1.PersistentVolumeAccessMode": { - "id": "v1.PersistentVolumeAccessMode", - "properties": {} - }, - "v1.LabelSelector": { - "id": "v1.LabelSelector", - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "properties": { - "matchLabels": { - "type": "object", - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - }, - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.LabelSelectorRequirement" - }, - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed." - } - } - }, - "v1.LabelSelectorRequirement": { - "id": "v1.LabelSelectorRequirement", - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "key is the label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - } - } - }, - "v1.ResourceRequirements": { - "id": "v1.ResourceRequirements", - "description": "ResourceRequirements describes the compute resource requirements.", - "properties": { - "limits": { - "type": "object", - "description": "Limits describes the maximum amount of compute resources allowed. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - }, - "requests": { - "type": "object", - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - } - } - }, - "v1.PersistentVolumeClaimStatus": { - "id": "v1.PersistentVolumeClaimStatus", - "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", - "properties": { - "phase": { - "type": "string", - "description": "Phase represents the current phase of PersistentVolumeClaim." - }, - "accessModes": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeAccessMode" - }, - "description": "AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1" - }, - "capacity": { - "type": "object", - "description": "Represents the actual resources of the underlying volume." - } - } - }, - "v1.PersistentVolumeList": { - "id": "v1.PersistentVolumeList", - "description": "PersistentVolumeList is a list of PersistentVolume items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolume" - }, - "description": "List of persistent volumes. More info: http://kubernetes.io/docs/user-guide/persistent-volumes" - } - } - }, - "v1.PersistentVolume": { - "id": "v1.PersistentVolume", - "description": "PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PersistentVolumeSpec", - "description": "Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes" - }, - "status": { - "$ref": "v1.PersistentVolumeStatus", - "description": "Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes" - } - } - }, - "v1.PersistentVolumeSpec": { - "id": "v1.PersistentVolumeSpec", - "description": "PersistentVolumeSpec is the specification of a persistent volume.", - "properties": { - "capacity": { - "type": "object", - "description": "A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity" - }, - "gcePersistentDisk": { - "$ref": "v1.GCEPersistentDiskVolumeSource", - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "awsElasticBlockStore": { - "$ref": "v1.AWSElasticBlockStoreVolumeSource", - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "hostPath": { - "$ref": "v1.HostPathVolumeSource", - "description": "HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - }, - "glusterfs": { - "$ref": "v1.GlusterfsVolumeSource", - "description": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md" - }, - "nfs": { - "$ref": "v1.NFSVolumeSource", - "description": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "rbd": { - "$ref": "v1.RBDVolumeSource", - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md" - }, - "iscsi": { - "$ref": "v1.ISCSIVolumeSource", - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin." - }, - "cinder": { - "$ref": "v1.CinderVolumeSource", - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "cephfs": { - "$ref": "v1.CephFSVolumeSource", - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - }, - "fc": { - "$ref": "v1.FCVolumeSource", - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - }, - "flocker": { - "$ref": "v1.FlockerVolumeSource", - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running" - }, - "flexVolume": { - "$ref": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future." - }, - "azureFile": { - "$ref": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod." - }, - "vsphereVolume": { - "$ref": "v1.VsphereVirtualDiskVolumeSource", - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - }, - "quobyte": { - "$ref": "v1.QuobyteVolumeSource", - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - }, - "azureDisk": { - "$ref": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - }, - "photonPersistentDisk": { - "$ref": "v1.PhotonPersistentDiskVolumeSource", - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - }, - "portworxVolume": { - "$ref": "v1.PortworxVolumeSource", - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" - }, - "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - }, - "accessModes": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeAccessMode" - }, - "description": "AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes" - }, - "claimRef": { - "$ref": "v1.ObjectReference", - "description": "ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding" - }, - "persistentVolumeReclaimPolicy": { - "type": "string", - "description": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy" - }, - "storageClassName": { - "type": "string", - "description": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass." - } - } - }, - "v1.GCEPersistentDiskVolumeSource": { - "id": "v1.GCEPersistentDiskVolumeSource", - "description": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", - "required": [ - "pdName" - ], - "properties": { - "pdName": { - "type": "string", - "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - } - } - }, - "v1.AWSElasticBlockStoreVolumeSource": { - "id": "v1.AWSElasticBlockStoreVolumeSource", - "description": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." - }, - "readOnly": { - "type": "boolean", - "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - } - } - }, - "v1.HostPathVolumeSource": { - "id": "v1.HostPathVolumeSource", - "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Path of the directory on the host. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - } - } - }, - "v1.GlusterfsVolumeSource": { - "id": "v1.GlusterfsVolumeSource", - "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "endpoints", - "path" - ], - "properties": { - "endpoints": { - "type": "string", - "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "path": { - "type": "string", - "description": "Path is the Glusterfs volume path. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - } - } - }, - "v1.NFSVolumeSource": { - "id": "v1.NFSVolumeSource", - "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", - "required": [ - "server", - "path" - ], - "properties": { - "server": { - "type": "string", - "description": "Server is the hostname or IP address of the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "path": { - "type": "string", - "description": "Path that is exported by the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - } - } - }, - "v1.RBDVolumeSource": { - "id": "v1.RBDVolumeSource", - "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", - "required": [ - "monitors", - "image" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A collection of Ceph monitors. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "image": { - "type": "string", - "description": "The rados image name. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#rbd" - }, - "pool": { - "type": "string", - "description": "The rados pool name. Default is rbd. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it." - }, - "user": { - "type": "string", - "description": "The rados user name. Default is admin. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "keyring": { - "type": "string", - "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - } - } - }, - "v1.LocalObjectReference": { - "id": "v1.LocalObjectReference", - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - } - } - }, - "v1.ISCSIVolumeSource": { - "id": "v1.ISCSIVolumeSource", - "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", - "required": [ - "targetPortal", - "iqn", - "lun" - ], - "properties": { - "targetPortal": { - "type": "string", - "description": "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - }, - "iqn": { - "type": "string", - "description": "Target iSCSI Qualified Name." - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "iSCSI target lun number." - }, - "iscsiInterface": { - "type": "string", - "description": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport." - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#iscsi" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false." - }, - "portals": { - "type": "array", - "items": { - "type": "string" - }, - "description": "iSCSI target portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - } - } - }, - "v1.CinderVolumeSource": { - "id": "v1.CinderVolumeSource", - "description": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "volume id used to identify the volume in cinder More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - } - } - }, - "v1.CephFSVolumeSource": { - "id": "v1.CephFSVolumeSource", - "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "monitors" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: Monitors is a collection of Ceph monitors More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "path": { - "type": "string", - "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /" - }, - "user": { - "type": "string", - "description": "Optional: User is the rados user name, default is admin More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretFile": { - "type": "string", - "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - } - } - }, - "v1.FCVolumeSource": { - "id": "v1.FCVolumeSource", - "description": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", - "required": [ - "targetWWNs", - "lun" - ], - "properties": { - "targetWWNs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: FC target worldwide names (WWNs)" - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "Required: FC target lun number" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.FlockerVolumeSource": { - "id": "v1.FlockerVolumeSource", - "description": "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", - "properties": { - "datasetName": { - "type": "string", - "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated" - }, - "datasetUUID": { - "type": "string", - "description": "UUID of the dataset. This is unique identifier of a Flocker dataset" - } - } - }, - "v1.FlexVolumeSource": { - "id": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", - "required": [ - "driver" - ], - "properties": { - "driver": { - "type": "string", - "description": "Driver is the name of the driver to use for this volume." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - }, - "options": { - "type": "object", - "description": "Optional: Extra command options if any." - } - } - }, - "v1.AzureFileVolumeSource": { - "id": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", - "required": [ - "secretName", - "shareName" - ], - "properties": { - "secretName": { - "type": "string", - "description": "the name of secret that contains Azure Storage Account Name and Key" - }, - "shareName": { - "type": "string", - "description": "Share Name" - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.VsphereVirtualDiskVolumeSource": { - "id": "v1.VsphereVirtualDiskVolumeSource", - "description": "Represents a vSphere volume resource.", - "required": [ - "volumePath" - ], - "properties": { - "volumePath": { - "type": "string", - "description": "Path that identifies vSphere volume vmdk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.QuobyteVolumeSource": { - "id": "v1.QuobyteVolumeSource", - "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", - "required": [ - "registry", - "volume" - ], - "properties": { - "registry": { - "type": "string", - "description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes" - }, - "volume": { - "type": "string", - "description": "Volume is a string that references an already created Quobyte volume by name." - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false." - }, - "user": { - "type": "string", - "description": "User to map volume access to Defaults to serivceaccount user" - }, - "group": { - "type": "string", - "description": "Group to map volume access to Default is no group" - } - } - }, - "v1.AzureDiskVolumeSource": { - "id": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", - "required": [ - "diskName", - "diskURI" - ], - "properties": { - "diskName": { - "type": "string", - "description": "The Name of the data disk in the blob storage" - }, - "diskURI": { - "type": "string", - "description": "The URI the data disk in the blob storage" - }, - "cachingMode": { - "$ref": "v1.AzureDataDiskCachingMode", - "description": "Host Caching mode: None, Read Only, Read Write." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.AzureDataDiskCachingMode": { - "id": "v1.AzureDataDiskCachingMode", - "properties": {} - }, - "v1.PhotonPersistentDiskVolumeSource": { - "id": "v1.PhotonPersistentDiskVolumeSource", - "description": "Represents a Photon Controller persistent disk resource.", - "required": [ - "pdID" - ], - "properties": { - "pdID": { - "type": "string", - "description": "ID that identifies Photon Controller persistent disk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.PortworxVolumeSource": { - "id": "v1.PortworxVolumeSource", - "description": "PortworxVolumeSource represents a Portworx volume resource.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "VolumeID uniquely identifies a Portworx volume" - }, - "fsType": { - "type": "string", - "description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.ScaleIOVolumeSource": { - "id": "v1.ScaleIOVolumeSource", - "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", - "required": [ - "gateway", - "system", - "secretRef" - ], - "properties": { - "gateway": { - "type": "string", - "description": "The host address of the ScaleIO API Gateway." - }, - "system": { - "type": "string", - "description": "The name of the storage system as configured in ScaleIO." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." - }, - "sslEnabled": { - "type": "boolean", - "description": "Flag to enable/disable SSL communication with Gateway, default false" - }, - "protectionDomain": { - "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." - }, - "storagePool": { - "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." - }, - "storageMode": { - "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." - }, - "volumeName": { - "type": "string", - "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.PersistentVolumeStatus": { - "id": "v1.PersistentVolumeStatus", - "description": "PersistentVolumeStatus is the current status of a persistent volume.", - "properties": { - "phase": { - "type": "string", - "description": "Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase" - }, - "message": { - "type": "string", - "description": "A human-readable message indicating details about why the volume is in this state." - }, - "reason": { - "type": "string", - "description": "Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI." - } - } - }, - "v1.PodList": { - "id": "v1.PodList", - "description": "PodList is a list of Pods.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Pod" - }, - "description": "List of pods. More info: http://kubernetes.io/docs/user-guide/pods" - } - } - }, - "v1.Pod": { - "id": "v1.Pod", - "description": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PodSpec", - "description": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.PodStatus", - "description": "Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.PodSpec": { - "id": "v1.PodSpec", - "description": "PodSpec is a description of a pod.", - "required": [ - "containers" - ], - "properties": { - "volumes": { - "type": "array", - "items": { - "$ref": "v1.Volume" - }, - "description": "List of volumes that can be mounted by containers belonging to the pod. More info: http://kubernetes.io/docs/user-guide/volumes" - }, - "initContainers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "containers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "restartPolicy": { - "type": "string", - "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy" - }, - "terminationGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds." - }, - "activeDeadlineSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer." - }, - "dnsPolicy": { - "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." - }, - "nodeSelector": { - "type": "object", - "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: http://kubernetes.io/docs/user-guide/node-selection/README" - }, - "serviceAccountName": { - "type": "string", - "description": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md" - }, - "serviceAccount": { - "type": "string", - "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead." - }, - "automountServiceAccountToken": { - "type": "boolean", - "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted." - }, - "nodeName": { - "type": "string", - "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements." - }, - "hostNetwork": { - "type": "boolean", - "description": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false." - }, - "hostPID": { - "type": "boolean", - "description": "Use the host's pid namespace. Optional: Default to false." - }, - "hostIPC": { - "type": "boolean", - "description": "Use the host's ipc namespace. Optional: Default to false." - }, - "securityContext": { - "$ref": "v1.PodSecurityContext", - "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field." - }, - "imagePullSecrets": { - "type": "array", - "items": { - "$ref": "v1.LocalObjectReference" - }, - "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod" - }, - "hostname": { - "type": "string", - "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value." - }, - "subdomain": { - "type": "string", - "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all." - }, - "affinity": { - "$ref": "v1.Affinity", - "description": "If specified, the pod's scheduling constraints" - }, - "schedulerName": { - "type": "string", - "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler." - }, - "tolerations": { - "type": "array", - "items": { - "$ref": "v1.Toleration" - }, - "description": "If specified, the pod's tolerations." - } - } - }, - "v1.Volume": { - "id": "v1.Volume", - "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "hostPath": { - "$ref": "v1.HostPathVolumeSource", - "description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - }, - "emptyDir": { - "$ref": "v1.EmptyDirVolumeSource", - "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - }, - "gcePersistentDisk": { - "$ref": "v1.GCEPersistentDiskVolumeSource", - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "awsElasticBlockStore": { - "$ref": "v1.AWSElasticBlockStoreVolumeSource", - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "gitRepo": { - "$ref": "v1.GitRepoVolumeSource", - "description": "GitRepo represents a git repository at a particular revision." - }, - "secret": { - "$ref": "v1.SecretVolumeSource", - "description": "Secret represents a secret that should populate this volume. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "nfs": { - "$ref": "v1.NFSVolumeSource", - "description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "iscsi": { - "$ref": "v1.ISCSIVolumeSource", - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md" - }, - "glusterfs": { - "$ref": "v1.GlusterfsVolumeSource", - "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md" - }, - "persistentVolumeClaim": { - "$ref": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "rbd": { - "$ref": "v1.RBDVolumeSource", - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md" - }, - "flexVolume": { - "$ref": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future." - }, - "cinder": { - "$ref": "v1.CinderVolumeSource", - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "cephfs": { - "$ref": "v1.CephFSVolumeSource", - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - }, - "flocker": { - "$ref": "v1.FlockerVolumeSource", - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPI represents downward API about the pod that should populate this volume" - }, - "fc": { - "$ref": "v1.FCVolumeSource", - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - }, - "azureFile": { - "$ref": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod." - }, - "configMap": { - "$ref": "v1.ConfigMapVolumeSource", - "description": "ConfigMap represents a configMap that should populate this volume" - }, - "vsphereVolume": { - "$ref": "v1.VsphereVirtualDiskVolumeSource", - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - }, - "quobyte": { - "$ref": "v1.QuobyteVolumeSource", - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - }, - "azureDisk": { - "$ref": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - }, - "photonPersistentDisk": { - "$ref": "v1.PhotonPersistentDiskVolumeSource", - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - }, - "projected": { - "$ref": "v1.ProjectedVolumeSource", - "description": "Items for all in one resources secrets, configmaps, and downward API" - }, - "portworxVolume": { - "$ref": "v1.PortworxVolumeSource", - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" - }, - "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - } - } - }, - "v1.EmptyDirVolumeSource": { - "id": "v1.EmptyDirVolumeSource", - "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", - "properties": { - "medium": { - "type": "string", - "description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - } - } - }, - "v1.GitRepoVolumeSource": { - "id": "v1.GitRepoVolumeSource", - "description": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.", - "required": [ - "repository" - ], - "properties": { - "repository": { - "type": "string", - "description": "Repository URL" - }, - "revision": { - "type": "string", - "description": "Commit hash for the specified revision." - }, - "directory": { - "type": "string", - "description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name." - } - } - }, - "v1.SecretVolumeSource": { - "id": "v1.SecretVolumeSource", - "description": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", - "properties": { - "secretName": { - "type": "string", - "description": "Name of the secret in the pod's namespace to use. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's keys must be defined" - } - } - }, - "v1.KeyToPath": { - "id": "v1.KeyToPath", - "description": "Maps a string key to a path within a volume.", - "required": [ - "key", - "path" - ], - "properties": { - "key": { - "type": "string", - "description": "The key to project." - }, - "path": { - "type": "string", - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.PersistentVolumeClaimVolumeSource": { - "id": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "type": "string", - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "readOnly": { - "type": "boolean", - "description": "Will force the ReadOnly setting in VolumeMounts. Default false." - } - } - }, - "v1.DownwardAPIVolumeSource": { - "id": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of downward API volume file" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.DownwardAPIVolumeFile": { - "id": "v1.DownwardAPIVolumeFile", - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" - }, - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.ObjectFieldSelector": { - "id": "v1.ObjectFieldSelector", - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - }, - "fieldPath": { - "type": "string", - "description": "Path of the field to select in the specified API version." - } - } - }, - "v1.ResourceFieldSelector": { - "id": "v1.ResourceFieldSelector", - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "type": "string", - "description": "Container name: required for volumes, optional for env vars" - }, - "resource": { - "type": "string", - "description": "Required: resource to select" - }, - "divisor": { - "type": "string", - "description": "Specifies the output format of the exposed resources, defaults to \"1\"" - } - } - }, - "v1.ConfigMapVolumeSource": { - "id": "v1.ConfigMapVolumeSource", - "description": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.ProjectedVolumeSource": { - "id": "v1.ProjectedVolumeSource", - "description": "Represents a projected volume source", - "required": [ - "sources" - ], - "properties": { - "sources": { - "type": "array", - "items": { - "$ref": "v1.VolumeProjection" - }, - "description": "list of volume projections" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.VolumeProjection": { - "id": "v1.VolumeProjection", - "description": "Projection that may be projected along with other supported volume types", - "properties": { - "secret": { - "$ref": "v1.SecretProjection", - "description": "information about the secret data to project" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIProjection", - "description": "information about the downwardAPI data to project" - }, - "configMap": { - "$ref": "v1.ConfigMapProjection", - "description": "information about the configMap data to project" - } - } - }, - "v1.SecretProjection": { - "id": "v1.SecretProjection", - "description": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or its key must be defined" - } - } - }, - "v1.DownwardAPIProjection": { - "id": "v1.DownwardAPIProjection", - "description": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of DownwardAPIVolume file" - } - } - }, - "v1.ConfigMapProjection": { - "id": "v1.ConfigMapProjection", - "description": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.Container": { - "id": "v1.Container", - "description": "A single application container that you want to run within a pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated." - }, - "image": { - "type": "string", - "description": "Docker image name. More info: http://kubernetes.io/docs/user-guide/images" - }, - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "args": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "workingDir": { - "type": "string", - "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." - }, - "ports": { - "type": "array", - "items": { - "$ref": "v1.ContainerPort" - }, - "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated." - }, - "envFrom": { - "type": "array", - "items": { - "$ref": "v1.EnvFromSource" - }, - "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated." - }, - "env": { - "type": "array", - "items": { - "$ref": "v1.EnvVar" - }, - "description": "List of environment variables to set in the container. Cannot be updated." - }, - "resources": { - "$ref": "v1.ResourceRequirements", - "description": "Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources" - }, - "volumeMounts": { - "type": "array", - "items": { - "$ref": "v1.VolumeMount" - }, - "description": "Pod volumes to mount into the container's filesystem. Cannot be updated." - }, - "livenessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "readinessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "lifecycle": { - "$ref": "v1.Lifecycle", - "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated." - }, - "terminationMessagePath": { - "type": "string", - "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated." - }, - "terminationMessagePolicy": { - "type": "string", - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated." - }, - "imagePullPolicy": { - "type": "string", - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/images#updating-images" - }, - "securityContext": { - "$ref": "v1.SecurityContext", - "description": "Security options the pod should run with. More info: http://releases.k8s.io/HEAD/docs/design/security_context.md" - }, - "stdin": { - "type": "boolean", - "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false." - }, - "stdinOnce": { - "type": "boolean", - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false" - }, - "tty": { - "type": "boolean", - "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false." - } - } - }, - "v1.ContainerPort": { - "id": "v1.ContainerPort", - "description": "ContainerPort represents a network port in a single container.", - "required": [ - "containerPort" - ], - "properties": { - "name": { - "type": "string", - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." - }, - "hostPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." - }, - "containerPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536." - }, - "protocol": { - "type": "string", - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\"." - }, - "hostIP": { - "type": "string", - "description": "What host IP to bind the external port to." - } - } - }, - "v1.EnvFromSource": { - "id": "v1.EnvFromSource", - "description": "EnvFromSource represents the source of a set of ConfigMaps", - "properties": { - "prefix": { - "type": "string", - "description": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER." - }, - "configMapRef": { - "$ref": "v1.ConfigMapEnvSource", - "description": "The ConfigMap to select from" - }, - "secretRef": { - "$ref": "v1.SecretEnvSource", - "description": "The Secret to select from" - } - } - }, - "v1.ConfigMapEnvSource": { - "id": "v1.ConfigMapEnvSource", - "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap must be defined" - } - } - }, - "v1.SecretEnvSource": { - "id": "v1.SecretEnvSource", - "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret must be defined" - } - } - }, - "v1.EnvVar": { - "id": "v1.EnvVar", - "description": "EnvVar represents an environment variable present in a Container.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the environment variable. Must be a C_IDENTIFIER." - }, - "value": { - "type": "string", - "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." - }, - "valueFrom": { - "$ref": "v1.EnvVarSource", - "description": "Source for the environment variable's value. Cannot be used if value is not empty." - } - } - }, - "v1.EnvVarSource": { - "id": "v1.EnvVarSource", - "description": "EnvVarSource represents a source for the value of an EnvVar.", - "properties": { - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "configMapKeyRef": { - "$ref": "v1.ConfigMapKeySelector", - "description": "Selects a key of a ConfigMap." - }, - "secretKeyRef": { - "$ref": "v1.SecretKeySelector", - "description": "Selects a key of a secret in the pod's namespace" - } - } - }, - "v1.ConfigMapKeySelector": { - "id": "v1.ConfigMapKeySelector", - "description": "Selects a key from a ConfigMap.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key to select." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's key must be defined" - } - } - }, - "v1.SecretKeySelector": { - "id": "v1.SecretKeySelector", - "description": "SecretKeySelector selects a key of a Secret.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key of the secret to select from. Must be a valid secret key." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's key must be defined" - } - } - }, - "v1.VolumeMount": { - "id": "v1.VolumeMount", - "description": "VolumeMount describes a mounting of a Volume within a container.", - "required": [ - "name", - "mountPath" - ], - "properties": { - "name": { - "type": "string", - "description": "This must match the Name of a Volume." - }, - "readOnly": { - "type": "boolean", - "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." - }, - "mountPath": { - "type": "string", - "description": "Path within the container at which the volume should be mounted. Must not contain ':'." - }, - "subPath": { - "type": "string", - "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." - } - } - }, - "v1.Probe": { - "id": "v1.Probe", - "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - }, - "initialDelaySeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after the container has started before liveness probes are initiated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "periodSeconds": { - "type": "integer", - "format": "int32", - "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." - }, - "successThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1." - }, - "failureThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." - } - } - }, - "v1.ExecAction": { - "id": "v1.ExecAction", - "description": "ExecAction describes a \"run in container\" action.", - "properties": { - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." - } - } - }, - "v1.HTTPGetAction": { - "id": "v1.HTTPGetAction", - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "required": [ - "port" - ], - "properties": { - "path": { - "type": "string", - "description": "Path to access on the HTTP server." - }, - "port": { - "type": "string", - "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - }, - "host": { - "type": "string", - "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." - }, - "scheme": { - "type": "string", - "description": "Scheme to use for connecting to the host. Defaults to HTTP." - }, - "httpHeaders": { - "type": "array", - "items": { - "$ref": "v1.HTTPHeader" - }, - "description": "Custom headers to set in the request. HTTP allows repeated headers." - } - } - }, - "v1.HTTPHeader": { - "id": "v1.HTTPHeader", - "description": "HTTPHeader describes a custom header to be used in HTTP probes", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "description": "The header field name" - }, - "value": { - "type": "string", - "description": "The header field value" - } - } - }, - "v1.TCPSocketAction": { - "id": "v1.TCPSocketAction", - "description": "TCPSocketAction describes an action based on opening a socket", - "required": [ - "port" - ], - "properties": { - "port": { - "type": "string", - "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - } - } - }, - "v1.Lifecycle": { - "id": "v1.Lifecycle", - "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", - "properties": { - "postStart": { - "$ref": "v1.Handler", - "description": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - }, - "preStop": { - "$ref": "v1.Handler", - "description": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - } - } - }, - "v1.Handler": { - "id": "v1.Handler", - "description": "Handler defines a specific action that should be taken", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - } - } - }, - "v1.SecurityContext": { - "id": "v1.SecurityContext", - "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", - "properties": { - "capabilities": { - "$ref": "v1.Capabilities", - "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." - }, - "privileged": { - "type": "boolean", - "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false." - }, - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "readOnlyRootFilesystem": { - "type": "boolean", - "description": "Whether this container has a read-only root filesystem. Default is false." - } - } - }, - "v1.Capabilities": { - "id": "v1.Capabilities", - "description": "Adds and removes POSIX capabilities from running containers.", - "properties": { - "add": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Added capabilities" - }, - "drop": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Removed capabilities" - } - } - }, - "v1.Capability": { - "id": "v1.Capability", - "properties": {} - }, - "v1.SELinuxOptions": { - "id": "v1.SELinuxOptions", - "description": "SELinuxOptions are the labels to be applied to the container", - "properties": { - "user": { - "type": "string", - "description": "User is a SELinux user label that applies to the container." - }, - "role": { - "type": "string", - "description": "Role is a SELinux role label that applies to the container." - }, - "type": { - "type": "string", - "description": "Type is a SELinux type label that applies to the container." - }, - "level": { - "type": "string", - "description": "Level is SELinux level label that applies to the container." - } - } - }, - "v1.PodSecurityContext": { - "id": "v1.PodSecurityContext", - "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "properties": { - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "supplementalGroups": { - "type": "array", - "items": { - "type": "integer" - }, - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container." - }, - "fsGroup": { - "type": "integer", - "format": "int64", - "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw " - } - } - }, - "v1.Affinity": { - "id": "v1.Affinity", - "description": "Affinity is a group of affinity scheduling rules.", - "properties": { - "nodeAffinity": { - "$ref": "v1.NodeAffinity", - "description": "Describes node affinity scheduling rules for the pod." - }, - "podAffinity": { - "$ref": "v1.PodAffinity", - "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." - }, - "podAntiAffinity": { - "$ref": "v1.PodAntiAffinity", - "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." - } - } - }, - "v1.NodeAffinity": { - "id": "v1.NodeAffinity", - "description": "Node affinity is a group of node affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "$ref": "v1.NodeSelector", - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PreferredSchedulingTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.NodeSelector": { - "id": "v1.NodeSelector", - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "required": [ - "nodeSelectorTerms" - ], - "properties": { - "nodeSelectorTerms": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorTerm" - }, - "description": "Required. A list of node selector terms. The terms are ORed." - } - } - }, - "v1.NodeSelectorTerm": { - "id": "v1.NodeSelectorTerm", - "description": "A null or empty node selector term matches no objects.", - "required": [ - "matchExpressions" - ], - "properties": { - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorRequirement" - }, - "description": "Required. A list of node selector requirements. The requirements are ANDed." - } - } - }, - "v1.NodeSelectorRequirement": { - "id": "v1.NodeSelectorRequirement", - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "The label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." - } - } - }, - "v1.PreferredSchedulingTerm": { - "id": "v1.PreferredSchedulingTerm", - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", - "required": [ - "weight", - "preference" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100." - }, - "preference": { - "$ref": "v1.NodeSelectorTerm", - "description": "A node selector term, associated with the corresponding weight." - } - } - }, - "v1.PodAffinity": { - "id": "v1.PodAffinity", - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.PodAffinityTerm": { - "id": "v1.PodAffinityTerm", - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \u003ctopologyKey\u003e tches that of any node on which a pod of the set of pods is running", - "properties": { - "labelSelector": { - "$ref": "v1.LabelSelector", - "description": "A label query over a set of resources, in this case pods." - }, - "namespaces": { - "type": "array", - "items": { - "type": "string" - }, - "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"" - }, - "topologyKey": { - "type": "string", - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed." - } - } - }, - "v1.WeightedPodAffinityTerm": { - "id": "v1.WeightedPodAffinityTerm", - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "required": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." - }, - "podAffinityTerm": { - "$ref": "v1.PodAffinityTerm", - "description": "Required. A pod affinity term, associated with the corresponding weight." - } - } - }, - "v1.PodAntiAffinity": { - "id": "v1.PodAntiAffinity", - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.Toleration": { - "id": "v1.Toleration", - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "properties": { - "key": { - "type": "string", - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys." - }, - "operator": { - "type": "string", - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category." - }, - "value": { - "type": "string", - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string." - }, - "effect": { - "type": "string", - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." - }, - "tolerationSeconds": { - "type": "integer", - "format": "int64", - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system." - } - } - }, - "v1.PodStatus": { - "id": "v1.PodStatus", - "description": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", - "properties": { - "phase": { - "type": "string", - "description": "Current condition of the pod. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-phase" - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.PodCondition" - }, - "description": "Current service state of pod. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions" - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about why the pod is in this condition." - }, - "reason": { - "type": "string", - "description": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk'" - }, - "hostIP": { - "type": "string", - "description": "IP address of the host to which the pod is assigned. Empty if not yet scheduled." - }, - "podIP": { - "type": "string", - "description": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated." - }, - "startTime": { - "type": "string", - "description": "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod." - }, - "initContainerStatuses": { - "type": "array", - "items": { - "$ref": "v1.ContainerStatus" - }, - "description": "The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses" - }, - "containerStatuses": { - "type": "array", - "items": { - "$ref": "v1.ContainerStatus" - }, - "description": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses" - }, - "qosClass": { - "type": "string", - "description": "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md" - } - } - }, - "v1.PodCondition": { - "id": "v1.PodCondition", - "description": "PodCondition contains details for the current condition of this pod.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type is the type of the condition. Currently only Ready. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions" - }, - "status": { - "type": "string", - "description": "Status is the status of the condition. Can be True, False, Unknown. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions" - }, - "lastProbeTime": { - "type": "string", - "description": "Last time we probed the condition." - }, - "lastTransitionTime": { - "type": "string", - "description": "Last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "Unique, one-word, CamelCase reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "Human-readable message indicating details about last transition." - } - } - }, - "v1.ContainerStatus": { - "id": "v1.ContainerStatus", - "description": "ContainerStatus contains details for the current status of this container.", - "required": [ - "name", - "ready", - "restartCount", - "image", - "imageID" - ], - "properties": { - "name": { - "type": "string", - "description": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated." - }, - "state": { - "$ref": "v1.ContainerState", - "description": "Details about the container's current condition." - }, - "lastState": { - "$ref": "v1.ContainerState", - "description": "Details about the container's last termination condition." - }, - "ready": { - "type": "boolean", - "description": "Specifies whether the container has passed its readiness probe." - }, - "restartCount": { - "type": "integer", - "format": "int32", - "description": "The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC." - }, - "image": { - "type": "string", - "description": "The image the container is running. More info: http://kubernetes.io/docs/user-guide/images" - }, - "imageID": { - "type": "string", - "description": "ImageID of the container's image." - }, - "containerID": { - "type": "string", - "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'. More info: http://kubernetes.io/docs/user-guide/container-environment#container-information" - } - } - }, - "v1.ContainerState": { - "id": "v1.ContainerState", - "description": "ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.", - "properties": { - "waiting": { - "$ref": "v1.ContainerStateWaiting", - "description": "Details about a waiting container" - }, - "running": { - "$ref": "v1.ContainerStateRunning", - "description": "Details about a running container" - }, - "terminated": { - "$ref": "v1.ContainerStateTerminated", - "description": "Details about a terminated container" - } - } - }, - "v1.ContainerStateWaiting": { - "id": "v1.ContainerStateWaiting", - "description": "ContainerStateWaiting is a waiting state of a container.", - "properties": { - "reason": { - "type": "string", - "description": "(brief) reason the container is not yet running." - }, - "message": { - "type": "string", - "description": "Message regarding why the container is not yet running." - } - } - }, - "v1.ContainerStateRunning": { - "id": "v1.ContainerStateRunning", - "description": "ContainerStateRunning is a running state of a container.", - "properties": { - "startedAt": { - "type": "string", - "description": "Time at which the container was last (re-)started" - } - } - }, - "v1.ContainerStateTerminated": { - "id": "v1.ContainerStateTerminated", - "description": "ContainerStateTerminated is a terminated state of a container.", - "required": [ - "exitCode" - ], - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "description": "Exit status from the last termination of the container" - }, - "signal": { - "type": "integer", - "format": "int32", - "description": "Signal from the last termination of the container" - }, - "reason": { - "type": "string", - "description": "(brief) reason from the last termination of the container" - }, - "message": { - "type": "string", - "description": "Message regarding the last termination of the container" - }, - "startedAt": { - "type": "string", - "description": "Time at which previous execution of the container started" - }, - "finishedAt": { - "type": "string", - "description": "Time at which the container last terminated" - }, - "containerID": { - "type": "string", - "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'" - } - } - }, - "v1beta1.Eviction": { - "id": "v1beta1.Eviction", - "description": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods/\u003cpod name\u003e/evictions.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "ObjectMeta describes the pod that is being evicted." - }, - "deleteOptions": { - "$ref": "v1.DeleteOptions", - "description": "DeleteOptions may be provided" - } - } - }, - "v1.PodTemplateList": { - "id": "v1.PodTemplateList", - "description": "PodTemplateList is a list of PodTemplates.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.PodTemplate" - }, - "description": "List of pod templates" - } - } - }, - "v1.PodTemplate": { - "id": "v1.PodTemplate", - "description": "PodTemplate describes a template for creating copies of a predefined pod.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template defines the pods that will be created from this pod template. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.PodTemplateSpec": { - "id": "v1.PodTemplateSpec", - "description": "PodTemplateSpec describes the data a pod should have when created from a template", - "properties": { - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PodSpec", - "description": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ReplicationControllerList": { - "id": "v1.ReplicationControllerList", - "description": "ReplicationControllerList is a collection of replication controllers.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ReplicationController" - }, - "description": "List of replication controllers. More info: http://kubernetes.io/docs/user-guide/replication-controller" - } - } - }, - "v1.ReplicationController": { - "id": "v1.ReplicationController", - "description": "ReplicationController represents the configuration of a replication controller.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.ReplicationControllerSpec", - "description": "Spec defines the specification of the desired behavior of the replication controller. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.ReplicationControllerStatus", - "description": "Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ReplicationControllerSpec": { - "id": "v1.ReplicationControllerSpec", - "description": "ReplicationControllerSpec is the specification of a replication controller.", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)" - }, - "selector": { - "type": "object", - "description": "Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template" - } - } - }, - "v1.ReplicationControllerStatus": { - "id": "v1.ReplicationControllerStatus", - "description": "ReplicationControllerStatus represents the current status of a replication controller.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the most recently oberved number of replicas. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "fullyLabeledReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of pods that have labels matching the labels of the pod template of the replication controller." - }, - "readyReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of ready replicas for this replication controller." - }, - "availableReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of available replicas (ready for at least minReadySeconds) for this replication controller." - }, - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "ObservedGeneration reflects the generation of the most recently observed replication controller." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.ReplicationControllerCondition" - }, - "description": "Represents the latest available observations of a replication controller's current state." - } - } - }, - "v1.ReplicationControllerCondition": { - "id": "v1.ReplicationControllerCondition", - "description": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of replication controller condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastTransitionTime": { - "type": "string", - "description": "The last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "The reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about the transition." - } - } - }, - "v1.Scale": { - "id": "v1.Scale", - "description": "Scale represents a scaling request for a resource.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata." - }, - "spec": { - "$ref": "v1.ScaleSpec", - "description": "defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status." - }, - "status": { - "$ref": "v1.ScaleStatus", - "description": "current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only." - } - } - }, - "v1.ScaleSpec": { - "id": "v1.ScaleSpec", - "description": "ScaleSpec describes the attributes of a scale subresource.", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "desired number of instances for the scaled object." - } - } - }, - "v1.ScaleStatus": { - "id": "v1.ScaleStatus", - "description": "ScaleStatus represents the current status of a scale subresource.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "actual number of observed instances of the scaled object." - }, - "selector": { - "type": "string", - "description": "label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" - } - } - }, - "v1.ResourceQuotaList": { - "id": "v1.ResourceQuotaList", - "description": "ResourceQuotaList is a list of ResourceQuota items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ResourceQuota" - }, - "description": "Items is a list of ResourceQuota objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota" - } - } - }, - "v1.ResourceQuota": { - "id": "v1.ResourceQuota", - "description": "ResourceQuota sets aggregate quota restrictions enforced per namespace", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.ResourceQuotaSpec", - "description": "Spec defines the desired quota. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.ResourceQuotaStatus", - "description": "Status defines the actual enforced quota and its current usage. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ResourceQuotaSpec": { - "id": "v1.ResourceQuotaSpec", - "description": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", - "properties": { - "hard": { - "type": "object", - "description": "Hard is the set of desired hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota" - }, - "scopes": { - "type": "array", - "items": { - "$ref": "v1.ResourceQuotaScope" - }, - "description": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects." - } - } - }, - "v1.ResourceQuotaScope": { - "id": "v1.ResourceQuotaScope", - "properties": {} - }, - "v1.ResourceQuotaStatus": { - "id": "v1.ResourceQuotaStatus", - "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", - "properties": { - "hard": { - "type": "object", - "description": "Hard is the set of enforced hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota" - }, - "used": { - "type": "object", - "description": "Used is the current observed total usage of the resource in the namespace." - } - } - }, - "v1.SecretList": { - "id": "v1.SecretList", - "description": "SecretList is a list of Secret.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Secret" - }, - "description": "Items is a list of secret objects. More info: http://kubernetes.io/docs/user-guide/secrets" - } - } - }, - "v1.Secret": { - "id": "v1.Secret", - "description": "Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "data": { - "type": "object", - "description": "Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN or leading dot followed by valid DNS_SUBDOMAIN. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4" - }, - "stringData": { - "type": "object", - "description": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API." - }, - "type": { - "type": "string", - "description": "Used to facilitate programmatic handling of secret data." - } - } - }, - "v1.ServiceAccountList": { - "id": "v1.ServiceAccountList", - "description": "ServiceAccountList is a list of ServiceAccount objects", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ServiceAccount" - }, - "description": "List of ServiceAccounts. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts" - } - } - }, - "v1.ServiceAccount": { - "id": "v1.ServiceAccount", - "description": "ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "secrets": { - "type": "array", - "items": { - "$ref": "v1.ObjectReference" - }, - "description": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: http://kubernetes.io/docs/user-guide/secrets" - }, - "imagePullSecrets": { - "type": "array", - "items": { - "$ref": "v1.LocalObjectReference" - }, - "description": "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: http://kubernetes.io/docs/user-guide/secrets#manually-specifying-an-imagepullsecret" - }, - "automountServiceAccountToken": { - "type": "boolean", - "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level." - } - } - }, - "v1.ServiceList": { - "id": "v1.ServiceList", - "description": "ServiceList holds a list of services.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Service" - }, - "description": "List of services" - } - } - }, - "v1.Service": { - "id": "v1.Service", - "description": "Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.ServiceSpec", - "description": "Spec defines the behavior of a service. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.ServiceStatus", - "description": "Most recently observed status of the service. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ServiceSpec": { - "id": "v1.ServiceSpec", - "description": "ServiceSpec describes the attributes that a user creates on a service.", - "properties": { - "ports": { - "type": "array", - "items": { - "$ref": "v1.ServicePort" - }, - "description": "The list of ports that are exposed by this service. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies" - }, - "selector": { - "type": "object", - "description": "Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://kubernetes.io/docs/user-guide/services#overview" - }, - "clusterIP": { - "type": "string", - "description": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies" - }, - "type": { - "type": "string", - "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: http://kubernetes.io/docs/user-guide/services#overview" - }, - "externalIPs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. A previous form of this functionality exists as the deprecatedPublicIPs field. When using this field, callers should also clear the deprecatedPublicIPs field." - }, - "deprecatedPublicIPs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "deprecatedPublicIPs is deprecated and replaced by the externalIPs field with almost the exact same semantics. This field is retained in the v1 API for compatibility until at least 8/20/2016. It will be removed from any new API revisions. If both deprecatedPublicIPs *and* externalIPs are set, deprecatedPublicIPs is used." - }, - "sessionAffinity": { - "type": "string", - "description": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies" - }, - "loadBalancerIP": { - "type": "string", - "description": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature." - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - }, - "description": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: http://kubernetes.io/docs/user-guide/services-firewalls" - }, - "externalName": { - "type": "string", - "description": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName." - } - } - }, - "v1.ServicePort": { - "id": "v1.ServicePort", - "description": "ServicePort contains information on service's port.", - "required": [ - "port" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service." - }, - "protocol": { - "type": "string", - "description": "The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default is TCP." - }, - "port": { - "type": "integer", - "format": "int32", - "description": "The port that will be exposed by this service." - }, - "targetPort": { - "type": "string", - "description": "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: http://kubernetes.io/docs/user-guide/services#defining-a-service" - }, - "nodePort": { - "type": "integer", - "format": "int32", - "description": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: http://kubernetes.io/docs/user-guide/services#type--nodeport" - } - } - }, - "v1.ServiceStatus": { - "id": "v1.ServiceStatus", - "description": "ServiceStatus represents the current status of a service.", - "properties": { - "loadBalancer": { - "$ref": "v1.LoadBalancerStatus", - "description": "LoadBalancer contains the current status of the load-balancer, if one is present." - } - } - }, - "v1.LoadBalancerStatus": { - "id": "v1.LoadBalancerStatus", - "description": "LoadBalancerStatus represents the status of a load-balancer.", - "properties": { - "ingress": { - "type": "array", - "items": { - "$ref": "v1.LoadBalancerIngress" - }, - "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points." - } - } - }, - "v1.LoadBalancerIngress": { - "id": "v1.LoadBalancerIngress", - "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", - "properties": { - "ip": { - "type": "string", - "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)" - }, - "hostname": { - "type": "string", - "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)" - } - } - }, - "v1.APIResourceList": { - "id": "v1.APIResourceList", - "description": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", - "required": [ - "groupVersion", - "resources" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "groupVersion": { - "type": "string", - "description": "groupVersion is the group and version this APIResourceList is for." - }, - "resources": { - "type": "array", - "items": { - "$ref": "v1.APIResource" - }, - "description": "resources contains the name of the resources and if they are namespaced." - } - } - }, - "v1.APIResource": { - "id": "v1.APIResource", - "description": "APIResource specifies the name of a resource and whether it is namespaced.", - "required": [ - "name", - "namespaced", - "kind", - "verbs" - ], - "properties": { - "name": { - "type": "string", - "description": "name is the name of the resource." - }, - "namespaced": { - "type": "boolean", - "description": "namespaced indicates if a resource is namespaced or not." - }, - "kind": { - "type": "string", - "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')" - }, - "verbs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)" - }, - "shortNames": { - "type": "array", - "items": { - "type": "string" - }, - "description": "shortNames is a list of suggested short names of the resource." - } - } - } - } - } \ No newline at end of file diff --git a/k8s/.kube/schema/v1.6.6/apis/extensions/v1beta1/schema.json b/k8s/.kube/schema/v1.6.6/apis/extensions/v1beta1/schema.json deleted file mode 100644 index a112d2e67..000000000 --- a/k8s/.kube/schema/v1.6.6/apis/extensions/v1beta1/schema.json +++ /dev/null @@ -1,9977 +0,0 @@ -{ - "swaggerVersion": "1.2", - "apiVersion": "extensions/v1beta1", - "basePath": "https://10.240.255.15:443", - "resourcePath": "/apis/extensions/v1beta1", - "info": { - "title": "", - "description": "" - }, - "apis": [ - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSetList", - "method": "GET", - "summary": "list or watch objects of kind DaemonSet", - "nickname": "listNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "POST", - "summary": "create a DaemonSet", - "nickname": "createNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DaemonSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of DaemonSet", - "nickname": "deletecollectionNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of DaemonSet", - "nickname": "watchNamespacedDaemonSetList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSet", - "method": "GET", - "summary": "read the specified DaemonSet", - "nickname": "readNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PUT", - "summary": "replace the specified DaemonSet", - "nickname": "replaceNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DaemonSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PATCH", - "summary": "partially update the specified DaemonSet", - "nickname": "patchNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a DaemonSet", - "nickname": "deleteNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind DaemonSet", - "nickname": "watchNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSetList", - "method": "GET", - "summary": "list or watch objects of kind DaemonSet", - "nickname": "listDaemonSetForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of DaemonSet", - "nickname": "watchDaemonSetListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSet", - "method": "GET", - "summary": "read status of the specified DaemonSet", - "nickname": "readNamespacedDaemonSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PUT", - "summary": "replace status of the specified DaemonSet", - "nickname": "replaceNamespacedDaemonSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DaemonSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PATCH", - "summary": "partially update status of the specified DaemonSet", - "nickname": "patchNamespacedDaemonSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DeploymentList", - "method": "GET", - "summary": "list or watch objects of kind Deployment", - "nickname": "listNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DeploymentList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "POST", - "summary": "create a Deployment", - "nickname": "createNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Deployment", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Deployment", - "nickname": "deletecollectionNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Deployment", - "nickname": "watchNamespacedDeploymentList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Deployment", - "method": "GET", - "summary": "read the specified Deployment", - "nickname": "readNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PUT", - "summary": "replace the specified Deployment", - "nickname": "replaceNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Deployment", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PATCH", - "summary": "partially update the specified Deployment", - "nickname": "patchNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Deployment", - "nickname": "deleteNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Deployment", - "nickname": "watchNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DeploymentList", - "method": "GET", - "summary": "list or watch objects of kind Deployment", - "nickname": "listDeploymentForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DeploymentList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Deployment", - "nickname": "watchDeploymentListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/rollback", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DeploymentRollback", - "method": "POST", - "summary": "create rollback of a DeploymentRollback", - "nickname": "createNamespacedDeploymentRollbackRollback", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DeploymentRollback", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DeploymentRollback", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DeploymentRollback" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/scale", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Deployment", - "method": "GET", - "summary": "read status of the specified Deployment", - "nickname": "readNamespacedDeploymentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PUT", - "summary": "replace status of the specified Deployment", - "nickname": "replaceNamespacedDeploymentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Deployment", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PATCH", - "summary": "partially update status of the specified Deployment", - "nickname": "patchNamespacedDeploymentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.IngressList", - "method": "GET", - "summary": "list or watch objects of kind Ingress", - "nickname": "listNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.IngressList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "POST", - "summary": "create an Ingress", - "nickname": "createNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Ingress", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Ingress", - "nickname": "deletecollectionNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Ingress", - "nickname": "watchNamespacedIngressList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Ingress", - "method": "GET", - "summary": "read the specified Ingress", - "nickname": "readNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PUT", - "summary": "replace the specified Ingress", - "nickname": "replaceNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Ingress", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PATCH", - "summary": "partially update the specified Ingress", - "nickname": "patchNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete an Ingress", - "nickname": "deleteNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Ingress", - "nickname": "watchNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.IngressList", - "method": "GET", - "summary": "list or watch objects of kind Ingress", - "nickname": "listIngressForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.IngressList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Ingress", - "nickname": "watchIngressListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Ingress", - "method": "GET", - "summary": "read status of the specified Ingress", - "nickname": "readNamespacedIngressStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PUT", - "summary": "replace status of the specified Ingress", - "nickname": "replaceNamespacedIngressStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Ingress", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PATCH", - "summary": "partially update status of the specified Ingress", - "nickname": "patchNamespacedIngressStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.NetworkPolicyList", - "method": "GET", - "summary": "list or watch objects of kind NetworkPolicy", - "nickname": "listNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicyList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.NetworkPolicy", - "method": "POST", - "summary": "create a NetworkPolicy", - "nickname": "createNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.NetworkPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of NetworkPolicy", - "nickname": "deletecollectionNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of NetworkPolicy", - "nickname": "watchNamespacedNetworkPolicyList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.NetworkPolicy", - "method": "GET", - "summary": "read the specified NetworkPolicy", - "nickname": "readNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.NetworkPolicy", - "method": "PUT", - "summary": "replace the specified NetworkPolicy", - "nickname": "replaceNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.NetworkPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.NetworkPolicy", - "method": "PATCH", - "summary": "partially update the specified NetworkPolicy", - "nickname": "patchNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a NetworkPolicy", - "nickname": "deleteNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind NetworkPolicy", - "nickname": "watchNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.NetworkPolicyList", - "method": "GET", - "summary": "list or watch objects of kind NetworkPolicy", - "nickname": "listNetworkPolicyForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicyList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of NetworkPolicy", - "nickname": "watchNetworkPolicyListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/podsecuritypolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.PodSecurityPolicyList", - "method": "GET", - "summary": "list or watch objects of kind PodSecurityPolicy", - "nickname": "listPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicyList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.PodSecurityPolicy", - "method": "POST", - "summary": "create a PodSecurityPolicy", - "nickname": "createPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.PodSecurityPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PodSecurityPolicy", - "nickname": "deletecollectionPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/podsecuritypolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PodSecurityPolicy", - "nickname": "watchPodSecurityPolicyList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/podsecuritypolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.PodSecurityPolicy", - "method": "GET", - "summary": "read the specified PodSecurityPolicy", - "nickname": "readPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.PodSecurityPolicy", - "method": "PUT", - "summary": "replace the specified PodSecurityPolicy", - "nickname": "replacePodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.PodSecurityPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.PodSecurityPolicy", - "method": "PATCH", - "summary": "partially update the specified PodSecurityPolicy", - "nickname": "patchPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PodSecurityPolicy", - "nickname": "deletePodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/podsecuritypolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PodSecurityPolicy", - "nickname": "watchPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSetList", - "method": "GET", - "summary": "list or watch objects of kind ReplicaSet", - "nickname": "listNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "POST", - "summary": "create a ReplicaSet", - "nickname": "createNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ReplicaSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ReplicaSet", - "nickname": "deletecollectionNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicaSet", - "nickname": "watchNamespacedReplicaSetList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSet", - "method": "GET", - "summary": "read the specified ReplicaSet", - "nickname": "readNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PUT", - "summary": "replace the specified ReplicaSet", - "nickname": "replaceNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ReplicaSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PATCH", - "summary": "partially update the specified ReplicaSet", - "nickname": "patchNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ReplicaSet", - "nickname": "deleteNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ReplicaSet", - "nickname": "watchNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSetList", - "method": "GET", - "summary": "list or watch objects of kind ReplicaSet", - "nickname": "listReplicaSetForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicaSet", - "nickname": "watchReplicaSetListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/scale", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSet", - "method": "GET", - "summary": "read status of the specified ReplicaSet", - "nickname": "readNamespacedReplicaSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PUT", - "summary": "replace status of the specified ReplicaSet", - "nickname": "replaceNamespacedReplicaSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ReplicaSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PATCH", - "summary": "partially update status of the specified ReplicaSet", - "nickname": "patchNamespacedReplicaSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicationcontrollers/{name}/scale", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/thirdpartyresources", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ThirdPartyResourceList", - "method": "GET", - "summary": "list or watch objects of kind ThirdPartyResource", - "nickname": "listThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResourceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ThirdPartyResource", - "method": "POST", - "summary": "create a ThirdPartyResource", - "nickname": "createThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ThirdPartyResource", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ThirdPartyResource", - "nickname": "deletecollectionThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/thirdpartyresources", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ThirdPartyResource", - "nickname": "watchThirdPartyResourceList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/thirdpartyresources/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ThirdPartyResource", - "method": "GET", - "summary": "read the specified ThirdPartyResource", - "nickname": "readThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ThirdPartyResource", - "method": "PUT", - "summary": "replace the specified ThirdPartyResource", - "nickname": "replaceThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ThirdPartyResource", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ThirdPartyResource", - "method": "PATCH", - "summary": "partially update the specified ThirdPartyResource", - "nickname": "patchThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ThirdPartyResource", - "nickname": "deleteThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/thirdpartyresources/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ThirdPartyResource", - "nickname": "watchThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.APIResourceList", - "method": "GET", - "summary": "get available resources", - "nickname": "getAPIResources", - "parameters": [], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ] - } - ] - } - ], - "models": { - "v1beta1.DaemonSetList": { - "id": "v1beta1.DaemonSetList", - "description": "DaemonSetList is a collection of daemon sets.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.DaemonSet" - }, - "description": "A list of daemon sets." - } - } - }, - "v1.ListMeta": { - "id": "v1.ListMeta", - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "properties": { - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "resourceVersion": { - "type": "string", - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - } - } - }, - "v1beta1.DaemonSet": { - "id": "v1beta1.DaemonSet", - "description": "DaemonSet represents the configuration of a daemon set.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.DaemonSetSpec", - "description": "The desired behavior of this daemon set. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1beta1.DaemonSetStatus", - "description": "The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ObjectMeta": { - "id": "v1.ObjectMeta", - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "properties": { - "name": { - "type": "string", - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "generateName": { - "type": "string", - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency" - }, - "namespace": { - "type": "string", - "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces" - }, - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "uid": { - "type": "string", - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "resourceVersion": { - "type": "string", - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - }, - "generation": { - "type": "integer", - "format": "int64", - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only." - }, - "creationTimestamp": { - "type": "string", - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionTimestamp": { - "type": "string", - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only." - }, - "labels": { - "type": "object", - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels" - }, - "annotations": { - "type": "object", - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations" - }, - "ownerReferences": { - "type": "array", - "items": { - "$ref": "v1.OwnerReference" - }, - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller." - }, - "finalizers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed." - }, - "clusterName": { - "type": "string", - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request." - } - } - }, - "v1.OwnerReference": { - "id": "v1.OwnerReference", - "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "API version of the referent." - }, - "kind": { - "type": "string", - "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "uid": { - "type": "string", - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "controller": { - "type": "boolean", - "description": "If true, this reference points to the managing controller." - }, - "blockOwnerDeletion": { - "type": "boolean", - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned." - } - } - }, - "v1beta1.DaemonSetSpec": { - "id": "v1beta1.DaemonSetSpec", - "description": "DaemonSetSpec is the specification of a daemon set.", - "required": [ - "template" - ], - "properties": { - "selector": { - "$ref": "v1.LabelSelector", - "description": "A label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template" - }, - "updateStrategy": { - "$ref": "v1beta1.DaemonSetUpdateStrategy", - "description": "An update strategy to replace existing DaemonSet pods with new pods." - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)." - }, - "templateGeneration": { - "type": "integer", - "format": "int64", - "description": "A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation." - } - } - }, - "v1.LabelSelector": { - "id": "v1.LabelSelector", - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "properties": { - "matchLabels": { - "type": "object", - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - }, - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.LabelSelectorRequirement" - }, - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed." - } - } - }, - "v1.LabelSelectorRequirement": { - "id": "v1.LabelSelectorRequirement", - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "key is the label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - } - } - }, - "v1.PodTemplateSpec": { - "id": "v1.PodTemplateSpec", - "description": "PodTemplateSpec describes the data a pod should have when created from a template", - "properties": { - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PodSpec", - "description": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.PodSpec": { - "id": "v1.PodSpec", - "description": "PodSpec is a description of a pod.", - "required": [ - "containers" - ], - "properties": { - "volumes": { - "type": "array", - "items": { - "$ref": "v1.Volume" - }, - "description": "List of volumes that can be mounted by containers belonging to the pod. More info: http://kubernetes.io/docs/user-guide/volumes" - }, - "initContainers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "containers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "restartPolicy": { - "type": "string", - "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy" - }, - "terminationGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds." - }, - "activeDeadlineSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer." - }, - "dnsPolicy": { - "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." - }, - "nodeSelector": { - "type": "object", - "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: http://kubernetes.io/docs/user-guide/node-selection/README" - }, - "serviceAccountName": { - "type": "string", - "description": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md" - }, - "serviceAccount": { - "type": "string", - "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead." - }, - "automountServiceAccountToken": { - "type": "boolean", - "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted." - }, - "nodeName": { - "type": "string", - "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements." - }, - "hostNetwork": { - "type": "boolean", - "description": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false." - }, - "hostPID": { - "type": "boolean", - "description": "Use the host's pid namespace. Optional: Default to false." - }, - "hostIPC": { - "type": "boolean", - "description": "Use the host's ipc namespace. Optional: Default to false." - }, - "securityContext": { - "$ref": "v1.PodSecurityContext", - "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field." - }, - "imagePullSecrets": { - "type": "array", - "items": { - "$ref": "v1.LocalObjectReference" - }, - "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod" - }, - "hostname": { - "type": "string", - "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value." - }, - "subdomain": { - "type": "string", - "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all." - }, - "affinity": { - "$ref": "v1.Affinity", - "description": "If specified, the pod's scheduling constraints" - }, - "schedulerName": { - "type": "string", - "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler." - }, - "tolerations": { - "type": "array", - "items": { - "$ref": "v1.Toleration" - }, - "description": "If specified, the pod's tolerations." - } - } - }, - "v1.Volume": { - "id": "v1.Volume", - "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "hostPath": { - "$ref": "v1.HostPathVolumeSource", - "description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - }, - "emptyDir": { - "$ref": "v1.EmptyDirVolumeSource", - "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - }, - "gcePersistentDisk": { - "$ref": "v1.GCEPersistentDiskVolumeSource", - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "awsElasticBlockStore": { - "$ref": "v1.AWSElasticBlockStoreVolumeSource", - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "gitRepo": { - "$ref": "v1.GitRepoVolumeSource", - "description": "GitRepo represents a git repository at a particular revision." - }, - "secret": { - "$ref": "v1.SecretVolumeSource", - "description": "Secret represents a secret that should populate this volume. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "nfs": { - "$ref": "v1.NFSVolumeSource", - "description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "iscsi": { - "$ref": "v1.ISCSIVolumeSource", - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md" - }, - "glusterfs": { - "$ref": "v1.GlusterfsVolumeSource", - "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md" - }, - "persistentVolumeClaim": { - "$ref": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "rbd": { - "$ref": "v1.RBDVolumeSource", - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md" - }, - "flexVolume": { - "$ref": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future." - }, - "cinder": { - "$ref": "v1.CinderVolumeSource", - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "cephfs": { - "$ref": "v1.CephFSVolumeSource", - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - }, - "flocker": { - "$ref": "v1.FlockerVolumeSource", - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPI represents downward API about the pod that should populate this volume" - }, - "fc": { - "$ref": "v1.FCVolumeSource", - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - }, - "azureFile": { - "$ref": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod." - }, - "configMap": { - "$ref": "v1.ConfigMapVolumeSource", - "description": "ConfigMap represents a configMap that should populate this volume" - }, - "vsphereVolume": { - "$ref": "v1.VsphereVirtualDiskVolumeSource", - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - }, - "quobyte": { - "$ref": "v1.QuobyteVolumeSource", - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - }, - "azureDisk": { - "$ref": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - }, - "photonPersistentDisk": { - "$ref": "v1.PhotonPersistentDiskVolumeSource", - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - }, - "projected": { - "$ref": "v1.ProjectedVolumeSource", - "description": "Items for all in one resources secrets, configmaps, and downward API" - }, - "portworxVolume": { - "$ref": "v1.PortworxVolumeSource", - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" - }, - "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - } - } - }, - "v1.HostPathVolumeSource": { - "id": "v1.HostPathVolumeSource", - "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Path of the directory on the host. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - } - } - }, - "v1.EmptyDirVolumeSource": { - "id": "v1.EmptyDirVolumeSource", - "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", - "properties": { - "medium": { - "type": "string", - "description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - } - } - }, - "v1.GCEPersistentDiskVolumeSource": { - "id": "v1.GCEPersistentDiskVolumeSource", - "description": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", - "required": [ - "pdName" - ], - "properties": { - "pdName": { - "type": "string", - "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - } - } - }, - "v1.AWSElasticBlockStoreVolumeSource": { - "id": "v1.AWSElasticBlockStoreVolumeSource", - "description": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." - }, - "readOnly": { - "type": "boolean", - "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - } - } - }, - "v1.GitRepoVolumeSource": { - "id": "v1.GitRepoVolumeSource", - "description": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.", - "required": [ - "repository" - ], - "properties": { - "repository": { - "type": "string", - "description": "Repository URL" - }, - "revision": { - "type": "string", - "description": "Commit hash for the specified revision." - }, - "directory": { - "type": "string", - "description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name." - } - } - }, - "v1.SecretVolumeSource": { - "id": "v1.SecretVolumeSource", - "description": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", - "properties": { - "secretName": { - "type": "string", - "description": "Name of the secret in the pod's namespace to use. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's keys must be defined" - } - } - }, - "v1.KeyToPath": { - "id": "v1.KeyToPath", - "description": "Maps a string key to a path within a volume.", - "required": [ - "key", - "path" - ], - "properties": { - "key": { - "type": "string", - "description": "The key to project." - }, - "path": { - "type": "string", - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.NFSVolumeSource": { - "id": "v1.NFSVolumeSource", - "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", - "required": [ - "server", - "path" - ], - "properties": { - "server": { - "type": "string", - "description": "Server is the hostname or IP address of the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "path": { - "type": "string", - "description": "Path that is exported by the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - } - } - }, - "v1.ISCSIVolumeSource": { - "id": "v1.ISCSIVolumeSource", - "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", - "required": [ - "targetPortal", - "iqn", - "lun" - ], - "properties": { - "targetPortal": { - "type": "string", - "description": "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - }, - "iqn": { - "type": "string", - "description": "Target iSCSI Qualified Name." - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "iSCSI target lun number." - }, - "iscsiInterface": { - "type": "string", - "description": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport." - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#iscsi" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false." - }, - "portals": { - "type": "array", - "items": { - "type": "string" - }, - "description": "iSCSI target portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - } - } - }, - "v1.GlusterfsVolumeSource": { - "id": "v1.GlusterfsVolumeSource", - "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "endpoints", - "path" - ], - "properties": { - "endpoints": { - "type": "string", - "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "path": { - "type": "string", - "description": "Path is the Glusterfs volume path. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - } - } - }, - "v1.PersistentVolumeClaimVolumeSource": { - "id": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "type": "string", - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "readOnly": { - "type": "boolean", - "description": "Will force the ReadOnly setting in VolumeMounts. Default false." - } - } - }, - "v1.RBDVolumeSource": { - "id": "v1.RBDVolumeSource", - "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", - "required": [ - "monitors", - "image" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A collection of Ceph monitors. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "image": { - "type": "string", - "description": "The rados image name. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#rbd" - }, - "pool": { - "type": "string", - "description": "The rados pool name. Default is rbd. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it." - }, - "user": { - "type": "string", - "description": "The rados user name. Default is admin. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "keyring": { - "type": "string", - "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - } - } - }, - "v1.LocalObjectReference": { - "id": "v1.LocalObjectReference", - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - } - } - }, - "v1.FlexVolumeSource": { - "id": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", - "required": [ - "driver" - ], - "properties": { - "driver": { - "type": "string", - "description": "Driver is the name of the driver to use for this volume." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - }, - "options": { - "type": "object", - "description": "Optional: Extra command options if any." - } - } - }, - "v1.CinderVolumeSource": { - "id": "v1.CinderVolumeSource", - "description": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "volume id used to identify the volume in cinder More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - } - } - }, - "v1.CephFSVolumeSource": { - "id": "v1.CephFSVolumeSource", - "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "monitors" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: Monitors is a collection of Ceph monitors More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "path": { - "type": "string", - "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /" - }, - "user": { - "type": "string", - "description": "Optional: User is the rados user name, default is admin More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretFile": { - "type": "string", - "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - } - } - }, - "v1.FlockerVolumeSource": { - "id": "v1.FlockerVolumeSource", - "description": "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", - "properties": { - "datasetName": { - "type": "string", - "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated" - }, - "datasetUUID": { - "type": "string", - "description": "UUID of the dataset. This is unique identifier of a Flocker dataset" - } - } - }, - "v1.DownwardAPIVolumeSource": { - "id": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of downward API volume file" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.DownwardAPIVolumeFile": { - "id": "v1.DownwardAPIVolumeFile", - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" - }, - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.ObjectFieldSelector": { - "id": "v1.ObjectFieldSelector", - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - }, - "fieldPath": { - "type": "string", - "description": "Path of the field to select in the specified API version." - } - } - }, - "v1.ResourceFieldSelector": { - "id": "v1.ResourceFieldSelector", - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "type": "string", - "description": "Container name: required for volumes, optional for env vars" - }, - "resource": { - "type": "string", - "description": "Required: resource to select" - }, - "divisor": { - "type": "string", - "description": "Specifies the output format of the exposed resources, defaults to \"1\"" - } - } - }, - "v1.FCVolumeSource": { - "id": "v1.FCVolumeSource", - "description": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", - "required": [ - "targetWWNs", - "lun" - ], - "properties": { - "targetWWNs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: FC target worldwide names (WWNs)" - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "Required: FC target lun number" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.AzureFileVolumeSource": { - "id": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", - "required": [ - "secretName", - "shareName" - ], - "properties": { - "secretName": { - "type": "string", - "description": "the name of secret that contains Azure Storage Account Name and Key" - }, - "shareName": { - "type": "string", - "description": "Share Name" - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.ConfigMapVolumeSource": { - "id": "v1.ConfigMapVolumeSource", - "description": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.VsphereVirtualDiskVolumeSource": { - "id": "v1.VsphereVirtualDiskVolumeSource", - "description": "Represents a vSphere volume resource.", - "required": [ - "volumePath" - ], - "properties": { - "volumePath": { - "type": "string", - "description": "Path that identifies vSphere volume vmdk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.QuobyteVolumeSource": { - "id": "v1.QuobyteVolumeSource", - "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", - "required": [ - "registry", - "volume" - ], - "properties": { - "registry": { - "type": "string", - "description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes" - }, - "volume": { - "type": "string", - "description": "Volume is a string that references an already created Quobyte volume by name." - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false." - }, - "user": { - "type": "string", - "description": "User to map volume access to Defaults to serivceaccount user" - }, - "group": { - "type": "string", - "description": "Group to map volume access to Default is no group" - } - } - }, - "v1.AzureDiskVolumeSource": { - "id": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", - "required": [ - "diskName", - "diskURI" - ], - "properties": { - "diskName": { - "type": "string", - "description": "The Name of the data disk in the blob storage" - }, - "diskURI": { - "type": "string", - "description": "The URI the data disk in the blob storage" - }, - "cachingMode": { - "$ref": "v1.AzureDataDiskCachingMode", - "description": "Host Caching mode: None, Read Only, Read Write." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.AzureDataDiskCachingMode": { - "id": "v1.AzureDataDiskCachingMode", - "properties": {} - }, - "v1.PhotonPersistentDiskVolumeSource": { - "id": "v1.PhotonPersistentDiskVolumeSource", - "description": "Represents a Photon Controller persistent disk resource.", - "required": [ - "pdID" - ], - "properties": { - "pdID": { - "type": "string", - "description": "ID that identifies Photon Controller persistent disk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.ProjectedVolumeSource": { - "id": "v1.ProjectedVolumeSource", - "description": "Represents a projected volume source", - "required": [ - "sources" - ], - "properties": { - "sources": { - "type": "array", - "items": { - "$ref": "v1.VolumeProjection" - }, - "description": "list of volume projections" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.VolumeProjection": { - "id": "v1.VolumeProjection", - "description": "Projection that may be projected along with other supported volume types", - "properties": { - "secret": { - "$ref": "v1.SecretProjection", - "description": "information about the secret data to project" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIProjection", - "description": "information about the downwardAPI data to project" - }, - "configMap": { - "$ref": "v1.ConfigMapProjection", - "description": "information about the configMap data to project" - } - } - }, - "v1.SecretProjection": { - "id": "v1.SecretProjection", - "description": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or its key must be defined" - } - } - }, - "v1.DownwardAPIProjection": { - "id": "v1.DownwardAPIProjection", - "description": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of DownwardAPIVolume file" - } - } - }, - "v1.ConfigMapProjection": { - "id": "v1.ConfigMapProjection", - "description": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.PortworxVolumeSource": { - "id": "v1.PortworxVolumeSource", - "description": "PortworxVolumeSource represents a Portworx volume resource.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "VolumeID uniquely identifies a Portworx volume" - }, - "fsType": { - "type": "string", - "description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.ScaleIOVolumeSource": { - "id": "v1.ScaleIOVolumeSource", - "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", - "required": [ - "gateway", - "system", - "secretRef" - ], - "properties": { - "gateway": { - "type": "string", - "description": "The host address of the ScaleIO API Gateway." - }, - "system": { - "type": "string", - "description": "The name of the storage system as configured in ScaleIO." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." - }, - "sslEnabled": { - "type": "boolean", - "description": "Flag to enable/disable SSL communication with Gateway, default false" - }, - "protectionDomain": { - "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." - }, - "storagePool": { - "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." - }, - "storageMode": { - "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." - }, - "volumeName": { - "type": "string", - "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.Container": { - "id": "v1.Container", - "description": "A single application container that you want to run within a pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated." - }, - "image": { - "type": "string", - "description": "Docker image name. More info: http://kubernetes.io/docs/user-guide/images" - }, - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "args": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "workingDir": { - "type": "string", - "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." - }, - "ports": { - "type": "array", - "items": { - "$ref": "v1.ContainerPort" - }, - "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated." - }, - "envFrom": { - "type": "array", - "items": { - "$ref": "v1.EnvFromSource" - }, - "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated." - }, - "env": { - "type": "array", - "items": { - "$ref": "v1.EnvVar" - }, - "description": "List of environment variables to set in the container. Cannot be updated." - }, - "resources": { - "$ref": "v1.ResourceRequirements", - "description": "Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources" - }, - "volumeMounts": { - "type": "array", - "items": { - "$ref": "v1.VolumeMount" - }, - "description": "Pod volumes to mount into the container's filesystem. Cannot be updated." - }, - "livenessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "readinessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "lifecycle": { - "$ref": "v1.Lifecycle", - "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated." - }, - "terminationMessagePath": { - "type": "string", - "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated." - }, - "terminationMessagePolicy": { - "type": "string", - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated." - }, - "imagePullPolicy": { - "type": "string", - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/images#updating-images" - }, - "securityContext": { - "$ref": "v1.SecurityContext", - "description": "Security options the pod should run with. More info: http://releases.k8s.io/HEAD/docs/design/security_context.md" - }, - "stdin": { - "type": "boolean", - "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false." - }, - "stdinOnce": { - "type": "boolean", - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false" - }, - "tty": { - "type": "boolean", - "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false." - } - } - }, - "v1.ContainerPort": { - "id": "v1.ContainerPort", - "description": "ContainerPort represents a network port in a single container.", - "required": [ - "containerPort" - ], - "properties": { - "name": { - "type": "string", - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." - }, - "hostPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." - }, - "containerPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536." - }, - "protocol": { - "type": "string", - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\"." - }, - "hostIP": { - "type": "string", - "description": "What host IP to bind the external port to." - } - } - }, - "v1.EnvFromSource": { - "id": "v1.EnvFromSource", - "description": "EnvFromSource represents the source of a set of ConfigMaps", - "properties": { - "prefix": { - "type": "string", - "description": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER." - }, - "configMapRef": { - "$ref": "v1.ConfigMapEnvSource", - "description": "The ConfigMap to select from" - }, - "secretRef": { - "$ref": "v1.SecretEnvSource", - "description": "The Secret to select from" - } - } - }, - "v1.ConfigMapEnvSource": { - "id": "v1.ConfigMapEnvSource", - "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap must be defined" - } - } - }, - "v1.SecretEnvSource": { - "id": "v1.SecretEnvSource", - "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret must be defined" - } - } - }, - "v1.EnvVar": { - "id": "v1.EnvVar", - "description": "EnvVar represents an environment variable present in a Container.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the environment variable. Must be a C_IDENTIFIER." - }, - "value": { - "type": "string", - "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." - }, - "valueFrom": { - "$ref": "v1.EnvVarSource", - "description": "Source for the environment variable's value. Cannot be used if value is not empty." - } - } - }, - "v1.EnvVarSource": { - "id": "v1.EnvVarSource", - "description": "EnvVarSource represents a source for the value of an EnvVar.", - "properties": { - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "configMapKeyRef": { - "$ref": "v1.ConfigMapKeySelector", - "description": "Selects a key of a ConfigMap." - }, - "secretKeyRef": { - "$ref": "v1.SecretKeySelector", - "description": "Selects a key of a secret in the pod's namespace" - } - } - }, - "v1.ConfigMapKeySelector": { - "id": "v1.ConfigMapKeySelector", - "description": "Selects a key from a ConfigMap.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key to select." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's key must be defined" - } - } - }, - "v1.SecretKeySelector": { - "id": "v1.SecretKeySelector", - "description": "SecretKeySelector selects a key of a Secret.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key of the secret to select from. Must be a valid secret key." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's key must be defined" - } - } - }, - "v1.ResourceRequirements": { - "id": "v1.ResourceRequirements", - "description": "ResourceRequirements describes the compute resource requirements.", - "properties": { - "limits": { - "type": "object", - "description": "Limits describes the maximum amount of compute resources allowed. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - }, - "requests": { - "type": "object", - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - } - } - }, - "v1.VolumeMount": { - "id": "v1.VolumeMount", - "description": "VolumeMount describes a mounting of a Volume within a container.", - "required": [ - "name", - "mountPath" - ], - "properties": { - "name": { - "type": "string", - "description": "This must match the Name of a Volume." - }, - "readOnly": { - "type": "boolean", - "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." - }, - "mountPath": { - "type": "string", - "description": "Path within the container at which the volume should be mounted. Must not contain ':'." - }, - "subPath": { - "type": "string", - "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." - } - } - }, - "v1.Probe": { - "id": "v1.Probe", - "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - }, - "initialDelaySeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after the container has started before liveness probes are initiated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "periodSeconds": { - "type": "integer", - "format": "int32", - "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." - }, - "successThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1." - }, - "failureThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." - } - } - }, - "v1.ExecAction": { - "id": "v1.ExecAction", - "description": "ExecAction describes a \"run in container\" action.", - "properties": { - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." - } - } - }, - "v1.HTTPGetAction": { - "id": "v1.HTTPGetAction", - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "required": [ - "port" - ], - "properties": { - "path": { - "type": "string", - "description": "Path to access on the HTTP server." - }, - "port": { - "type": "string", - "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - }, - "host": { - "type": "string", - "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." - }, - "scheme": { - "type": "string", - "description": "Scheme to use for connecting to the host. Defaults to HTTP." - }, - "httpHeaders": { - "type": "array", - "items": { - "$ref": "v1.HTTPHeader" - }, - "description": "Custom headers to set in the request. HTTP allows repeated headers." - } - } - }, - "v1.HTTPHeader": { - "id": "v1.HTTPHeader", - "description": "HTTPHeader describes a custom header to be used in HTTP probes", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "description": "The header field name" - }, - "value": { - "type": "string", - "description": "The header field value" - } - } - }, - "v1.TCPSocketAction": { - "id": "v1.TCPSocketAction", - "description": "TCPSocketAction describes an action based on opening a socket", - "required": [ - "port" - ], - "properties": { - "port": { - "type": "string", - "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - } - } - }, - "v1.Lifecycle": { - "id": "v1.Lifecycle", - "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", - "properties": { - "postStart": { - "$ref": "v1.Handler", - "description": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - }, - "preStop": { - "$ref": "v1.Handler", - "description": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - } - } - }, - "v1.Handler": { - "id": "v1.Handler", - "description": "Handler defines a specific action that should be taken", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - } - } - }, - "v1.SecurityContext": { - "id": "v1.SecurityContext", - "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", - "properties": { - "capabilities": { - "$ref": "v1.Capabilities", - "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." - }, - "privileged": { - "type": "boolean", - "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false." - }, - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "readOnlyRootFilesystem": { - "type": "boolean", - "description": "Whether this container has a read-only root filesystem. Default is false." - } - } - }, - "v1.Capabilities": { - "id": "v1.Capabilities", - "description": "Adds and removes POSIX capabilities from running containers.", - "properties": { - "add": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Added capabilities" - }, - "drop": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Removed capabilities" - } - } - }, - "v1.Capability": { - "id": "v1.Capability", - "properties": {} - }, - "v1.SELinuxOptions": { - "id": "v1.SELinuxOptions", - "description": "SELinuxOptions are the labels to be applied to the container", - "properties": { - "user": { - "type": "string", - "description": "User is a SELinux user label that applies to the container." - }, - "role": { - "type": "string", - "description": "Role is a SELinux role label that applies to the container." - }, - "type": { - "type": "string", - "description": "Type is a SELinux type label that applies to the container." - }, - "level": { - "type": "string", - "description": "Level is SELinux level label that applies to the container." - } - } - }, - "v1.PodSecurityContext": { - "id": "v1.PodSecurityContext", - "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "properties": { - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "supplementalGroups": { - "type": "array", - "items": { - "type": "integer" - }, - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container." - }, - "fsGroup": { - "type": "integer", - "format": "int64", - "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw " - } - } - }, - "v1.Affinity": { - "id": "v1.Affinity", - "description": "Affinity is a group of affinity scheduling rules.", - "properties": { - "nodeAffinity": { - "$ref": "v1.NodeAffinity", - "description": "Describes node affinity scheduling rules for the pod." - }, - "podAffinity": { - "$ref": "v1.PodAffinity", - "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." - }, - "podAntiAffinity": { - "$ref": "v1.PodAntiAffinity", - "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." - } - } - }, - "v1.NodeAffinity": { - "id": "v1.NodeAffinity", - "description": "Node affinity is a group of node affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "$ref": "v1.NodeSelector", - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PreferredSchedulingTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.NodeSelector": { - "id": "v1.NodeSelector", - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "required": [ - "nodeSelectorTerms" - ], - "properties": { - "nodeSelectorTerms": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorTerm" - }, - "description": "Required. A list of node selector terms. The terms are ORed." - } - } - }, - "v1.NodeSelectorTerm": { - "id": "v1.NodeSelectorTerm", - "description": "A null or empty node selector term matches no objects.", - "required": [ - "matchExpressions" - ], - "properties": { - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorRequirement" - }, - "description": "Required. A list of node selector requirements. The requirements are ANDed." - } - } - }, - "v1.NodeSelectorRequirement": { - "id": "v1.NodeSelectorRequirement", - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "The label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." - } - } - }, - "v1.PreferredSchedulingTerm": { - "id": "v1.PreferredSchedulingTerm", - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", - "required": [ - "weight", - "preference" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100." - }, - "preference": { - "$ref": "v1.NodeSelectorTerm", - "description": "A node selector term, associated with the corresponding weight." - } - } - }, - "v1.PodAffinity": { - "id": "v1.PodAffinity", - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.PodAffinityTerm": { - "id": "v1.PodAffinityTerm", - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \u003ctopologyKey\u003e tches that of any node on which a pod of the set of pods is running", - "properties": { - "labelSelector": { - "$ref": "v1.LabelSelector", - "description": "A label query over a set of resources, in this case pods." - }, - "namespaces": { - "type": "array", - "items": { - "type": "string" - }, - "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"" - }, - "topologyKey": { - "type": "string", - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed." - } - } - }, - "v1.WeightedPodAffinityTerm": { - "id": "v1.WeightedPodAffinityTerm", - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "required": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." - }, - "podAffinityTerm": { - "$ref": "v1.PodAffinityTerm", - "description": "Required. A pod affinity term, associated with the corresponding weight." - } - } - }, - "v1.PodAntiAffinity": { - "id": "v1.PodAntiAffinity", - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.Toleration": { - "id": "v1.Toleration", - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "properties": { - "key": { - "type": "string", - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys." - }, - "operator": { - "type": "string", - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category." - }, - "value": { - "type": "string", - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string." - }, - "effect": { - "type": "string", - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." - }, - "tolerationSeconds": { - "type": "integer", - "format": "int64", - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system." - } - } - }, - "v1beta1.DaemonSetUpdateStrategy": { - "id": "v1beta1.DaemonSetUpdateStrategy", - "properties": { - "type": { - "type": "string", - "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete." - }, - "rollingUpdate": { - "$ref": "v1beta1.RollingUpdateDaemonSet", - "description": "Rolling update config params. Present only if type = \"RollingUpdate\"." - } - } - }, - "v1beta1.RollingUpdateDaemonSet": { - "id": "v1beta1.RollingUpdateDaemonSet", - "description": "Spec to control the desired behavior of daemon set rolling update.", - "properties": { - "maxUnavailable": { - "type": "string", - "description": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update." - } - } - }, - "v1beta1.DaemonSetStatus": { - "id": "v1beta1.DaemonSetStatus", - "description": "DaemonSetStatus represents the current status of a daemon set.", - "required": [ - "currentNumberScheduled", - "numberMisscheduled", - "desiredNumberScheduled", - "numberReady" - ], - "properties": { - "currentNumberScheduled": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md" - }, - "numberMisscheduled": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md" - }, - "desiredNumberScheduled": { - "type": "integer", - "format": "int32", - "description": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md" - }, - "numberReady": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready." - }, - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "The most recent generation observed by the daemon set controller." - }, - "updatedNumberScheduled": { - "type": "integer", - "format": "int32", - "description": "The total number of nodes that are running updated daemon pod" - }, - "numberAvailable": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)" - }, - "numberUnavailable": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)" - } - } - }, - "v1.Status": { - "id": "v1.Status", - "description": "Status is a return value for calls that don't return other objects.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "status": { - "type": "string", - "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "message": { - "type": "string", - "description": "A human-readable description of the status of this operation." - }, - "reason": { - "type": "string", - "description": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it." - }, - "details": { - "$ref": "v1.StatusDetails", - "description": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type." - }, - "code": { - "type": "integer", - "format": "int32", - "description": "Suggested HTTP return code for this status, 0 if not set." - } - } - }, - "v1.StatusDetails": { - "id": "v1.StatusDetails", - "description": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", - "properties": { - "name": { - "type": "string", - "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described)." - }, - "group": { - "type": "string", - "description": "The group attribute of the resource associated with the status StatusReason." - }, - "kind": { - "type": "string", - "description": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "causes": { - "type": "array", - "items": { - "$ref": "v1.StatusCause" - }, - "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes." - }, - "retryAfterSeconds": { - "type": "integer", - "format": "int32", - "description": "If specified, the time in seconds before the operation should be retried." - } - } - }, - "v1.StatusCause": { - "id": "v1.StatusCause", - "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", - "properties": { - "reason": { - "type": "string", - "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available." - }, - "message": { - "type": "string", - "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader." - }, - "field": { - "type": "string", - "description": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"" - } - } - }, - "v1.WatchEvent": { - "id": "v1.WatchEvent", - "required": [ - "type", - "object" - ], - "properties": { - "type": { - "type": "string" - }, - "object": { - "type": "string" - } - } - }, - "v1.Patch": { - "id": "v1.Patch", - "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", - "properties": {} - }, - "v1.DeleteOptions": { - "id": "v1.DeleteOptions", - "description": "DeleteOptions may be provided when deleting an API object.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "gracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately." - }, - "preconditions": { - "$ref": "v1.Preconditions", - "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned." - }, - "orphanDependents": { - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both." - }, - "propagationPolicy": { - "$ref": "v1.DeletionPropagation", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy." - } - } - }, - "v1.Preconditions": { - "id": "v1.Preconditions", - "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", - "properties": { - "uid": { - "$ref": "types.UID", - "description": "Specifies the target UID." - } - } - }, - "types.UID": { - "id": "types.UID", - "properties": {} - }, - "v1.DeletionPropagation": { - "id": "v1.DeletionPropagation", - "properties": {} - }, - "v1beta1.DeploymentList": { - "id": "v1beta1.DeploymentList", - "description": "DeploymentList is a list of Deployments.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata." - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.Deployment" - }, - "description": "Items is the list of Deployments." - } - } - }, - "v1beta1.Deployment": { - "id": "v1beta1.Deployment", - "description": "Deployment enables declarative updates for Pods and ReplicaSets.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata." - }, - "spec": { - "$ref": "v1beta1.DeploymentSpec", - "description": "Specification of the desired behavior of the Deployment." - }, - "status": { - "$ref": "v1beta1.DeploymentStatus", - "description": "Most recently observed status of the Deployment." - } - } - }, - "v1beta1.DeploymentSpec": { - "id": "v1beta1.DeploymentSpec", - "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", - "required": [ - "template" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1." - }, - "selector": { - "$ref": "v1.LabelSelector", - "description": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment." - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template describes the pods that will be created." - }, - "strategy": { - "$ref": "v1beta1.DeploymentStrategy", - "description": "The deployment strategy to use to replace existing pods with new ones." - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)" - }, - "revisionHistoryLimit": { - "type": "integer", - "format": "int32", - "description": "The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified." - }, - "paused": { - "type": "boolean", - "description": "Indicates that the deployment is paused and will not be processed by the deployment controller." - }, - "rollbackTo": { - "$ref": "v1beta1.RollbackConfig", - "description": "The config this deployment is rolling back to. Will be cleared after rollback is done." - }, - "progressDeadlineSeconds": { - "type": "integer", - "format": "int32", - "description": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. This is not set by default." - } - } - }, - "v1beta1.DeploymentStrategy": { - "id": "v1beta1.DeploymentStrategy", - "description": "DeploymentStrategy describes how to replace existing pods with new ones.", - "properties": { - "type": { - "type": "string", - "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate." - }, - "rollingUpdate": { - "$ref": "v1beta1.RollingUpdateDeployment", - "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate." - } - } - }, - "v1beta1.RollingUpdateDeployment": { - "id": "v1beta1.RollingUpdateDeployment", - "description": "Spec to control the desired behavior of rolling update.", - "properties": { - "maxUnavailable": { - "type": "string", - "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1 is used. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods." - }, - "maxSurge": { - "type": "string", - "description": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. By default, a value of 1 is used. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods." - } - } - }, - "v1beta1.RollbackConfig": { - "id": "v1beta1.RollbackConfig", - "properties": { - "revision": { - "type": "integer", - "format": "int64", - "description": "The revision to rollback to. If set to 0, rollbck to the last revision." - } - } - }, - "v1beta1.DeploymentStatus": { - "id": "v1beta1.DeploymentStatus", - "description": "DeploymentStatus is the most recently observed status of the Deployment.", - "properties": { - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "The generation observed by the deployment controller." - }, - "replicas": { - "type": "integer", - "format": "int32", - "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector)." - }, - "updatedReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec." - }, - "readyReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of ready pods targeted by this deployment." - }, - "availableReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment." - }, - "unavailableReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of unavailable pods targeted by this deployment." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1beta1.DeploymentCondition" - }, - "description": "Represents the latest available observations of a deployment's current state." - } - } - }, - "v1beta1.DeploymentCondition": { - "id": "v1beta1.DeploymentCondition", - "description": "DeploymentCondition describes the state of a deployment at a certain point.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of deployment condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastUpdateTime": { - "type": "string", - "description": "The last time this condition was updated." - }, - "lastTransitionTime": { - "type": "string", - "description": "Last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "The reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about the transition." - } - } - }, - "v1beta1.DeploymentRollback": { - "id": "v1beta1.DeploymentRollback", - "description": "DeploymentRollback stores the information required to rollback a deployment.", - "required": [ - "name", - "rollbackTo" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "name": { - "type": "string", - "description": "Required: This must match the Name of a deployment." - }, - "updatedAnnotations": { - "type": "object", - "description": "The annotations to be updated to a deployment" - }, - "rollbackTo": { - "$ref": "v1beta1.RollbackConfig", - "description": "The config of this deployment rollback." - } - } - }, - "v1beta1.Scale": { - "id": "v1beta1.Scale", - "description": "represents a scaling request for a resource.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata." - }, - "spec": { - "$ref": "v1beta1.ScaleSpec", - "description": "defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status." - }, - "status": { - "$ref": "v1beta1.ScaleStatus", - "description": "current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only." - } - } - }, - "v1beta1.ScaleSpec": { - "id": "v1beta1.ScaleSpec", - "description": "describes the attributes of a scale subresource", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "desired number of instances for the scaled object." - } - } - }, - "v1beta1.ScaleStatus": { - "id": "v1beta1.ScaleStatus", - "description": "represents the current status of a scale subresource.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "actual number of observed instances of the scaled object." - }, - "selector": { - "type": "object", - "description": "label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "targetSelector": { - "type": "string", - "description": "label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - } - } - }, - "v1beta1.IngressList": { - "id": "v1beta1.IngressList", - "description": "IngressList is a collection of Ingress.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.Ingress" - }, - "description": "Items is the list of Ingress." - } - } - }, - "v1beta1.Ingress": { - "id": "v1beta1.Ingress", - "description": "Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.IngressSpec", - "description": "Spec is the desired state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1beta1.IngressStatus", - "description": "Status is the current state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1beta1.IngressSpec": { - "id": "v1beta1.IngressSpec", - "description": "IngressSpec describes the Ingress the user wishes to exist.", - "properties": { - "backend": { - "$ref": "v1beta1.IngressBackend", - "description": "A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default." - }, - "tls": { - "type": "array", - "items": { - "$ref": "v1beta1.IngressTLS" - }, - "description": "TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI." - }, - "rules": { - "type": "array", - "items": { - "$ref": "v1beta1.IngressRule" - }, - "description": "A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend." - } - } - }, - "v1beta1.IngressBackend": { - "id": "v1beta1.IngressBackend", - "description": "IngressBackend describes all endpoints for a given service and port.", - "required": [ - "serviceName", - "servicePort" - ], - "properties": { - "serviceName": { - "type": "string", - "description": "Specifies the name of the referenced service." - }, - "servicePort": { - "type": "string", - "description": "Specifies the port of the referenced service." - } - } - }, - "v1beta1.IngressTLS": { - "id": "v1beta1.IngressTLS", - "description": "IngressTLS describes the transport layer security associated with an Ingress.", - "properties": { - "hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified." - }, - "secretName": { - "type": "string", - "description": "SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing." - } - } - }, - "v1beta1.IngressRule": { - "id": "v1beta1.IngressRule", - "description": "IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.", - "properties": { - "host": { - "type": "string", - "description": "Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n\t IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue." - }, - "http": { - "$ref": "v1beta1.HTTPIngressRuleValue" - } - } - }, - "v1beta1.HTTPIngressRuleValue": { - "id": "v1beta1.HTTPIngressRuleValue", - "description": "HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://\u003chost\u003e/\u003cpath\u003e?\u003csearchpart\u003e -\u003e backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.", - "required": [ - "paths" - ], - "properties": { - "paths": { - "type": "array", - "items": { - "$ref": "v1beta1.HTTPIngressPath" - }, - "description": "A collection of paths that map requests to backends." - } - } - }, - "v1beta1.HTTPIngressPath": { - "id": "v1beta1.HTTPIngressPath", - "description": "HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.", - "required": [ - "backend" - ], - "properties": { - "path": { - "type": "string", - "description": "Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend." - }, - "backend": { - "$ref": "v1beta1.IngressBackend", - "description": "Backend defines the referenced service endpoint to which the traffic will be forwarded to." - } - } - }, - "v1beta1.IngressStatus": { - "id": "v1beta1.IngressStatus", - "description": "IngressStatus describe the current state of the Ingress.", - "properties": { - "loadBalancer": { - "$ref": "v1.LoadBalancerStatus", - "description": "LoadBalancer contains the current status of the load-balancer." - } - } - }, - "v1.LoadBalancerStatus": { - "id": "v1.LoadBalancerStatus", - "description": "LoadBalancerStatus represents the status of a load-balancer.", - "properties": { - "ingress": { - "type": "array", - "items": { - "$ref": "v1.LoadBalancerIngress" - }, - "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points." - } - } - }, - "v1.LoadBalancerIngress": { - "id": "v1.LoadBalancerIngress", - "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", - "properties": { - "ip": { - "type": "string", - "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)" - }, - "hostname": { - "type": "string", - "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)" - } - } - }, - "v1beta1.NetworkPolicyList": { - "id": "v1beta1.NetworkPolicyList", - "description": "Network Policy List is a list of NetworkPolicy objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicy" - }, - "description": "Items is a list of schema objects." - } - } - }, - "v1beta1.NetworkPolicy": { - "id": "v1beta1.NetworkPolicy", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.NetworkPolicySpec", - "description": "Specification of the desired behavior for this NetworkPolicy." - } - } - }, - "v1beta1.NetworkPolicySpec": { - "id": "v1beta1.NetworkPolicySpec", - "required": [ - "podSelector" - ], - "properties": { - "podSelector": { - "$ref": "v1.LabelSelector", - "description": "Selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace." - }, - "ingress": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicyIngressRule" - }, - "description": "List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not affect ingress isolation. If this field is present and contains at least one rule, this policy allows any traffic which matches at least one of the ingress rules in this list." - } - } - }, - "v1beta1.NetworkPolicyIngressRule": { - "id": "v1beta1.NetworkPolicyIngressRule", - "description": "This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.", - "properties": { - "ports": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicyPort" - }, - "description": "List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is not provided, this rule matches all ports (traffic not restricted by port). If this field is empty, this rule matches no ports (no traffic matches). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list." - }, - "from": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicyPeer" - }, - "description": "List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is not provided, this rule matches all sources (traffic not restricted by source). If this field is empty, this rule matches no sources (no traffic matches). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list." - } - } - }, - "v1beta1.NetworkPolicyPort": { - "id": "v1beta1.NetworkPolicyPort", - "properties": { - "protocol": { - "$ref": "v1.Protocol", - "description": "Optional. The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP." - }, - "port": { - "type": "string", - "description": "If specified, the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched." - } - } - }, - "v1.Protocol": { - "id": "v1.Protocol", - "properties": {} - }, - "v1beta1.NetworkPolicyPeer": { - "id": "v1beta1.NetworkPolicyPeer", - "properties": { - "podSelector": { - "$ref": "v1.LabelSelector", - "description": "This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. If not provided, this selector selects no pods. If present but empty, this selector selects all pods in this namespace." - }, - "namespaceSelector": { - "$ref": "v1.LabelSelector", - "description": "Selects Namespaces using cluster scoped-labels. This matches all pods in all namespaces selected by this label selector. This field follows standard label selector semantics. If omitted, this selector selects no namespaces. If present but empty, this selector selects all namespaces." - } - } - }, - "v1beta1.PodSecurityPolicyList": { - "id": "v1beta1.PodSecurityPolicyList", - "description": "Pod Security Policy List is a list of PodSecurityPolicy objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.PodSecurityPolicy" - }, - "description": "Items is a list of schema objects." - } - } - }, - "v1beta1.PodSecurityPolicy": { - "id": "v1beta1.PodSecurityPolicy", - "description": "Pod Security Policy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.PodSecurityPolicySpec", - "description": "spec defines the policy enforced." - } - } - }, - "v1beta1.PodSecurityPolicySpec": { - "id": "v1beta1.PodSecurityPolicySpec", - "description": "Pod Security Policy Spec defines the policy enforced.", - "required": [ - "seLinux", - "runAsUser", - "supplementalGroups", - "fsGroup" - ], - "properties": { - "privileged": { - "type": "boolean", - "description": "privileged determines if a pod can request to be run as privileged." - }, - "defaultAddCapabilities": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "DefaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capabiility in both DefaultAddCapabilities and RequiredDropCapabilities." - }, - "requiredDropCapabilities": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "RequiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added." - }, - "allowedCapabilities": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "AllowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities." - }, - "volumes": { - "type": "array", - "items": { - "$ref": "v1beta1.FSType" - }, - "description": "volumes is a white list of allowed volume plugins. Empty indicates that all plugins may be used." - }, - "hostNetwork": { - "type": "boolean", - "description": "hostNetwork determines if the policy allows the use of HostNetwork in the pod spec." - }, - "hostPorts": { - "type": "array", - "items": { - "$ref": "v1beta1.HostPortRange" - }, - "description": "hostPorts determines which host port ranges are allowed to be exposed." - }, - "hostPID": { - "type": "boolean", - "description": "hostPID determines if the policy allows the use of HostPID in the pod spec." - }, - "hostIPC": { - "type": "boolean", - "description": "hostIPC determines if the policy allows the use of HostIPC in the pod spec." - }, - "seLinux": { - "$ref": "v1beta1.SELinuxStrategyOptions", - "description": "seLinux is the strategy that will dictate the allowable labels that may be set." - }, - "runAsUser": { - "$ref": "v1beta1.RunAsUserStrategyOptions", - "description": "runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set." - }, - "supplementalGroups": { - "$ref": "v1beta1.SupplementalGroupsStrategyOptions", - "description": "SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext." - }, - "fsGroup": { - "$ref": "v1beta1.FSGroupStrategyOptions", - "description": "FSGroup is the strategy that will dictate what fs group is used by the SecurityContext." - }, - "readOnlyRootFilesystem": { - "type": "boolean", - "description": "ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to." - } - } - }, - "v1beta1.FSType": { - "id": "v1beta1.FSType", - "properties": {} - }, - "v1beta1.HostPortRange": { - "id": "v1beta1.HostPortRange", - "description": "Host Port Range defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.", - "required": [ - "min", - "max" - ], - "properties": { - "min": { - "type": "integer", - "format": "int32", - "description": "min is the start of the range, inclusive." - }, - "max": { - "type": "integer", - "format": "int32", - "description": "max is the end of the range, inclusive." - } - } - }, - "v1beta1.SELinuxStrategyOptions": { - "id": "v1beta1.SELinuxStrategyOptions", - "description": "SELinux Strategy Options defines the strategy type and any options used to create the strategy.", - "required": [ - "rule" - ], - "properties": { - "rule": { - "type": "string", - "description": "type is the strategy that will dictate the allowable labels that may be set." - }, - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "seLinuxOptions required to run as; required for MustRunAs More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context" - } - } - }, - "v1beta1.RunAsUserStrategyOptions": { - "id": "v1beta1.RunAsUserStrategyOptions", - "description": "Run A sUser Strategy Options defines the strategy type and any options used to create the strategy.", - "required": [ - "rule" - ], - "properties": { - "rule": { - "type": "string", - "description": "Rule is the strategy that will dictate the allowable RunAsUser values that may be set." - }, - "ranges": { - "type": "array", - "items": { - "$ref": "v1beta1.IDRange" - }, - "description": "Ranges are the allowed ranges of uids that may be used." - } - } - }, - "v1beta1.IDRange": { - "id": "v1beta1.IDRange", - "description": "ID Range provides a min/max of an allowed range of IDs.", - "required": [ - "min", - "max" - ], - "properties": { - "min": { - "type": "integer", - "format": "int64", - "description": "Min is the start of the range, inclusive." - }, - "max": { - "type": "integer", - "format": "int64", - "description": "Max is the end of the range, inclusive." - } - } - }, - "v1beta1.SupplementalGroupsStrategyOptions": { - "id": "v1beta1.SupplementalGroupsStrategyOptions", - "description": "SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.", - "properties": { - "rule": { - "type": "string", - "description": "Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext." - }, - "ranges": { - "type": "array", - "items": { - "$ref": "v1beta1.IDRange" - }, - "description": "Ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end." - } - } - }, - "v1beta1.FSGroupStrategyOptions": { - "id": "v1beta1.FSGroupStrategyOptions", - "description": "FSGroupStrategyOptions defines the strategy type and options used to create the strategy.", - "properties": { - "rule": { - "type": "string", - "description": "Rule is the strategy that will dictate what FSGroup is used in the SecurityContext." - }, - "ranges": { - "type": "array", - "items": { - "$ref": "v1beta1.IDRange" - }, - "description": "Ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end." - } - } - }, - "v1beta1.ReplicaSetList": { - "id": "v1beta1.ReplicaSetList", - "description": "ReplicaSetList is a collection of ReplicaSets.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.ReplicaSet" - }, - "description": "List of ReplicaSets. More info: http://kubernetes.io/docs/user-guide/replication-controller" - } - } - }, - "v1beta1.ReplicaSet": { - "id": "v1beta1.ReplicaSet", - "description": "ReplicaSet represents the configuration of a ReplicaSet.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.ReplicaSetSpec", - "description": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1beta1.ReplicaSetStatus", - "description": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1beta1.ReplicaSetSpec": { - "id": "v1beta1.ReplicaSetSpec", - "description": "ReplicaSetSpec is the specification of a ReplicaSet.", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)" - }, - "selector": { - "$ref": "v1.LabelSelector", - "description": "Selector is a label query over pods that should match the replica count. If the selector is empty, it is defaulted to the labels present on the pod template. Label keys and values that must match in order to be controlled by this replica set. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template" - } - } - }, - "v1beta1.ReplicaSetStatus": { - "id": "v1beta1.ReplicaSetStatus", - "description": "ReplicaSetStatus represents the current status of a ReplicaSet.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the most recently oberved number of replicas. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "fullyLabeledReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of pods that have labels matching the labels of the pod template of the replicaset." - }, - "readyReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of ready replicas for this replica set." - }, - "availableReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of available replicas (ready for at least minReadySeconds) for this replica set." - }, - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1beta1.ReplicaSetCondition" - }, - "description": "Represents the latest available observations of a replica set's current state." - } - } - }, - "v1beta1.ReplicaSetCondition": { - "id": "v1beta1.ReplicaSetCondition", - "description": "ReplicaSetCondition describes the state of a replica set at a certain point.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of replica set condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastTransitionTime": { - "type": "string", - "description": "The last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "The reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about the transition." - } - } - }, - "v1beta1.ThirdPartyResourceList": { - "id": "v1beta1.ThirdPartyResourceList", - "description": "ThirdPartyResourceList is a list of ThirdPartyResources.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata." - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.ThirdPartyResource" - }, - "description": "Items is the list of ThirdPartyResources." - } - } - }, - "v1beta1.ThirdPartyResource": { - "id": "v1beta1.ThirdPartyResource", - "description": "A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource types to the API. It consists of one or more Versions of the api.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata" - }, - "description": { - "type": "string", - "description": "Description is the description of this object." - }, - "versions": { - "type": "array", - "items": { - "$ref": "v1beta1.APIVersion" - }, - "description": "Versions are versions for this third party object" - } - } - }, - "v1beta1.APIVersion": { - "id": "v1beta1.APIVersion", - "description": "An APIVersion represents a single concrete version of an object model.", - "properties": { - "name": { - "type": "string", - "description": "Name of this version (e.g. 'v1')." - } - } - }, - "v1.APIResourceList": { - "id": "v1.APIResourceList", - "description": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", - "required": [ - "groupVersion", - "resources" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "groupVersion": { - "type": "string", - "description": "groupVersion is the group and version this APIResourceList is for." - }, - "resources": { - "type": "array", - "items": { - "$ref": "v1.APIResource" - }, - "description": "resources contains the name of the resources and if they are namespaced." - } - } - }, - "v1.APIResource": { - "id": "v1.APIResource", - "description": "APIResource specifies the name of a resource and whether it is namespaced.", - "required": [ - "name", - "namespaced", - "kind", - "verbs" - ], - "properties": { - "name": { - "type": "string", - "description": "name is the name of the resource." - }, - "namespaced": { - "type": "boolean", - "description": "namespaced indicates if a resource is namespaced or not." - }, - "kind": { - "type": "string", - "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')" - }, - "verbs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)" - }, - "shortNames": { - "type": "array", - "items": { - "type": "string" - }, - "description": "shortNames is a list of suggested short names of the resource." - } - } - } - } - } \ No newline at end of file diff --git a/k8s/.kube/schema/v1.6.6/schema566625515 b/k8s/.kube/schema/v1.6.6/schema566625515 deleted file mode 100644 index a112d2e67..000000000 --- a/k8s/.kube/schema/v1.6.6/schema566625515 +++ /dev/null @@ -1,9977 +0,0 @@ -{ - "swaggerVersion": "1.2", - "apiVersion": "extensions/v1beta1", - "basePath": "https://10.240.255.15:443", - "resourcePath": "/apis/extensions/v1beta1", - "info": { - "title": "", - "description": "" - }, - "apis": [ - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSetList", - "method": "GET", - "summary": "list or watch objects of kind DaemonSet", - "nickname": "listNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "POST", - "summary": "create a DaemonSet", - "nickname": "createNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DaemonSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of DaemonSet", - "nickname": "deletecollectionNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of DaemonSet", - "nickname": "watchNamespacedDaemonSetList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSet", - "method": "GET", - "summary": "read the specified DaemonSet", - "nickname": "readNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PUT", - "summary": "replace the specified DaemonSet", - "nickname": "replaceNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DaemonSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PATCH", - "summary": "partially update the specified DaemonSet", - "nickname": "patchNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a DaemonSet", - "nickname": "deleteNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind DaemonSet", - "nickname": "watchNamespacedDaemonSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSetList", - "method": "GET", - "summary": "list or watch objects of kind DaemonSet", - "nickname": "listDaemonSetForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/daemonsets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of DaemonSet", - "nickname": "watchDaemonSetListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DaemonSet", - "method": "GET", - "summary": "read status of the specified DaemonSet", - "nickname": "readNamespacedDaemonSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PUT", - "summary": "replace status of the specified DaemonSet", - "nickname": "replaceNamespacedDaemonSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DaemonSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.DaemonSet", - "method": "PATCH", - "summary": "partially update status of the specified DaemonSet", - "nickname": "patchNamespacedDaemonSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DaemonSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DaemonSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DeploymentList", - "method": "GET", - "summary": "list or watch objects of kind Deployment", - "nickname": "listNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DeploymentList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "POST", - "summary": "create a Deployment", - "nickname": "createNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Deployment", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Deployment", - "nickname": "deletecollectionNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Deployment", - "nickname": "watchNamespacedDeploymentList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Deployment", - "method": "GET", - "summary": "read the specified Deployment", - "nickname": "readNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PUT", - "summary": "replace the specified Deployment", - "nickname": "replaceNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Deployment", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PATCH", - "summary": "partially update the specified Deployment", - "nickname": "patchNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Deployment", - "nickname": "deleteNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Deployment", - "nickname": "watchNamespacedDeployment", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DeploymentList", - "method": "GET", - "summary": "list or watch objects of kind Deployment", - "nickname": "listDeploymentForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DeploymentList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/deployments", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Deployment", - "nickname": "watchDeploymentListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/rollback", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.DeploymentRollback", - "method": "POST", - "summary": "create rollback of a DeploymentRollback", - "nickname": "createNamespacedDeploymentRollbackRollback", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.DeploymentRollback", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the DeploymentRollback", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.DeploymentRollback" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/scale", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Deployment", - "method": "GET", - "summary": "read status of the specified Deployment", - "nickname": "readNamespacedDeploymentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PUT", - "summary": "replace status of the specified Deployment", - "nickname": "replaceNamespacedDeploymentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Deployment", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Deployment", - "method": "PATCH", - "summary": "partially update status of the specified Deployment", - "nickname": "patchNamespacedDeploymentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Deployment", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Deployment" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.IngressList", - "method": "GET", - "summary": "list or watch objects of kind Ingress", - "nickname": "listNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.IngressList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "POST", - "summary": "create an Ingress", - "nickname": "createNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Ingress", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Ingress", - "nickname": "deletecollectionNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Ingress", - "nickname": "watchNamespacedIngressList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Ingress", - "method": "GET", - "summary": "read the specified Ingress", - "nickname": "readNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PUT", - "summary": "replace the specified Ingress", - "nickname": "replaceNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Ingress", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PATCH", - "summary": "partially update the specified Ingress", - "nickname": "patchNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete an Ingress", - "nickname": "deleteNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Ingress", - "nickname": "watchNamespacedIngress", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.IngressList", - "method": "GET", - "summary": "list or watch objects of kind Ingress", - "nickname": "listIngressForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.IngressList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/ingresses", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Ingress", - "nickname": "watchIngressListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Ingress", - "method": "GET", - "summary": "read status of the specified Ingress", - "nickname": "readNamespacedIngressStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PUT", - "summary": "replace status of the specified Ingress", - "nickname": "replaceNamespacedIngressStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Ingress", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Ingress", - "method": "PATCH", - "summary": "partially update status of the specified Ingress", - "nickname": "patchNamespacedIngressStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Ingress", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Ingress" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.NetworkPolicyList", - "method": "GET", - "summary": "list or watch objects of kind NetworkPolicy", - "nickname": "listNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicyList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.NetworkPolicy", - "method": "POST", - "summary": "create a NetworkPolicy", - "nickname": "createNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.NetworkPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of NetworkPolicy", - "nickname": "deletecollectionNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of NetworkPolicy", - "nickname": "watchNamespacedNetworkPolicyList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.NetworkPolicy", - "method": "GET", - "summary": "read the specified NetworkPolicy", - "nickname": "readNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.NetworkPolicy", - "method": "PUT", - "summary": "replace the specified NetworkPolicy", - "nickname": "replaceNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.NetworkPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.NetworkPolicy", - "method": "PATCH", - "summary": "partially update the specified NetworkPolicy", - "nickname": "patchNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a NetworkPolicy", - "nickname": "deleteNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind NetworkPolicy", - "nickname": "watchNamespacedNetworkPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the NetworkPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.NetworkPolicyList", - "method": "GET", - "summary": "list or watch objects of kind NetworkPolicy", - "nickname": "listNetworkPolicyForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.NetworkPolicyList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/networkpolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of NetworkPolicy", - "nickname": "watchNetworkPolicyListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/podsecuritypolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.PodSecurityPolicyList", - "method": "GET", - "summary": "list or watch objects of kind PodSecurityPolicy", - "nickname": "listPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicyList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.PodSecurityPolicy", - "method": "POST", - "summary": "create a PodSecurityPolicy", - "nickname": "createPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.PodSecurityPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PodSecurityPolicy", - "nickname": "deletecollectionPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/podsecuritypolicies", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PodSecurityPolicy", - "nickname": "watchPodSecurityPolicyList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/podsecuritypolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.PodSecurityPolicy", - "method": "GET", - "summary": "read the specified PodSecurityPolicy", - "nickname": "readPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.PodSecurityPolicy", - "method": "PUT", - "summary": "replace the specified PodSecurityPolicy", - "nickname": "replacePodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.PodSecurityPolicy", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.PodSecurityPolicy", - "method": "PATCH", - "summary": "partially update the specified PodSecurityPolicy", - "nickname": "patchPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.PodSecurityPolicy" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PodSecurityPolicy", - "nickname": "deletePodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/podsecuritypolicies/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PodSecurityPolicy", - "nickname": "watchPodSecurityPolicy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodSecurityPolicy", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSetList", - "method": "GET", - "summary": "list or watch objects of kind ReplicaSet", - "nickname": "listNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "POST", - "summary": "create a ReplicaSet", - "nickname": "createNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ReplicaSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ReplicaSet", - "nickname": "deletecollectionNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicaSet", - "nickname": "watchNamespacedReplicaSetList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSet", - "method": "GET", - "summary": "read the specified ReplicaSet", - "nickname": "readNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PUT", - "summary": "replace the specified ReplicaSet", - "nickname": "replaceNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ReplicaSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PATCH", - "summary": "partially update the specified ReplicaSet", - "nickname": "patchNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ReplicaSet", - "nickname": "deleteNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ReplicaSet", - "nickname": "watchNamespacedReplicaSet", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSetList", - "method": "GET", - "summary": "list or watch objects of kind ReplicaSet", - "nickname": "listReplicaSetForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSetList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/replicasets", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicaSet", - "nickname": "watchReplicaSetListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/scale", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/status", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ReplicaSet", - "method": "GET", - "summary": "read status of the specified ReplicaSet", - "nickname": "readNamespacedReplicaSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PUT", - "summary": "replace status of the specified ReplicaSet", - "nickname": "replaceNamespacedReplicaSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ReplicaSet", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ReplicaSet", - "method": "PATCH", - "summary": "partially update status of the specified ReplicaSet", - "nickname": "patchNamespacedReplicaSetStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicaSet", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ReplicaSet" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/namespaces/{namespace}/replicationcontrollers/{name}/scale", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/thirdpartyresources", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ThirdPartyResourceList", - "method": "GET", - "summary": "list or watch objects of kind ThirdPartyResource", - "nickname": "listThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResourceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ThirdPartyResource", - "method": "POST", - "summary": "create a ThirdPartyResource", - "nickname": "createThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ThirdPartyResource", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ThirdPartyResource", - "nickname": "deletecollectionThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/thirdpartyresources", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ThirdPartyResource", - "nickname": "watchThirdPartyResourceList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/thirdpartyresources/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1beta1.ThirdPartyResource", - "method": "GET", - "summary": "read the specified ThirdPartyResource", - "nickname": "readThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ThirdPartyResource", - "method": "PUT", - "summary": "replace the specified ThirdPartyResource", - "nickname": "replaceThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.ThirdPartyResource", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1beta1.ThirdPartyResource", - "method": "PATCH", - "summary": "partially update the specified ThirdPartyResource", - "nickname": "patchThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.ThirdPartyResource" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ThirdPartyResource", - "nickname": "deleteThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1/watch/thirdpartyresources/{name}", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ThirdPartyResource", - "nickname": "watchThirdPartyResource", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ThirdPartyResource", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/apis/extensions/v1beta1", - "description": "API at /apis/extensions/v1beta1", - "operations": [ - { - "type": "v1.APIResourceList", - "method": "GET", - "summary": "get available resources", - "nickname": "getAPIResources", - "parameters": [], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ] - } - ] - } - ], - "models": { - "v1beta1.DaemonSetList": { - "id": "v1beta1.DaemonSetList", - "description": "DaemonSetList is a collection of daemon sets.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.DaemonSet" - }, - "description": "A list of daemon sets." - } - } - }, - "v1.ListMeta": { - "id": "v1.ListMeta", - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "properties": { - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "resourceVersion": { - "type": "string", - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - } - } - }, - "v1beta1.DaemonSet": { - "id": "v1beta1.DaemonSet", - "description": "DaemonSet represents the configuration of a daemon set.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.DaemonSetSpec", - "description": "The desired behavior of this daemon set. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1beta1.DaemonSetStatus", - "description": "The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ObjectMeta": { - "id": "v1.ObjectMeta", - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "properties": { - "name": { - "type": "string", - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "generateName": { - "type": "string", - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency" - }, - "namespace": { - "type": "string", - "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces" - }, - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "uid": { - "type": "string", - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "resourceVersion": { - "type": "string", - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - }, - "generation": { - "type": "integer", - "format": "int64", - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only." - }, - "creationTimestamp": { - "type": "string", - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionTimestamp": { - "type": "string", - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only." - }, - "labels": { - "type": "object", - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels" - }, - "annotations": { - "type": "object", - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations" - }, - "ownerReferences": { - "type": "array", - "items": { - "$ref": "v1.OwnerReference" - }, - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller." - }, - "finalizers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed." - }, - "clusterName": { - "type": "string", - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request." - } - } - }, - "v1.OwnerReference": { - "id": "v1.OwnerReference", - "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "API version of the referent." - }, - "kind": { - "type": "string", - "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "uid": { - "type": "string", - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "controller": { - "type": "boolean", - "description": "If true, this reference points to the managing controller." - }, - "blockOwnerDeletion": { - "type": "boolean", - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned." - } - } - }, - "v1beta1.DaemonSetSpec": { - "id": "v1beta1.DaemonSetSpec", - "description": "DaemonSetSpec is the specification of a daemon set.", - "required": [ - "template" - ], - "properties": { - "selector": { - "$ref": "v1.LabelSelector", - "description": "A label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template" - }, - "updateStrategy": { - "$ref": "v1beta1.DaemonSetUpdateStrategy", - "description": "An update strategy to replace existing DaemonSet pods with new pods." - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)." - }, - "templateGeneration": { - "type": "integer", - "format": "int64", - "description": "A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation." - } - } - }, - "v1.LabelSelector": { - "id": "v1.LabelSelector", - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "properties": { - "matchLabels": { - "type": "object", - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - }, - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.LabelSelectorRequirement" - }, - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed." - } - } - }, - "v1.LabelSelectorRequirement": { - "id": "v1.LabelSelectorRequirement", - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "key is the label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - } - } - }, - "v1.PodTemplateSpec": { - "id": "v1.PodTemplateSpec", - "description": "PodTemplateSpec describes the data a pod should have when created from a template", - "properties": { - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PodSpec", - "description": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.PodSpec": { - "id": "v1.PodSpec", - "description": "PodSpec is a description of a pod.", - "required": [ - "containers" - ], - "properties": { - "volumes": { - "type": "array", - "items": { - "$ref": "v1.Volume" - }, - "description": "List of volumes that can be mounted by containers belonging to the pod. More info: http://kubernetes.io/docs/user-guide/volumes" - }, - "initContainers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "containers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "restartPolicy": { - "type": "string", - "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy" - }, - "terminationGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds." - }, - "activeDeadlineSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer." - }, - "dnsPolicy": { - "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." - }, - "nodeSelector": { - "type": "object", - "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: http://kubernetes.io/docs/user-guide/node-selection/README" - }, - "serviceAccountName": { - "type": "string", - "description": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md" - }, - "serviceAccount": { - "type": "string", - "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead." - }, - "automountServiceAccountToken": { - "type": "boolean", - "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted." - }, - "nodeName": { - "type": "string", - "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements." - }, - "hostNetwork": { - "type": "boolean", - "description": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false." - }, - "hostPID": { - "type": "boolean", - "description": "Use the host's pid namespace. Optional: Default to false." - }, - "hostIPC": { - "type": "boolean", - "description": "Use the host's ipc namespace. Optional: Default to false." - }, - "securityContext": { - "$ref": "v1.PodSecurityContext", - "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field." - }, - "imagePullSecrets": { - "type": "array", - "items": { - "$ref": "v1.LocalObjectReference" - }, - "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod" - }, - "hostname": { - "type": "string", - "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value." - }, - "subdomain": { - "type": "string", - "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all." - }, - "affinity": { - "$ref": "v1.Affinity", - "description": "If specified, the pod's scheduling constraints" - }, - "schedulerName": { - "type": "string", - "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler." - }, - "tolerations": { - "type": "array", - "items": { - "$ref": "v1.Toleration" - }, - "description": "If specified, the pod's tolerations." - } - } - }, - "v1.Volume": { - "id": "v1.Volume", - "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "hostPath": { - "$ref": "v1.HostPathVolumeSource", - "description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - }, - "emptyDir": { - "$ref": "v1.EmptyDirVolumeSource", - "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - }, - "gcePersistentDisk": { - "$ref": "v1.GCEPersistentDiskVolumeSource", - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "awsElasticBlockStore": { - "$ref": "v1.AWSElasticBlockStoreVolumeSource", - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "gitRepo": { - "$ref": "v1.GitRepoVolumeSource", - "description": "GitRepo represents a git repository at a particular revision." - }, - "secret": { - "$ref": "v1.SecretVolumeSource", - "description": "Secret represents a secret that should populate this volume. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "nfs": { - "$ref": "v1.NFSVolumeSource", - "description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "iscsi": { - "$ref": "v1.ISCSIVolumeSource", - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md" - }, - "glusterfs": { - "$ref": "v1.GlusterfsVolumeSource", - "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md" - }, - "persistentVolumeClaim": { - "$ref": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "rbd": { - "$ref": "v1.RBDVolumeSource", - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md" - }, - "flexVolume": { - "$ref": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future." - }, - "cinder": { - "$ref": "v1.CinderVolumeSource", - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "cephfs": { - "$ref": "v1.CephFSVolumeSource", - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - }, - "flocker": { - "$ref": "v1.FlockerVolumeSource", - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPI represents downward API about the pod that should populate this volume" - }, - "fc": { - "$ref": "v1.FCVolumeSource", - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - }, - "azureFile": { - "$ref": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod." - }, - "configMap": { - "$ref": "v1.ConfigMapVolumeSource", - "description": "ConfigMap represents a configMap that should populate this volume" - }, - "vsphereVolume": { - "$ref": "v1.VsphereVirtualDiskVolumeSource", - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - }, - "quobyte": { - "$ref": "v1.QuobyteVolumeSource", - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - }, - "azureDisk": { - "$ref": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - }, - "photonPersistentDisk": { - "$ref": "v1.PhotonPersistentDiskVolumeSource", - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - }, - "projected": { - "$ref": "v1.ProjectedVolumeSource", - "description": "Items for all in one resources secrets, configmaps, and downward API" - }, - "portworxVolume": { - "$ref": "v1.PortworxVolumeSource", - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" - }, - "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - } - } - }, - "v1.HostPathVolumeSource": { - "id": "v1.HostPathVolumeSource", - "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Path of the directory on the host. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - } - } - }, - "v1.EmptyDirVolumeSource": { - "id": "v1.EmptyDirVolumeSource", - "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", - "properties": { - "medium": { - "type": "string", - "description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - } - } - }, - "v1.GCEPersistentDiskVolumeSource": { - "id": "v1.GCEPersistentDiskVolumeSource", - "description": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", - "required": [ - "pdName" - ], - "properties": { - "pdName": { - "type": "string", - "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - } - } - }, - "v1.AWSElasticBlockStoreVolumeSource": { - "id": "v1.AWSElasticBlockStoreVolumeSource", - "description": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." - }, - "readOnly": { - "type": "boolean", - "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - } - } - }, - "v1.GitRepoVolumeSource": { - "id": "v1.GitRepoVolumeSource", - "description": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.", - "required": [ - "repository" - ], - "properties": { - "repository": { - "type": "string", - "description": "Repository URL" - }, - "revision": { - "type": "string", - "description": "Commit hash for the specified revision." - }, - "directory": { - "type": "string", - "description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name." - } - } - }, - "v1.SecretVolumeSource": { - "id": "v1.SecretVolumeSource", - "description": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", - "properties": { - "secretName": { - "type": "string", - "description": "Name of the secret in the pod's namespace to use. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's keys must be defined" - } - } - }, - "v1.KeyToPath": { - "id": "v1.KeyToPath", - "description": "Maps a string key to a path within a volume.", - "required": [ - "key", - "path" - ], - "properties": { - "key": { - "type": "string", - "description": "The key to project." - }, - "path": { - "type": "string", - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.NFSVolumeSource": { - "id": "v1.NFSVolumeSource", - "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", - "required": [ - "server", - "path" - ], - "properties": { - "server": { - "type": "string", - "description": "Server is the hostname or IP address of the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "path": { - "type": "string", - "description": "Path that is exported by the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - } - } - }, - "v1.ISCSIVolumeSource": { - "id": "v1.ISCSIVolumeSource", - "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", - "required": [ - "targetPortal", - "iqn", - "lun" - ], - "properties": { - "targetPortal": { - "type": "string", - "description": "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - }, - "iqn": { - "type": "string", - "description": "Target iSCSI Qualified Name." - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "iSCSI target lun number." - }, - "iscsiInterface": { - "type": "string", - "description": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport." - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#iscsi" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false." - }, - "portals": { - "type": "array", - "items": { - "type": "string" - }, - "description": "iSCSI target portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - } - } - }, - "v1.GlusterfsVolumeSource": { - "id": "v1.GlusterfsVolumeSource", - "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "endpoints", - "path" - ], - "properties": { - "endpoints": { - "type": "string", - "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "path": { - "type": "string", - "description": "Path is the Glusterfs volume path. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - } - } - }, - "v1.PersistentVolumeClaimVolumeSource": { - "id": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "type": "string", - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "readOnly": { - "type": "boolean", - "description": "Will force the ReadOnly setting in VolumeMounts. Default false." - } - } - }, - "v1.RBDVolumeSource": { - "id": "v1.RBDVolumeSource", - "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", - "required": [ - "monitors", - "image" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A collection of Ceph monitors. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "image": { - "type": "string", - "description": "The rados image name. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#rbd" - }, - "pool": { - "type": "string", - "description": "The rados pool name. Default is rbd. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it." - }, - "user": { - "type": "string", - "description": "The rados user name. Default is admin. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "keyring": { - "type": "string", - "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - } - } - }, - "v1.LocalObjectReference": { - "id": "v1.LocalObjectReference", - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - } - } - }, - "v1.FlexVolumeSource": { - "id": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", - "required": [ - "driver" - ], - "properties": { - "driver": { - "type": "string", - "description": "Driver is the name of the driver to use for this volume." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - }, - "options": { - "type": "object", - "description": "Optional: Extra command options if any." - } - } - }, - "v1.CinderVolumeSource": { - "id": "v1.CinderVolumeSource", - "description": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "volume id used to identify the volume in cinder More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - } - } - }, - "v1.CephFSVolumeSource": { - "id": "v1.CephFSVolumeSource", - "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "monitors" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: Monitors is a collection of Ceph monitors More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "path": { - "type": "string", - "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /" - }, - "user": { - "type": "string", - "description": "Optional: User is the rados user name, default is admin More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretFile": { - "type": "string", - "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - } - } - }, - "v1.FlockerVolumeSource": { - "id": "v1.FlockerVolumeSource", - "description": "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", - "properties": { - "datasetName": { - "type": "string", - "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated" - }, - "datasetUUID": { - "type": "string", - "description": "UUID of the dataset. This is unique identifier of a Flocker dataset" - } - } - }, - "v1.DownwardAPIVolumeSource": { - "id": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of downward API volume file" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.DownwardAPIVolumeFile": { - "id": "v1.DownwardAPIVolumeFile", - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" - }, - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.ObjectFieldSelector": { - "id": "v1.ObjectFieldSelector", - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - }, - "fieldPath": { - "type": "string", - "description": "Path of the field to select in the specified API version." - } - } - }, - "v1.ResourceFieldSelector": { - "id": "v1.ResourceFieldSelector", - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "type": "string", - "description": "Container name: required for volumes, optional for env vars" - }, - "resource": { - "type": "string", - "description": "Required: resource to select" - }, - "divisor": { - "type": "string", - "description": "Specifies the output format of the exposed resources, defaults to \"1\"" - } - } - }, - "v1.FCVolumeSource": { - "id": "v1.FCVolumeSource", - "description": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", - "required": [ - "targetWWNs", - "lun" - ], - "properties": { - "targetWWNs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: FC target worldwide names (WWNs)" - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "Required: FC target lun number" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.AzureFileVolumeSource": { - "id": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", - "required": [ - "secretName", - "shareName" - ], - "properties": { - "secretName": { - "type": "string", - "description": "the name of secret that contains Azure Storage Account Name and Key" - }, - "shareName": { - "type": "string", - "description": "Share Name" - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.ConfigMapVolumeSource": { - "id": "v1.ConfigMapVolumeSource", - "description": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.VsphereVirtualDiskVolumeSource": { - "id": "v1.VsphereVirtualDiskVolumeSource", - "description": "Represents a vSphere volume resource.", - "required": [ - "volumePath" - ], - "properties": { - "volumePath": { - "type": "string", - "description": "Path that identifies vSphere volume vmdk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.QuobyteVolumeSource": { - "id": "v1.QuobyteVolumeSource", - "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", - "required": [ - "registry", - "volume" - ], - "properties": { - "registry": { - "type": "string", - "description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes" - }, - "volume": { - "type": "string", - "description": "Volume is a string that references an already created Quobyte volume by name." - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false." - }, - "user": { - "type": "string", - "description": "User to map volume access to Defaults to serivceaccount user" - }, - "group": { - "type": "string", - "description": "Group to map volume access to Default is no group" - } - } - }, - "v1.AzureDiskVolumeSource": { - "id": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", - "required": [ - "diskName", - "diskURI" - ], - "properties": { - "diskName": { - "type": "string", - "description": "The Name of the data disk in the blob storage" - }, - "diskURI": { - "type": "string", - "description": "The URI the data disk in the blob storage" - }, - "cachingMode": { - "$ref": "v1.AzureDataDiskCachingMode", - "description": "Host Caching mode: None, Read Only, Read Write." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.AzureDataDiskCachingMode": { - "id": "v1.AzureDataDiskCachingMode", - "properties": {} - }, - "v1.PhotonPersistentDiskVolumeSource": { - "id": "v1.PhotonPersistentDiskVolumeSource", - "description": "Represents a Photon Controller persistent disk resource.", - "required": [ - "pdID" - ], - "properties": { - "pdID": { - "type": "string", - "description": "ID that identifies Photon Controller persistent disk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.ProjectedVolumeSource": { - "id": "v1.ProjectedVolumeSource", - "description": "Represents a projected volume source", - "required": [ - "sources" - ], - "properties": { - "sources": { - "type": "array", - "items": { - "$ref": "v1.VolumeProjection" - }, - "description": "list of volume projections" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.VolumeProjection": { - "id": "v1.VolumeProjection", - "description": "Projection that may be projected along with other supported volume types", - "properties": { - "secret": { - "$ref": "v1.SecretProjection", - "description": "information about the secret data to project" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIProjection", - "description": "information about the downwardAPI data to project" - }, - "configMap": { - "$ref": "v1.ConfigMapProjection", - "description": "information about the configMap data to project" - } - } - }, - "v1.SecretProjection": { - "id": "v1.SecretProjection", - "description": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or its key must be defined" - } - } - }, - "v1.DownwardAPIProjection": { - "id": "v1.DownwardAPIProjection", - "description": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of DownwardAPIVolume file" - } - } - }, - "v1.ConfigMapProjection": { - "id": "v1.ConfigMapProjection", - "description": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.PortworxVolumeSource": { - "id": "v1.PortworxVolumeSource", - "description": "PortworxVolumeSource represents a Portworx volume resource.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "VolumeID uniquely identifies a Portworx volume" - }, - "fsType": { - "type": "string", - "description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.ScaleIOVolumeSource": { - "id": "v1.ScaleIOVolumeSource", - "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", - "required": [ - "gateway", - "system", - "secretRef" - ], - "properties": { - "gateway": { - "type": "string", - "description": "The host address of the ScaleIO API Gateway." - }, - "system": { - "type": "string", - "description": "The name of the storage system as configured in ScaleIO." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." - }, - "sslEnabled": { - "type": "boolean", - "description": "Flag to enable/disable SSL communication with Gateway, default false" - }, - "protectionDomain": { - "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." - }, - "storagePool": { - "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." - }, - "storageMode": { - "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." - }, - "volumeName": { - "type": "string", - "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.Container": { - "id": "v1.Container", - "description": "A single application container that you want to run within a pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated." - }, - "image": { - "type": "string", - "description": "Docker image name. More info: http://kubernetes.io/docs/user-guide/images" - }, - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "args": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "workingDir": { - "type": "string", - "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." - }, - "ports": { - "type": "array", - "items": { - "$ref": "v1.ContainerPort" - }, - "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated." - }, - "envFrom": { - "type": "array", - "items": { - "$ref": "v1.EnvFromSource" - }, - "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated." - }, - "env": { - "type": "array", - "items": { - "$ref": "v1.EnvVar" - }, - "description": "List of environment variables to set in the container. Cannot be updated." - }, - "resources": { - "$ref": "v1.ResourceRequirements", - "description": "Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources" - }, - "volumeMounts": { - "type": "array", - "items": { - "$ref": "v1.VolumeMount" - }, - "description": "Pod volumes to mount into the container's filesystem. Cannot be updated." - }, - "livenessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "readinessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "lifecycle": { - "$ref": "v1.Lifecycle", - "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated." - }, - "terminationMessagePath": { - "type": "string", - "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated." - }, - "terminationMessagePolicy": { - "type": "string", - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated." - }, - "imagePullPolicy": { - "type": "string", - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/images#updating-images" - }, - "securityContext": { - "$ref": "v1.SecurityContext", - "description": "Security options the pod should run with. More info: http://releases.k8s.io/HEAD/docs/design/security_context.md" - }, - "stdin": { - "type": "boolean", - "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false." - }, - "stdinOnce": { - "type": "boolean", - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false" - }, - "tty": { - "type": "boolean", - "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false." - } - } - }, - "v1.ContainerPort": { - "id": "v1.ContainerPort", - "description": "ContainerPort represents a network port in a single container.", - "required": [ - "containerPort" - ], - "properties": { - "name": { - "type": "string", - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." - }, - "hostPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." - }, - "containerPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536." - }, - "protocol": { - "type": "string", - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\"." - }, - "hostIP": { - "type": "string", - "description": "What host IP to bind the external port to." - } - } - }, - "v1.EnvFromSource": { - "id": "v1.EnvFromSource", - "description": "EnvFromSource represents the source of a set of ConfigMaps", - "properties": { - "prefix": { - "type": "string", - "description": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER." - }, - "configMapRef": { - "$ref": "v1.ConfigMapEnvSource", - "description": "The ConfigMap to select from" - }, - "secretRef": { - "$ref": "v1.SecretEnvSource", - "description": "The Secret to select from" - } - } - }, - "v1.ConfigMapEnvSource": { - "id": "v1.ConfigMapEnvSource", - "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap must be defined" - } - } - }, - "v1.SecretEnvSource": { - "id": "v1.SecretEnvSource", - "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret must be defined" - } - } - }, - "v1.EnvVar": { - "id": "v1.EnvVar", - "description": "EnvVar represents an environment variable present in a Container.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the environment variable. Must be a C_IDENTIFIER." - }, - "value": { - "type": "string", - "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." - }, - "valueFrom": { - "$ref": "v1.EnvVarSource", - "description": "Source for the environment variable's value. Cannot be used if value is not empty." - } - } - }, - "v1.EnvVarSource": { - "id": "v1.EnvVarSource", - "description": "EnvVarSource represents a source for the value of an EnvVar.", - "properties": { - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "configMapKeyRef": { - "$ref": "v1.ConfigMapKeySelector", - "description": "Selects a key of a ConfigMap." - }, - "secretKeyRef": { - "$ref": "v1.SecretKeySelector", - "description": "Selects a key of a secret in the pod's namespace" - } - } - }, - "v1.ConfigMapKeySelector": { - "id": "v1.ConfigMapKeySelector", - "description": "Selects a key from a ConfigMap.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key to select." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's key must be defined" - } - } - }, - "v1.SecretKeySelector": { - "id": "v1.SecretKeySelector", - "description": "SecretKeySelector selects a key of a Secret.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key of the secret to select from. Must be a valid secret key." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's key must be defined" - } - } - }, - "v1.ResourceRequirements": { - "id": "v1.ResourceRequirements", - "description": "ResourceRequirements describes the compute resource requirements.", - "properties": { - "limits": { - "type": "object", - "description": "Limits describes the maximum amount of compute resources allowed. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - }, - "requests": { - "type": "object", - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - } - } - }, - "v1.VolumeMount": { - "id": "v1.VolumeMount", - "description": "VolumeMount describes a mounting of a Volume within a container.", - "required": [ - "name", - "mountPath" - ], - "properties": { - "name": { - "type": "string", - "description": "This must match the Name of a Volume." - }, - "readOnly": { - "type": "boolean", - "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." - }, - "mountPath": { - "type": "string", - "description": "Path within the container at which the volume should be mounted. Must not contain ':'." - }, - "subPath": { - "type": "string", - "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." - } - } - }, - "v1.Probe": { - "id": "v1.Probe", - "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - }, - "initialDelaySeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after the container has started before liveness probes are initiated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "periodSeconds": { - "type": "integer", - "format": "int32", - "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." - }, - "successThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1." - }, - "failureThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." - } - } - }, - "v1.ExecAction": { - "id": "v1.ExecAction", - "description": "ExecAction describes a \"run in container\" action.", - "properties": { - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." - } - } - }, - "v1.HTTPGetAction": { - "id": "v1.HTTPGetAction", - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "required": [ - "port" - ], - "properties": { - "path": { - "type": "string", - "description": "Path to access on the HTTP server." - }, - "port": { - "type": "string", - "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - }, - "host": { - "type": "string", - "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." - }, - "scheme": { - "type": "string", - "description": "Scheme to use for connecting to the host. Defaults to HTTP." - }, - "httpHeaders": { - "type": "array", - "items": { - "$ref": "v1.HTTPHeader" - }, - "description": "Custom headers to set in the request. HTTP allows repeated headers." - } - } - }, - "v1.HTTPHeader": { - "id": "v1.HTTPHeader", - "description": "HTTPHeader describes a custom header to be used in HTTP probes", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "description": "The header field name" - }, - "value": { - "type": "string", - "description": "The header field value" - } - } - }, - "v1.TCPSocketAction": { - "id": "v1.TCPSocketAction", - "description": "TCPSocketAction describes an action based on opening a socket", - "required": [ - "port" - ], - "properties": { - "port": { - "type": "string", - "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - } - } - }, - "v1.Lifecycle": { - "id": "v1.Lifecycle", - "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", - "properties": { - "postStart": { - "$ref": "v1.Handler", - "description": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - }, - "preStop": { - "$ref": "v1.Handler", - "description": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - } - } - }, - "v1.Handler": { - "id": "v1.Handler", - "description": "Handler defines a specific action that should be taken", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - } - } - }, - "v1.SecurityContext": { - "id": "v1.SecurityContext", - "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", - "properties": { - "capabilities": { - "$ref": "v1.Capabilities", - "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." - }, - "privileged": { - "type": "boolean", - "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false." - }, - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "readOnlyRootFilesystem": { - "type": "boolean", - "description": "Whether this container has a read-only root filesystem. Default is false." - } - } - }, - "v1.Capabilities": { - "id": "v1.Capabilities", - "description": "Adds and removes POSIX capabilities from running containers.", - "properties": { - "add": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Added capabilities" - }, - "drop": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Removed capabilities" - } - } - }, - "v1.Capability": { - "id": "v1.Capability", - "properties": {} - }, - "v1.SELinuxOptions": { - "id": "v1.SELinuxOptions", - "description": "SELinuxOptions are the labels to be applied to the container", - "properties": { - "user": { - "type": "string", - "description": "User is a SELinux user label that applies to the container." - }, - "role": { - "type": "string", - "description": "Role is a SELinux role label that applies to the container." - }, - "type": { - "type": "string", - "description": "Type is a SELinux type label that applies to the container." - }, - "level": { - "type": "string", - "description": "Level is SELinux level label that applies to the container." - } - } - }, - "v1.PodSecurityContext": { - "id": "v1.PodSecurityContext", - "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "properties": { - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "supplementalGroups": { - "type": "array", - "items": { - "type": "integer" - }, - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container." - }, - "fsGroup": { - "type": "integer", - "format": "int64", - "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw " - } - } - }, - "v1.Affinity": { - "id": "v1.Affinity", - "description": "Affinity is a group of affinity scheduling rules.", - "properties": { - "nodeAffinity": { - "$ref": "v1.NodeAffinity", - "description": "Describes node affinity scheduling rules for the pod." - }, - "podAffinity": { - "$ref": "v1.PodAffinity", - "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." - }, - "podAntiAffinity": { - "$ref": "v1.PodAntiAffinity", - "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." - } - } - }, - "v1.NodeAffinity": { - "id": "v1.NodeAffinity", - "description": "Node affinity is a group of node affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "$ref": "v1.NodeSelector", - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PreferredSchedulingTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.NodeSelector": { - "id": "v1.NodeSelector", - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "required": [ - "nodeSelectorTerms" - ], - "properties": { - "nodeSelectorTerms": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorTerm" - }, - "description": "Required. A list of node selector terms. The terms are ORed." - } - } - }, - "v1.NodeSelectorTerm": { - "id": "v1.NodeSelectorTerm", - "description": "A null or empty node selector term matches no objects.", - "required": [ - "matchExpressions" - ], - "properties": { - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorRequirement" - }, - "description": "Required. A list of node selector requirements. The requirements are ANDed." - } - } - }, - "v1.NodeSelectorRequirement": { - "id": "v1.NodeSelectorRequirement", - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "The label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." - } - } - }, - "v1.PreferredSchedulingTerm": { - "id": "v1.PreferredSchedulingTerm", - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", - "required": [ - "weight", - "preference" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100." - }, - "preference": { - "$ref": "v1.NodeSelectorTerm", - "description": "A node selector term, associated with the corresponding weight." - } - } - }, - "v1.PodAffinity": { - "id": "v1.PodAffinity", - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.PodAffinityTerm": { - "id": "v1.PodAffinityTerm", - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \u003ctopologyKey\u003e tches that of any node on which a pod of the set of pods is running", - "properties": { - "labelSelector": { - "$ref": "v1.LabelSelector", - "description": "A label query over a set of resources, in this case pods." - }, - "namespaces": { - "type": "array", - "items": { - "type": "string" - }, - "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"" - }, - "topologyKey": { - "type": "string", - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed." - } - } - }, - "v1.WeightedPodAffinityTerm": { - "id": "v1.WeightedPodAffinityTerm", - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "required": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." - }, - "podAffinityTerm": { - "$ref": "v1.PodAffinityTerm", - "description": "Required. A pod affinity term, associated with the corresponding weight." - } - } - }, - "v1.PodAntiAffinity": { - "id": "v1.PodAntiAffinity", - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.Toleration": { - "id": "v1.Toleration", - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "properties": { - "key": { - "type": "string", - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys." - }, - "operator": { - "type": "string", - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category." - }, - "value": { - "type": "string", - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string." - }, - "effect": { - "type": "string", - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." - }, - "tolerationSeconds": { - "type": "integer", - "format": "int64", - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system." - } - } - }, - "v1beta1.DaemonSetUpdateStrategy": { - "id": "v1beta1.DaemonSetUpdateStrategy", - "properties": { - "type": { - "type": "string", - "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete." - }, - "rollingUpdate": { - "$ref": "v1beta1.RollingUpdateDaemonSet", - "description": "Rolling update config params. Present only if type = \"RollingUpdate\"." - } - } - }, - "v1beta1.RollingUpdateDaemonSet": { - "id": "v1beta1.RollingUpdateDaemonSet", - "description": "Spec to control the desired behavior of daemon set rolling update.", - "properties": { - "maxUnavailable": { - "type": "string", - "description": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update." - } - } - }, - "v1beta1.DaemonSetStatus": { - "id": "v1beta1.DaemonSetStatus", - "description": "DaemonSetStatus represents the current status of a daemon set.", - "required": [ - "currentNumberScheduled", - "numberMisscheduled", - "desiredNumberScheduled", - "numberReady" - ], - "properties": { - "currentNumberScheduled": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md" - }, - "numberMisscheduled": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md" - }, - "desiredNumberScheduled": { - "type": "integer", - "format": "int32", - "description": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md" - }, - "numberReady": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready." - }, - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "The most recent generation observed by the daemon set controller." - }, - "updatedNumberScheduled": { - "type": "integer", - "format": "int32", - "description": "The total number of nodes that are running updated daemon pod" - }, - "numberAvailable": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)" - }, - "numberUnavailable": { - "type": "integer", - "format": "int32", - "description": "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)" - } - } - }, - "v1.Status": { - "id": "v1.Status", - "description": "Status is a return value for calls that don't return other objects.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "status": { - "type": "string", - "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "message": { - "type": "string", - "description": "A human-readable description of the status of this operation." - }, - "reason": { - "type": "string", - "description": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it." - }, - "details": { - "$ref": "v1.StatusDetails", - "description": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type." - }, - "code": { - "type": "integer", - "format": "int32", - "description": "Suggested HTTP return code for this status, 0 if not set." - } - } - }, - "v1.StatusDetails": { - "id": "v1.StatusDetails", - "description": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", - "properties": { - "name": { - "type": "string", - "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described)." - }, - "group": { - "type": "string", - "description": "The group attribute of the resource associated with the status StatusReason." - }, - "kind": { - "type": "string", - "description": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "causes": { - "type": "array", - "items": { - "$ref": "v1.StatusCause" - }, - "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes." - }, - "retryAfterSeconds": { - "type": "integer", - "format": "int32", - "description": "If specified, the time in seconds before the operation should be retried." - } - } - }, - "v1.StatusCause": { - "id": "v1.StatusCause", - "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", - "properties": { - "reason": { - "type": "string", - "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available." - }, - "message": { - "type": "string", - "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader." - }, - "field": { - "type": "string", - "description": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"" - } - } - }, - "v1.WatchEvent": { - "id": "v1.WatchEvent", - "required": [ - "type", - "object" - ], - "properties": { - "type": { - "type": "string" - }, - "object": { - "type": "string" - } - } - }, - "v1.Patch": { - "id": "v1.Patch", - "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", - "properties": {} - }, - "v1.DeleteOptions": { - "id": "v1.DeleteOptions", - "description": "DeleteOptions may be provided when deleting an API object.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "gracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately." - }, - "preconditions": { - "$ref": "v1.Preconditions", - "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned." - }, - "orphanDependents": { - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both." - }, - "propagationPolicy": { - "$ref": "v1.DeletionPropagation", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy." - } - } - }, - "v1.Preconditions": { - "id": "v1.Preconditions", - "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", - "properties": { - "uid": { - "$ref": "types.UID", - "description": "Specifies the target UID." - } - } - }, - "types.UID": { - "id": "types.UID", - "properties": {} - }, - "v1.DeletionPropagation": { - "id": "v1.DeletionPropagation", - "properties": {} - }, - "v1beta1.DeploymentList": { - "id": "v1beta1.DeploymentList", - "description": "DeploymentList is a list of Deployments.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata." - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.Deployment" - }, - "description": "Items is the list of Deployments." - } - } - }, - "v1beta1.Deployment": { - "id": "v1beta1.Deployment", - "description": "Deployment enables declarative updates for Pods and ReplicaSets.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata." - }, - "spec": { - "$ref": "v1beta1.DeploymentSpec", - "description": "Specification of the desired behavior of the Deployment." - }, - "status": { - "$ref": "v1beta1.DeploymentStatus", - "description": "Most recently observed status of the Deployment." - } - } - }, - "v1beta1.DeploymentSpec": { - "id": "v1beta1.DeploymentSpec", - "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", - "required": [ - "template" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1." - }, - "selector": { - "$ref": "v1.LabelSelector", - "description": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment." - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template describes the pods that will be created." - }, - "strategy": { - "$ref": "v1beta1.DeploymentStrategy", - "description": "The deployment strategy to use to replace existing pods with new ones." - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)" - }, - "revisionHistoryLimit": { - "type": "integer", - "format": "int32", - "description": "The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified." - }, - "paused": { - "type": "boolean", - "description": "Indicates that the deployment is paused and will not be processed by the deployment controller." - }, - "rollbackTo": { - "$ref": "v1beta1.RollbackConfig", - "description": "The config this deployment is rolling back to. Will be cleared after rollback is done." - }, - "progressDeadlineSeconds": { - "type": "integer", - "format": "int32", - "description": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. This is not set by default." - } - } - }, - "v1beta1.DeploymentStrategy": { - "id": "v1beta1.DeploymentStrategy", - "description": "DeploymentStrategy describes how to replace existing pods with new ones.", - "properties": { - "type": { - "type": "string", - "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate." - }, - "rollingUpdate": { - "$ref": "v1beta1.RollingUpdateDeployment", - "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate." - } - } - }, - "v1beta1.RollingUpdateDeployment": { - "id": "v1beta1.RollingUpdateDeployment", - "description": "Spec to control the desired behavior of rolling update.", - "properties": { - "maxUnavailable": { - "type": "string", - "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1 is used. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods." - }, - "maxSurge": { - "type": "string", - "description": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. By default, a value of 1 is used. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods." - } - } - }, - "v1beta1.RollbackConfig": { - "id": "v1beta1.RollbackConfig", - "properties": { - "revision": { - "type": "integer", - "format": "int64", - "description": "The revision to rollback to. If set to 0, rollbck to the last revision." - } - } - }, - "v1beta1.DeploymentStatus": { - "id": "v1beta1.DeploymentStatus", - "description": "DeploymentStatus is the most recently observed status of the Deployment.", - "properties": { - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "The generation observed by the deployment controller." - }, - "replicas": { - "type": "integer", - "format": "int32", - "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector)." - }, - "updatedReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec." - }, - "readyReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of ready pods targeted by this deployment." - }, - "availableReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment." - }, - "unavailableReplicas": { - "type": "integer", - "format": "int32", - "description": "Total number of unavailable pods targeted by this deployment." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1beta1.DeploymentCondition" - }, - "description": "Represents the latest available observations of a deployment's current state." - } - } - }, - "v1beta1.DeploymentCondition": { - "id": "v1beta1.DeploymentCondition", - "description": "DeploymentCondition describes the state of a deployment at a certain point.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of deployment condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastUpdateTime": { - "type": "string", - "description": "The last time this condition was updated." - }, - "lastTransitionTime": { - "type": "string", - "description": "Last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "The reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about the transition." - } - } - }, - "v1beta1.DeploymentRollback": { - "id": "v1beta1.DeploymentRollback", - "description": "DeploymentRollback stores the information required to rollback a deployment.", - "required": [ - "name", - "rollbackTo" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "name": { - "type": "string", - "description": "Required: This must match the Name of a deployment." - }, - "updatedAnnotations": { - "type": "object", - "description": "The annotations to be updated to a deployment" - }, - "rollbackTo": { - "$ref": "v1beta1.RollbackConfig", - "description": "The config of this deployment rollback." - } - } - }, - "v1beta1.Scale": { - "id": "v1beta1.Scale", - "description": "represents a scaling request for a resource.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata." - }, - "spec": { - "$ref": "v1beta1.ScaleSpec", - "description": "defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status." - }, - "status": { - "$ref": "v1beta1.ScaleStatus", - "description": "current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only." - } - } - }, - "v1beta1.ScaleSpec": { - "id": "v1beta1.ScaleSpec", - "description": "describes the attributes of a scale subresource", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "desired number of instances for the scaled object." - } - } - }, - "v1beta1.ScaleStatus": { - "id": "v1beta1.ScaleStatus", - "description": "represents the current status of a scale subresource.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "actual number of observed instances of the scaled object." - }, - "selector": { - "type": "object", - "description": "label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "targetSelector": { - "type": "string", - "description": "label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - } - } - }, - "v1beta1.IngressList": { - "id": "v1beta1.IngressList", - "description": "IngressList is a collection of Ingress.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.Ingress" - }, - "description": "Items is the list of Ingress." - } - } - }, - "v1beta1.Ingress": { - "id": "v1beta1.Ingress", - "description": "Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.IngressSpec", - "description": "Spec is the desired state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1beta1.IngressStatus", - "description": "Status is the current state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1beta1.IngressSpec": { - "id": "v1beta1.IngressSpec", - "description": "IngressSpec describes the Ingress the user wishes to exist.", - "properties": { - "backend": { - "$ref": "v1beta1.IngressBackend", - "description": "A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default." - }, - "tls": { - "type": "array", - "items": { - "$ref": "v1beta1.IngressTLS" - }, - "description": "TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI." - }, - "rules": { - "type": "array", - "items": { - "$ref": "v1beta1.IngressRule" - }, - "description": "A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend." - } - } - }, - "v1beta1.IngressBackend": { - "id": "v1beta1.IngressBackend", - "description": "IngressBackend describes all endpoints for a given service and port.", - "required": [ - "serviceName", - "servicePort" - ], - "properties": { - "serviceName": { - "type": "string", - "description": "Specifies the name of the referenced service." - }, - "servicePort": { - "type": "string", - "description": "Specifies the port of the referenced service." - } - } - }, - "v1beta1.IngressTLS": { - "id": "v1beta1.IngressTLS", - "description": "IngressTLS describes the transport layer security associated with an Ingress.", - "properties": { - "hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified." - }, - "secretName": { - "type": "string", - "description": "SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing." - } - } - }, - "v1beta1.IngressRule": { - "id": "v1beta1.IngressRule", - "description": "IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.", - "properties": { - "host": { - "type": "string", - "description": "Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n\t IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue." - }, - "http": { - "$ref": "v1beta1.HTTPIngressRuleValue" - } - } - }, - "v1beta1.HTTPIngressRuleValue": { - "id": "v1beta1.HTTPIngressRuleValue", - "description": "HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://\u003chost\u003e/\u003cpath\u003e?\u003csearchpart\u003e -\u003e backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.", - "required": [ - "paths" - ], - "properties": { - "paths": { - "type": "array", - "items": { - "$ref": "v1beta1.HTTPIngressPath" - }, - "description": "A collection of paths that map requests to backends." - } - } - }, - "v1beta1.HTTPIngressPath": { - "id": "v1beta1.HTTPIngressPath", - "description": "HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.", - "required": [ - "backend" - ], - "properties": { - "path": { - "type": "string", - "description": "Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend." - }, - "backend": { - "$ref": "v1beta1.IngressBackend", - "description": "Backend defines the referenced service endpoint to which the traffic will be forwarded to." - } - } - }, - "v1beta1.IngressStatus": { - "id": "v1beta1.IngressStatus", - "description": "IngressStatus describe the current state of the Ingress.", - "properties": { - "loadBalancer": { - "$ref": "v1.LoadBalancerStatus", - "description": "LoadBalancer contains the current status of the load-balancer." - } - } - }, - "v1.LoadBalancerStatus": { - "id": "v1.LoadBalancerStatus", - "description": "LoadBalancerStatus represents the status of a load-balancer.", - "properties": { - "ingress": { - "type": "array", - "items": { - "$ref": "v1.LoadBalancerIngress" - }, - "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points." - } - } - }, - "v1.LoadBalancerIngress": { - "id": "v1.LoadBalancerIngress", - "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", - "properties": { - "ip": { - "type": "string", - "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)" - }, - "hostname": { - "type": "string", - "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)" - } - } - }, - "v1beta1.NetworkPolicyList": { - "id": "v1beta1.NetworkPolicyList", - "description": "Network Policy List is a list of NetworkPolicy objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicy" - }, - "description": "Items is a list of schema objects." - } - } - }, - "v1beta1.NetworkPolicy": { - "id": "v1beta1.NetworkPolicy", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.NetworkPolicySpec", - "description": "Specification of the desired behavior for this NetworkPolicy." - } - } - }, - "v1beta1.NetworkPolicySpec": { - "id": "v1beta1.NetworkPolicySpec", - "required": [ - "podSelector" - ], - "properties": { - "podSelector": { - "$ref": "v1.LabelSelector", - "description": "Selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace." - }, - "ingress": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicyIngressRule" - }, - "description": "List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not affect ingress isolation. If this field is present and contains at least one rule, this policy allows any traffic which matches at least one of the ingress rules in this list." - } - } - }, - "v1beta1.NetworkPolicyIngressRule": { - "id": "v1beta1.NetworkPolicyIngressRule", - "description": "This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.", - "properties": { - "ports": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicyPort" - }, - "description": "List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is not provided, this rule matches all ports (traffic not restricted by port). If this field is empty, this rule matches no ports (no traffic matches). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list." - }, - "from": { - "type": "array", - "items": { - "$ref": "v1beta1.NetworkPolicyPeer" - }, - "description": "List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is not provided, this rule matches all sources (traffic not restricted by source). If this field is empty, this rule matches no sources (no traffic matches). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list." - } - } - }, - "v1beta1.NetworkPolicyPort": { - "id": "v1beta1.NetworkPolicyPort", - "properties": { - "protocol": { - "$ref": "v1.Protocol", - "description": "Optional. The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP." - }, - "port": { - "type": "string", - "description": "If specified, the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched." - } - } - }, - "v1.Protocol": { - "id": "v1.Protocol", - "properties": {} - }, - "v1beta1.NetworkPolicyPeer": { - "id": "v1beta1.NetworkPolicyPeer", - "properties": { - "podSelector": { - "$ref": "v1.LabelSelector", - "description": "This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. If not provided, this selector selects no pods. If present but empty, this selector selects all pods in this namespace." - }, - "namespaceSelector": { - "$ref": "v1.LabelSelector", - "description": "Selects Namespaces using cluster scoped-labels. This matches all pods in all namespaces selected by this label selector. This field follows standard label selector semantics. If omitted, this selector selects no namespaces. If present but empty, this selector selects all namespaces." - } - } - }, - "v1beta1.PodSecurityPolicyList": { - "id": "v1beta1.PodSecurityPolicyList", - "description": "Pod Security Policy List is a list of PodSecurityPolicy objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.PodSecurityPolicy" - }, - "description": "Items is a list of schema objects." - } - } - }, - "v1beta1.PodSecurityPolicy": { - "id": "v1beta1.PodSecurityPolicy", - "description": "Pod Security Policy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.PodSecurityPolicySpec", - "description": "spec defines the policy enforced." - } - } - }, - "v1beta1.PodSecurityPolicySpec": { - "id": "v1beta1.PodSecurityPolicySpec", - "description": "Pod Security Policy Spec defines the policy enforced.", - "required": [ - "seLinux", - "runAsUser", - "supplementalGroups", - "fsGroup" - ], - "properties": { - "privileged": { - "type": "boolean", - "description": "privileged determines if a pod can request to be run as privileged." - }, - "defaultAddCapabilities": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "DefaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capabiility in both DefaultAddCapabilities and RequiredDropCapabilities." - }, - "requiredDropCapabilities": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "RequiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added." - }, - "allowedCapabilities": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "AllowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities." - }, - "volumes": { - "type": "array", - "items": { - "$ref": "v1beta1.FSType" - }, - "description": "volumes is a white list of allowed volume plugins. Empty indicates that all plugins may be used." - }, - "hostNetwork": { - "type": "boolean", - "description": "hostNetwork determines if the policy allows the use of HostNetwork in the pod spec." - }, - "hostPorts": { - "type": "array", - "items": { - "$ref": "v1beta1.HostPortRange" - }, - "description": "hostPorts determines which host port ranges are allowed to be exposed." - }, - "hostPID": { - "type": "boolean", - "description": "hostPID determines if the policy allows the use of HostPID in the pod spec." - }, - "hostIPC": { - "type": "boolean", - "description": "hostIPC determines if the policy allows the use of HostIPC in the pod spec." - }, - "seLinux": { - "$ref": "v1beta1.SELinuxStrategyOptions", - "description": "seLinux is the strategy that will dictate the allowable labels that may be set." - }, - "runAsUser": { - "$ref": "v1beta1.RunAsUserStrategyOptions", - "description": "runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set." - }, - "supplementalGroups": { - "$ref": "v1beta1.SupplementalGroupsStrategyOptions", - "description": "SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext." - }, - "fsGroup": { - "$ref": "v1beta1.FSGroupStrategyOptions", - "description": "FSGroup is the strategy that will dictate what fs group is used by the SecurityContext." - }, - "readOnlyRootFilesystem": { - "type": "boolean", - "description": "ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to." - } - } - }, - "v1beta1.FSType": { - "id": "v1beta1.FSType", - "properties": {} - }, - "v1beta1.HostPortRange": { - "id": "v1beta1.HostPortRange", - "description": "Host Port Range defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.", - "required": [ - "min", - "max" - ], - "properties": { - "min": { - "type": "integer", - "format": "int32", - "description": "min is the start of the range, inclusive." - }, - "max": { - "type": "integer", - "format": "int32", - "description": "max is the end of the range, inclusive." - } - } - }, - "v1beta1.SELinuxStrategyOptions": { - "id": "v1beta1.SELinuxStrategyOptions", - "description": "SELinux Strategy Options defines the strategy type and any options used to create the strategy.", - "required": [ - "rule" - ], - "properties": { - "rule": { - "type": "string", - "description": "type is the strategy that will dictate the allowable labels that may be set." - }, - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "seLinuxOptions required to run as; required for MustRunAs More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context" - } - } - }, - "v1beta1.RunAsUserStrategyOptions": { - "id": "v1beta1.RunAsUserStrategyOptions", - "description": "Run A sUser Strategy Options defines the strategy type and any options used to create the strategy.", - "required": [ - "rule" - ], - "properties": { - "rule": { - "type": "string", - "description": "Rule is the strategy that will dictate the allowable RunAsUser values that may be set." - }, - "ranges": { - "type": "array", - "items": { - "$ref": "v1beta1.IDRange" - }, - "description": "Ranges are the allowed ranges of uids that may be used." - } - } - }, - "v1beta1.IDRange": { - "id": "v1beta1.IDRange", - "description": "ID Range provides a min/max of an allowed range of IDs.", - "required": [ - "min", - "max" - ], - "properties": { - "min": { - "type": "integer", - "format": "int64", - "description": "Min is the start of the range, inclusive." - }, - "max": { - "type": "integer", - "format": "int64", - "description": "Max is the end of the range, inclusive." - } - } - }, - "v1beta1.SupplementalGroupsStrategyOptions": { - "id": "v1beta1.SupplementalGroupsStrategyOptions", - "description": "SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.", - "properties": { - "rule": { - "type": "string", - "description": "Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext." - }, - "ranges": { - "type": "array", - "items": { - "$ref": "v1beta1.IDRange" - }, - "description": "Ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end." - } - } - }, - "v1beta1.FSGroupStrategyOptions": { - "id": "v1beta1.FSGroupStrategyOptions", - "description": "FSGroupStrategyOptions defines the strategy type and options used to create the strategy.", - "properties": { - "rule": { - "type": "string", - "description": "Rule is the strategy that will dictate what FSGroup is used in the SecurityContext." - }, - "ranges": { - "type": "array", - "items": { - "$ref": "v1beta1.IDRange" - }, - "description": "Ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end." - } - } - }, - "v1beta1.ReplicaSetList": { - "id": "v1beta1.ReplicaSetList", - "description": "ReplicaSetList is a collection of ReplicaSets.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.ReplicaSet" - }, - "description": "List of ReplicaSets. More info: http://kubernetes.io/docs/user-guide/replication-controller" - } - } - }, - "v1beta1.ReplicaSet": { - "id": "v1beta1.ReplicaSet", - "description": "ReplicaSet represents the configuration of a ReplicaSet.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1beta1.ReplicaSetSpec", - "description": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1beta1.ReplicaSetStatus", - "description": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1beta1.ReplicaSetSpec": { - "id": "v1beta1.ReplicaSetSpec", - "description": "ReplicaSetSpec is the specification of a ReplicaSet.", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)" - }, - "selector": { - "$ref": "v1.LabelSelector", - "description": "Selector is a label query over pods that should match the replica count. If the selector is empty, it is defaulted to the labels present on the pod template. Label keys and values that must match in order to be controlled by this replica set. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template" - } - } - }, - "v1beta1.ReplicaSetStatus": { - "id": "v1beta1.ReplicaSetStatus", - "description": "ReplicaSetStatus represents the current status of a ReplicaSet.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the most recently oberved number of replicas. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "fullyLabeledReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of pods that have labels matching the labels of the pod template of the replicaset." - }, - "readyReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of ready replicas for this replica set." - }, - "availableReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of available replicas (ready for at least minReadySeconds) for this replica set." - }, - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1beta1.ReplicaSetCondition" - }, - "description": "Represents the latest available observations of a replica set's current state." - } - } - }, - "v1beta1.ReplicaSetCondition": { - "id": "v1beta1.ReplicaSetCondition", - "description": "ReplicaSetCondition describes the state of a replica set at a certain point.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of replica set condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastTransitionTime": { - "type": "string", - "description": "The last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "The reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about the transition." - } - } - }, - "v1beta1.ThirdPartyResourceList": { - "id": "v1beta1.ThirdPartyResourceList", - "description": "ThirdPartyResourceList is a list of ThirdPartyResources.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata." - }, - "items": { - "type": "array", - "items": { - "$ref": "v1beta1.ThirdPartyResource" - }, - "description": "Items is the list of ThirdPartyResources." - } - } - }, - "v1beta1.ThirdPartyResource": { - "id": "v1beta1.ThirdPartyResource", - "description": "A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource types to the API. It consists of one or more Versions of the api.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata" - }, - "description": { - "type": "string", - "description": "Description is the description of this object." - }, - "versions": { - "type": "array", - "items": { - "$ref": "v1beta1.APIVersion" - }, - "description": "Versions are versions for this third party object" - } - } - }, - "v1beta1.APIVersion": { - "id": "v1beta1.APIVersion", - "description": "An APIVersion represents a single concrete version of an object model.", - "properties": { - "name": { - "type": "string", - "description": "Name of this version (e.g. 'v1')." - } - } - }, - "v1.APIResourceList": { - "id": "v1.APIResourceList", - "description": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", - "required": [ - "groupVersion", - "resources" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "groupVersion": { - "type": "string", - "description": "groupVersion is the group and version this APIResourceList is for." - }, - "resources": { - "type": "array", - "items": { - "$ref": "v1.APIResource" - }, - "description": "resources contains the name of the resources and if they are namespaced." - } - } - }, - "v1.APIResource": { - "id": "v1.APIResource", - "description": "APIResource specifies the name of a resource and whether it is namespaced.", - "required": [ - "name", - "namespaced", - "kind", - "verbs" - ], - "properties": { - "name": { - "type": "string", - "description": "name is the name of the resource." - }, - "namespaced": { - "type": "boolean", - "description": "namespaced indicates if a resource is namespaced or not." - }, - "kind": { - "type": "string", - "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')" - }, - "verbs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)" - }, - "shortNames": { - "type": "array", - "items": { - "type": "string" - }, - "description": "shortNames is a list of suggested short names of the resource." - } - } - } - } - } \ No newline at end of file diff --git a/k8s/.kube/schema/v1.6.6/schema629255130 b/k8s/.kube/schema/v1.6.6/schema629255130 deleted file mode 100644 index 1fb315f47..000000000 --- a/k8s/.kube/schema/v1.6.6/schema629255130 +++ /dev/null @@ -1,20838 +0,0 @@ -{ - "swaggerVersion": "1.2", - "apiVersion": "v1", - "basePath": "https://10.240.255.15:443", - "resourcePath": "/api/v1", - "info": { - "title": "", - "description": "" - }, - "apis": [ - { - "path": "/api/v1/namespaces/{namespace}/bindings", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Binding", - "method": "POST", - "summary": "create a Binding", - "nickname": "createNamespacedBinding", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Binding", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Binding" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/componentstatuses", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ComponentStatusList", - "method": "GET", - "summary": "list objects of kind ComponentStatus", - "nickname": "listComponentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ComponentStatusList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/componentstatuses/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ComponentStatus", - "method": "GET", - "summary": "read the specified ComponentStatus", - "nickname": "readComponentStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ComponentStatus", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ComponentStatus" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ConfigMapList", - "method": "GET", - "summary": "list or watch objects of kind ConfigMap", - "nickname": "listNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMapList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ConfigMap", - "method": "POST", - "summary": "create a ConfigMap", - "nickname": "createNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ConfigMap", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ConfigMap", - "nickname": "deletecollectionNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ConfigMap", - "nickname": "watchNamespacedConfigMapList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/configmaps/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ConfigMap", - "method": "GET", - "summary": "read the specified ConfigMap", - "nickname": "readNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ConfigMap", - "method": "PUT", - "summary": "replace the specified ConfigMap", - "nickname": "replaceNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ConfigMap", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ConfigMap", - "method": "PATCH", - "summary": "partially update the specified ConfigMap", - "nickname": "patchNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMap" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ConfigMap", - "nickname": "deleteNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/configmaps/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ConfigMap", - "nickname": "watchNamespacedConfigMap", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ConfigMap", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ConfigMapList", - "method": "GET", - "summary": "list or watch objects of kind ConfigMap", - "nickname": "listConfigMapForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ConfigMapList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/configmaps", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ConfigMap", - "nickname": "watchConfigMapListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EndpointsList", - "method": "GET", - "summary": "list or watch objects of kind Endpoints", - "nickname": "listNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EndpointsList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Endpoints", - "method": "POST", - "summary": "create Endpoints", - "nickname": "createNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Endpoints", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Endpoints", - "nickname": "deletecollectionNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Endpoints", - "nickname": "watchNamespacedEndpointsList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/endpoints/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Endpoints", - "method": "GET", - "summary": "read the specified Endpoints", - "nickname": "readNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Endpoints", - "method": "PUT", - "summary": "replace the specified Endpoints", - "nickname": "replaceNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Endpoints", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Endpoints", - "method": "PATCH", - "summary": "partially update the specified Endpoints", - "nickname": "patchNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Endpoints" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete Endpoints", - "nickname": "deleteNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/endpoints/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Endpoints", - "nickname": "watchNamespacedEndpoints", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Endpoints", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EndpointsList", - "method": "GET", - "summary": "list or watch objects of kind Endpoints", - "nickname": "listEndpointsForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EndpointsList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/endpoints", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Endpoints", - "nickname": "watchEndpointsListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EventList", - "method": "GET", - "summary": "list or watch objects of kind Event", - "nickname": "listNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EventList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Event", - "method": "POST", - "summary": "create an Event", - "nickname": "createNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Event", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Event", - "nickname": "deletecollectionNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Event", - "nickname": "watchNamespacedEventList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/events/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Event", - "method": "GET", - "summary": "read the specified Event", - "nickname": "readNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Event", - "method": "PUT", - "summary": "replace the specified Event", - "nickname": "replaceNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Event", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Event", - "method": "PATCH", - "summary": "partially update the specified Event", - "nickname": "patchNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Event" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete an Event", - "nickname": "deleteNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/events/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Event", - "nickname": "watchNamespacedEvent", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Event", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.EventList", - "method": "GET", - "summary": "list or watch objects of kind Event", - "nickname": "listEventForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.EventList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/events", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Event", - "nickname": "watchEventListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.LimitRangeList", - "method": "GET", - "summary": "list or watch objects of kind LimitRange", - "nickname": "listNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRangeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.LimitRange", - "method": "POST", - "summary": "create a LimitRange", - "nickname": "createNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.LimitRange", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of LimitRange", - "nickname": "deletecollectionNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of LimitRange", - "nickname": "watchNamespacedLimitRangeList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/limitranges/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.LimitRange", - "method": "GET", - "summary": "read the specified LimitRange", - "nickname": "readNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.LimitRange", - "method": "PUT", - "summary": "replace the specified LimitRange", - "nickname": "replaceNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.LimitRange", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.LimitRange", - "method": "PATCH", - "summary": "partially update the specified LimitRange", - "nickname": "patchNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRange" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a LimitRange", - "nickname": "deleteNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/limitranges/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind LimitRange", - "nickname": "watchNamespacedLimitRange", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the LimitRange", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.LimitRangeList", - "method": "GET", - "summary": "list or watch objects of kind LimitRange", - "nickname": "listLimitRangeForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.LimitRangeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/limitranges", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of LimitRange", - "nickname": "watchLimitRangeListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.NamespaceList", - "method": "GET", - "summary": "list or watch objects of kind Namespace", - "nickname": "listNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.NamespaceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "POST", - "summary": "create a Namespace", - "nickname": "createNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Namespace", - "nickname": "watchNamespaceList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Namespace", - "method": "GET", - "summary": "read the specified Namespace", - "nickname": "readNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PUT", - "summary": "replace the specified Namespace", - "nickname": "replaceNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PATCH", - "summary": "partially update the specified Namespace", - "nickname": "patchNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Namespace", - "nickname": "deleteNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Namespace", - "nickname": "watchNamespace", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{name}/finalize", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Namespace", - "method": "PUT", - "summary": "replace finalize of the specified Namespace", - "nickname": "replaceNamespaceFinalize", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Namespace", - "method": "GET", - "summary": "read status of the specified Namespace", - "nickname": "readNamespaceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PUT", - "summary": "replace status of the specified Namespace", - "nickname": "replaceNamespaceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Namespace", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Namespace", - "method": "PATCH", - "summary": "partially update status of the specified Namespace", - "nickname": "patchNamespaceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Namespace", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Namespace" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/nodes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.NodeList", - "method": "GET", - "summary": "list or watch objects of kind Node", - "nickname": "listNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.NodeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "POST", - "summary": "create a Node", - "nickname": "createNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Node", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Node", - "nickname": "deletecollectionNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/nodes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Node", - "nickname": "watchNodeList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Node", - "method": "GET", - "summary": "read the specified Node", - "nickname": "readNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PUT", - "summary": "replace the specified Node", - "nickname": "replaceNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Node", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PATCH", - "summary": "partially update the specified Node", - "nickname": "patchNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Node", - "nickname": "deleteNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/nodes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Node", - "nickname": "watchNode", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/nodes/{name}/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Node", - "nickname": "proxyGETNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Node", - "nickname": "proxyPUTNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Node", - "nickname": "proxyPOSTNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Node", - "nickname": "proxyPATCHNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Node", - "nickname": "proxyDELETENodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Node", - "nickname": "proxyHEADNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Node", - "nickname": "proxyOPTIONSNodeWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/nodes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Node", - "nickname": "proxyGETNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Node", - "nickname": "proxyPUTNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Node", - "nickname": "proxyPOSTNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Node", - "nickname": "proxyPATCHNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Node", - "nickname": "proxyDELETENode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Node", - "nickname": "proxyHEADNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Node", - "nickname": "proxyOPTIONSNode", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}/proxy", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Node", - "nickname": "connectGetNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Node", - "nickname": "connectPostNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Node", - "nickname": "connectPutNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Node", - "nickname": "connectDeleteNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Node", - "nickname": "connectHeadNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Node", - "nickname": "connectOptionsNodeProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}/proxy/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Node", - "nickname": "connectGetNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Node", - "nickname": "connectPostNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Node", - "nickname": "connectPutNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Node", - "nickname": "connectDeleteNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Node", - "nickname": "connectHeadNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Node", - "nickname": "connectOptionsNodeProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to node.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/nodes/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Node", - "method": "GET", - "summary": "read status of the specified Node", - "nickname": "readNodeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PUT", - "summary": "replace status of the specified Node", - "nickname": "replaceNodeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Node", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Node", - "method": "PATCH", - "summary": "partially update status of the specified Node", - "nickname": "patchNodeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Node", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Node" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaimList", - "method": "GET", - "summary": "list or watch objects of kind PersistentVolumeClaim", - "nickname": "listNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaimList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "POST", - "summary": "create a PersistentVolumeClaim", - "nickname": "createNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolumeClaim", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PersistentVolumeClaim", - "nickname": "deletecollectionNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PersistentVolumeClaim", - "nickname": "watchNamespacedPersistentVolumeClaimList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaim", - "method": "GET", - "summary": "read the specified PersistentVolumeClaim", - "nickname": "readNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PUT", - "summary": "replace the specified PersistentVolumeClaim", - "nickname": "replaceNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolumeClaim", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PATCH", - "summary": "partially update the specified PersistentVolumeClaim", - "nickname": "patchNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PersistentVolumeClaim", - "nickname": "deleteNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PersistentVolumeClaim", - "nickname": "watchNamespacedPersistentVolumeClaim", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaimList", - "method": "GET", - "summary": "list or watch objects of kind PersistentVolumeClaim", - "nickname": "listPersistentVolumeClaimForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaimList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/persistentvolumeclaims", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PersistentVolumeClaim", - "nickname": "watchPersistentVolumeClaimListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeClaim", - "method": "GET", - "summary": "read status of the specified PersistentVolumeClaim", - "nickname": "readNamespacedPersistentVolumeClaimStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PUT", - "summary": "replace status of the specified PersistentVolumeClaim", - "nickname": "replaceNamespacedPersistentVolumeClaimStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolumeClaim", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolumeClaim", - "method": "PATCH", - "summary": "partially update status of the specified PersistentVolumeClaim", - "nickname": "patchNamespacedPersistentVolumeClaimStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolumeClaim", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeClaim" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolumeList", - "method": "GET", - "summary": "list or watch objects of kind PersistentVolume", - "nickname": "listPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolumeList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "POST", - "summary": "create a PersistentVolume", - "nickname": "createPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolume", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PersistentVolume", - "nickname": "deletecollectionPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/persistentvolumes", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PersistentVolume", - "nickname": "watchPersistentVolumeList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolume", - "method": "GET", - "summary": "read the specified PersistentVolume", - "nickname": "readPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PUT", - "summary": "replace the specified PersistentVolume", - "nickname": "replacePersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolume", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PATCH", - "summary": "partially update the specified PersistentVolume", - "nickname": "patchPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PersistentVolume", - "nickname": "deletePersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/persistentvolumes/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PersistentVolume", - "nickname": "watchPersistentVolume", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/persistentvolumes/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PersistentVolume", - "method": "GET", - "summary": "read status of the specified PersistentVolume", - "nickname": "readPersistentVolumeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PUT", - "summary": "replace status of the specified PersistentVolume", - "nickname": "replacePersistentVolumeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PersistentVolume", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PersistentVolume", - "method": "PATCH", - "summary": "partially update status of the specified PersistentVolume", - "nickname": "patchPersistentVolumeStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PersistentVolume", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PersistentVolume" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodList", - "method": "GET", - "summary": "list or watch objects of kind Pod", - "nickname": "listNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "POST", - "summary": "create a Pod", - "nickname": "createNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Pod", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Pod", - "nickname": "deletecollectionNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Pod", - "nickname": "watchNamespacedPodList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Pod", - "method": "GET", - "summary": "read the specified Pod", - "nickname": "readNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PUT", - "summary": "replace the specified Pod", - "nickname": "replaceNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Pod", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PATCH", - "summary": "partially update the specified Pod", - "nickname": "patchNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Pod", - "nickname": "deleteNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/pods/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Pod", - "nickname": "watchNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/pods/{name}/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Pod", - "nickname": "proxyGETNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Pod", - "nickname": "proxyPUTNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Pod", - "nickname": "proxyPOSTNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Pod", - "nickname": "proxyPATCHNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Pod", - "nickname": "proxyDELETENamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Pod", - "nickname": "proxyHEADNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Pod", - "nickname": "proxyOPTIONSNamespacedPodWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/pods/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Pod", - "nickname": "proxyGETNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Pod", - "nickname": "proxyPUTNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Pod", - "nickname": "proxyPOSTNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Pod", - "nickname": "proxyPATCHNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Pod", - "nickname": "proxyDELETENamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Pod", - "nickname": "proxyHEADNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Pod", - "nickname": "proxyOPTIONSNamespacedPod", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodList", - "method": "GET", - "summary": "list or watch objects of kind Pod", - "nickname": "listPodForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/pods", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Pod", - "nickname": "watchPodListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/attach", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to attach of Pod", - "nickname": "connectGetNamespacedPodAttach", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to attach of Pod", - "nickname": "connectPostNamespacedPodAttach", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/binding", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Binding", - "method": "POST", - "summary": "create binding of a Binding", - "nickname": "createNamespacedBindingBinding", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Binding", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Binding", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Binding" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/eviction", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1beta1.Eviction", - "method": "POST", - "summary": "create eviction of an Eviction", - "nickname": "createNamespacedEvictionEviction", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1beta1.Eviction", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Eviction", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1beta1.Eviction" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/exec", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to exec of Pod", - "nickname": "connectGetNamespacedPodExec", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Redirect the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Redirect the standard output stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Redirect the standard error stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "command", - "description": "Command is the remote command to execute. argv array. Not executed within a shell.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to exec of Pod", - "nickname": "connectPostNamespacedPodExec", - "parameters": [ - { - "type": "boolean", - "paramType": "query", - "name": "stdin", - "description": "Redirect the standard input stream of the pod for this call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stdout", - "description": "Redirect the standard output stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "stderr", - "description": "Redirect the standard error stream of the pod for this call. Defaults to true.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "tty", - "description": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "command", - "description": "Command is the remote command to execute. argv array. Not executed within a shell.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/log", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "read log of the specified Pod", - "nickname": "readNamespacedPodLog", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "container", - "description": "The container for which to stream logs. Defaults to only container if there is one container in the pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "follow", - "description": "Follow the log stream of the pod. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "previous", - "description": "Return previous terminated container logs. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "sinceSeconds", - "description": "A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "timestamps", - "description": "If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "tailLines", - "description": "If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "limitBytes", - "description": "If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "string" - } - ], - "produces": [ - "text/plain", - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/portforward", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to portforward of Pod", - "nickname": "connectGetNamespacedPodPortforward", - "parameters": [ - { - "type": "integer", - "paramType": "query", - "name": "ports", - "description": "List of ports to forward Required when using WebSockets", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to portforward of Pod", - "nickname": "connectPostNamespacedPodPortforward", - "parameters": [ - { - "type": "integer", - "paramType": "query", - "name": "ports", - "description": "List of ports to forward Required when using WebSockets", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/proxy", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Pod", - "nickname": "connectGetNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Pod", - "nickname": "connectPostNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Pod", - "nickname": "connectPutNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Pod", - "nickname": "connectDeleteNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Pod", - "nickname": "connectHeadNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Pod", - "nickname": "connectOptionsNamespacedPodProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Pod", - "nickname": "connectGetNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Pod", - "nickname": "connectPostNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Pod", - "nickname": "connectPutNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Pod", - "nickname": "connectDeleteNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Pod", - "nickname": "connectHeadNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Pod", - "nickname": "connectOptionsNamespacedPodProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the URL path to use for the current proxy request to pod.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/pods/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Pod", - "method": "GET", - "summary": "read status of the specified Pod", - "nickname": "readNamespacedPodStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PUT", - "summary": "replace status of the specified Pod", - "nickname": "replaceNamespacedPodStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Pod", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Pod", - "method": "PATCH", - "summary": "partially update status of the specified Pod", - "nickname": "patchNamespacedPodStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Pod", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Pod" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodTemplateList", - "method": "GET", - "summary": "list or watch objects of kind PodTemplate", - "nickname": "listNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplateList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PodTemplate", - "method": "POST", - "summary": "create a PodTemplate", - "nickname": "createNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PodTemplate", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of PodTemplate", - "nickname": "deletecollectionNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PodTemplate", - "nickname": "watchNamespacedPodTemplateList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/podtemplates/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodTemplate", - "method": "GET", - "summary": "read the specified PodTemplate", - "nickname": "readNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PodTemplate", - "method": "PUT", - "summary": "replace the specified PodTemplate", - "nickname": "replaceNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.PodTemplate", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.PodTemplate", - "method": "PATCH", - "summary": "partially update the specified PodTemplate", - "nickname": "patchNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplate" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a PodTemplate", - "nickname": "deleteNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/podtemplates/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind PodTemplate", - "nickname": "watchNamespacedPodTemplate", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the PodTemplate", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.PodTemplateList", - "method": "GET", - "summary": "list or watch objects of kind PodTemplate", - "nickname": "listPodTemplateForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.PodTemplateList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/podtemplates", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of PodTemplate", - "nickname": "watchPodTemplateListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationControllerList", - "method": "GET", - "summary": "list or watch objects of kind ReplicationController", - "nickname": "listNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationControllerList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "POST", - "summary": "create a ReplicationController", - "nickname": "createNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ReplicationController", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ReplicationController", - "nickname": "deletecollectionNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicationController", - "nickname": "watchNamespacedReplicationControllerList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationController", - "method": "GET", - "summary": "read the specified ReplicationController", - "nickname": "readNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PUT", - "summary": "replace the specified ReplicationController", - "nickname": "replaceNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ReplicationController", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PATCH", - "summary": "partially update the specified ReplicationController", - "nickname": "patchNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ReplicationController", - "nickname": "deleteNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ReplicationController", - "nickname": "watchNamespacedReplicationController", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationControllerList", - "method": "GET", - "summary": "list or watch objects of kind ReplicationController", - "nickname": "listReplicationControllerForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationControllerList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/replicationcontrollers", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ReplicationController", - "nickname": "watchReplicationControllerListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Scale", - "method": "GET", - "summary": "read scale of the specified Scale", - "nickname": "readNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Scale", - "method": "PUT", - "summary": "replace scale of the specified Scale", - "nickname": "replaceNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Scale", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Scale", - "method": "PATCH", - "summary": "partially update scale of the specified Scale", - "nickname": "patchNamespacedScaleScale", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Scale", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Scale" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ReplicationController", - "method": "GET", - "summary": "read status of the specified ReplicationController", - "nickname": "readNamespacedReplicationControllerStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PUT", - "summary": "replace status of the specified ReplicationController", - "nickname": "replaceNamespacedReplicationControllerStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ReplicationController", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ReplicationController", - "method": "PATCH", - "summary": "partially update status of the specified ReplicationController", - "nickname": "patchNamespacedReplicationControllerStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ReplicationController", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ReplicationController" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuotaList", - "method": "GET", - "summary": "list or watch objects of kind ResourceQuota", - "nickname": "listNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuotaList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "POST", - "summary": "create a ResourceQuota", - "nickname": "createNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ResourceQuota", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ResourceQuota", - "nickname": "deletecollectionNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ResourceQuota", - "nickname": "watchNamespacedResourceQuotaList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/resourcequotas/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuota", - "method": "GET", - "summary": "read the specified ResourceQuota", - "nickname": "readNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PUT", - "summary": "replace the specified ResourceQuota", - "nickname": "replaceNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ResourceQuota", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PATCH", - "summary": "partially update the specified ResourceQuota", - "nickname": "patchNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ResourceQuota", - "nickname": "deleteNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ResourceQuota", - "nickname": "watchNamespacedResourceQuota", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuotaList", - "method": "GET", - "summary": "list or watch objects of kind ResourceQuota", - "nickname": "listResourceQuotaForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuotaList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/resourcequotas", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ResourceQuota", - "nickname": "watchResourceQuotaListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/resourcequotas/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ResourceQuota", - "method": "GET", - "summary": "read status of the specified ResourceQuota", - "nickname": "readNamespacedResourceQuotaStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PUT", - "summary": "replace status of the specified ResourceQuota", - "nickname": "replaceNamespacedResourceQuotaStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ResourceQuota", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ResourceQuota", - "method": "PATCH", - "summary": "partially update status of the specified ResourceQuota", - "nickname": "patchNamespacedResourceQuotaStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ResourceQuota", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ResourceQuota" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.SecretList", - "method": "GET", - "summary": "list or watch objects of kind Secret", - "nickname": "listNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.SecretList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Secret", - "method": "POST", - "summary": "create a Secret", - "nickname": "createNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Secret", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of Secret", - "nickname": "deletecollectionNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Secret", - "nickname": "watchNamespacedSecretList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/secrets/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Secret", - "method": "GET", - "summary": "read the specified Secret", - "nickname": "readNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Secret", - "method": "PUT", - "summary": "replace the specified Secret", - "nickname": "replaceNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Secret", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Secret", - "method": "PATCH", - "summary": "partially update the specified Secret", - "nickname": "patchNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Secret" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Secret", - "nickname": "deleteNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/secrets/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Secret", - "nickname": "watchNamespacedSecret", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Secret", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.SecretList", - "method": "GET", - "summary": "list or watch objects of kind Secret", - "nickname": "listSecretForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.SecretList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/secrets", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Secret", - "nickname": "watchSecretListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceAccountList", - "method": "GET", - "summary": "list or watch objects of kind ServiceAccount", - "nickname": "listNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccountList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ServiceAccount", - "method": "POST", - "summary": "create a ServiceAccount", - "nickname": "createNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ServiceAccount", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete collection of ServiceAccount", - "nickname": "deletecollectionNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ServiceAccount", - "nickname": "watchNamespacedServiceAccountList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/serviceaccounts/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceAccount", - "method": "GET", - "summary": "read the specified ServiceAccount", - "nickname": "readNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ServiceAccount", - "method": "PUT", - "summary": "replace the specified ServiceAccount", - "nickname": "replaceNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.ServiceAccount", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.ServiceAccount", - "method": "PATCH", - "summary": "partially update the specified ServiceAccount", - "nickname": "patchNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccount" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a ServiceAccount", - "nickname": "deleteNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.DeleteOptions", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "gracePeriodSeconds", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "orphanDependents", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "propagationPolicy", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind ServiceAccount", - "nickname": "watchNamespacedServiceAccount", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the ServiceAccount", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceAccountList", - "method": "GET", - "summary": "list or watch objects of kind ServiceAccount", - "nickname": "listServiceAccountForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceAccountList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/serviceaccounts", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of ServiceAccount", - "nickname": "watchServiceAccountListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceList", - "method": "GET", - "summary": "list or watch objects of kind Service", - "nickname": "listNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "POST", - "summary": "create a Service", - "nickname": "createNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Service", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Service", - "nickname": "watchNamespacedServiceList", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Service", - "method": "GET", - "summary": "read the specified Service", - "nickname": "readNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "export", - "description": "Should this value be exported. Export strips fields that a user can not specify.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "exact", - "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PUT", - "summary": "replace the specified Service", - "nickname": "replaceNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Service", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PATCH", - "summary": "partially update the specified Service", - "nickname": "patchNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - }, - { - "type": "v1.Status", - "method": "DELETE", - "summary": "delete a Service", - "nickname": "deleteNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Status" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/namespaces/{namespace}/services/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch changes to an object of kind Service", - "nickname": "watchNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/services/{name}/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Service", - "nickname": "proxyGETNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Service", - "nickname": "proxyPUTNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Service", - "nickname": "proxyPOSTNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Service", - "nickname": "proxyPATCHNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Service", - "nickname": "proxyDELETENamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Service", - "nickname": "proxyHEADNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Service", - "nickname": "proxyOPTIONSNamespacedServiceWithPath", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/proxy/namespaces/{namespace}/services/{name}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "proxy GET requests to Service", - "nickname": "proxyGETNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "proxy PUT requests to Service", - "nickname": "proxyPUTNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "proxy POST requests to Service", - "nickname": "proxyPOSTNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PATCH", - "summary": "proxy PATCH requests to Service", - "nickname": "proxyPATCHNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "proxy DELETE requests to Service", - "nickname": "proxyDELETENamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "proxy HEAD requests to Service", - "nickname": "proxyHEADNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "proxy OPTIONS requests to Service", - "nickname": "proxyOPTIONSNamespacedService", - "parameters": [ - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.ServiceList", - "method": "GET", - "summary": "list or watch objects of kind Service", - "nickname": "listServiceForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.ServiceList" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/watch/services", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.WatchEvent", - "method": "GET", - "summary": "watch individual changes to a list of Service", - "nickname": "watchServiceListForAllNamespaces", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "labelSelector", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "fieldSelector", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "required": false, - "allowMultiple": false - }, - { - "type": "boolean", - "paramType": "query", - "name": "watch", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "query", - "name": "resourceVersion", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "required": false, - "allowMultiple": false - }, - { - "type": "integer", - "paramType": "query", - "name": "timeoutSeconds", - "description": "Timeout for the list/watch call.", - "required": false, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.WatchEvent" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}/proxy", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Service", - "nickname": "connectGetNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Service", - "nickname": "connectPostNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Service", - "nickname": "connectPutNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Service", - "nickname": "connectDeleteNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Service", - "nickname": "connectHeadNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Service", - "nickname": "connectOptionsNamespacedServiceProxy", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}", - "description": "API at /api/v1", - "operations": [ - { - "type": "string", - "method": "GET", - "summary": "connect GET requests to proxy of Service", - "nickname": "connectGetNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "POST", - "summary": "connect POST requests to proxy of Service", - "nickname": "connectPostNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "PUT", - "summary": "connect PUT requests to proxy of Service", - "nickname": "connectPutNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "DELETE", - "summary": "connect DELETE requests to proxy of Service", - "nickname": "connectDeleteNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "HEAD", - "summary": "connect HEAD requests to proxy of Service", - "nickname": "connectHeadNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "string", - "method": "OPTIONS", - "summary": "connect OPTIONS requests to proxy of Service", - "nickname": "connectOptionsNamespacedServiceProxyWithPath", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "path", - "description": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "path", - "description": "path to the resource", - "required": true, - "allowMultiple": false - } - ], - "produces": [ - "*/*" - ], - "consumes": [ - "*/*" - ] - } - ] - }, - { - "path": "/api/v1/namespaces/{namespace}/services/{name}/status", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.Service", - "method": "GET", - "summary": "read status of the specified Service", - "nickname": "readNamespacedServiceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PUT", - "summary": "replace status of the specified Service", - "nickname": "replaceNamespacedServiceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Service", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "*/*" - ] - }, - { - "type": "v1.Service", - "method": "PATCH", - "summary": "partially update status of the specified Service", - "nickname": "patchNamespacedServiceStatus", - "parameters": [ - { - "type": "string", - "paramType": "query", - "name": "pretty", - "description": "If 'true', then the output is pretty printed.", - "required": false, - "allowMultiple": false - }, - { - "type": "v1.Patch", - "paramType": "body", - "name": "body", - "description": "", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "namespace", - "description": "object name and auth scope, such as for teams and projects", - "required": true, - "allowMultiple": false - }, - { - "type": "string", - "paramType": "path", - "name": "name", - "description": "name of the Service", - "required": true, - "allowMultiple": false - } - ], - "responseMessages": [ - { - "code": 200, - "message": "OK", - "responseModel": "v1.Service" - } - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json" - ] - } - ] - }, - { - "path": "/api/v1", - "description": "API at /api/v1", - "operations": [ - { - "type": "v1.APIResourceList", - "method": "GET", - "summary": "get available resources", - "nickname": "getAPIResources", - "parameters": [], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "consumes": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ] - } - ] - } - ], - "models": { - "v1.Binding": { - "id": "v1.Binding", - "description": "Binding ties one object to another. For example, a pod is bound to a node by a scheduler.", - "required": [ - "target" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "target": { - "$ref": "v1.ObjectReference", - "description": "The target object that you want to bind to the standard object." - } - } - }, - "v1.ObjectMeta": { - "id": "v1.ObjectMeta", - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "properties": { - "name": { - "type": "string", - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "generateName": { - "type": "string", - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency" - }, - "namespace": { - "type": "string", - "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces" - }, - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "uid": { - "type": "string", - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "resourceVersion": { - "type": "string", - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - }, - "generation": { - "type": "integer", - "format": "int64", - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only." - }, - "creationTimestamp": { - "type": "string", - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionTimestamp": { - "type": "string", - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "deletionGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only." - }, - "labels": { - "type": "object", - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels" - }, - "annotations": { - "type": "object", - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations" - }, - "ownerReferences": { - "type": "array", - "items": { - "$ref": "v1.OwnerReference" - }, - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller." - }, - "finalizers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed." - }, - "clusterName": { - "type": "string", - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request." - } - } - }, - "v1.OwnerReference": { - "id": "v1.OwnerReference", - "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "API version of the referent." - }, - "kind": { - "type": "string", - "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "uid": { - "type": "string", - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "controller": { - "type": "boolean", - "description": "If true, this reference points to the managing controller." - }, - "blockOwnerDeletion": { - "type": "boolean", - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned." - } - } - }, - "v1.ObjectReference": { - "id": "v1.ObjectReference", - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "properties": { - "kind": { - "type": "string", - "description": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "namespace": { - "type": "string", - "description": "Namespace of the referent. More info: http://kubernetes.io/docs/user-guide/namespaces" - }, - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "uid": { - "type": "string", - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids" - }, - "apiVersion": { - "type": "string", - "description": "API version of the referent." - }, - "resourceVersion": { - "type": "string", - "description": "Specific resourceVersion to which this reference is made, if any. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - }, - "fieldPath": { - "type": "string", - "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object." - } - } - }, - "v1.ComponentStatusList": { - "id": "v1.ComponentStatusList", - "description": "Status of all the conditions for the component as a list of ComponentStatus objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ComponentStatus" - }, - "description": "List of ComponentStatus objects." - } - } - }, - "v1.ListMeta": { - "id": "v1.ListMeta", - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "properties": { - "selfLink": { - "type": "string", - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only." - }, - "resourceVersion": { - "type": "string", - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency" - } - } - }, - "v1.ComponentStatus": { - "id": "v1.ComponentStatus", - "description": "ComponentStatus (and ComponentStatusList) holds the cluster validation info.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.ComponentCondition" - }, - "description": "List of component conditions observed" - } - } - }, - "v1.ComponentCondition": { - "id": "v1.ComponentCondition", - "description": "Information about the condition of a component.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of condition for a component. Valid value: \"Healthy\"" - }, - "status": { - "type": "string", - "description": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\"." - }, - "message": { - "type": "string", - "description": "Message about the condition for a component. For example, information about a health check." - }, - "error": { - "type": "string", - "description": "Condition error code for a component. For example, a health check error code." - } - } - }, - "v1.ConfigMapList": { - "id": "v1.ConfigMapList", - "description": "ConfigMapList is a resource containing a list of ConfigMap objects.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ConfigMap" - }, - "description": "Items is the list of ConfigMaps." - } - } - }, - "v1.ConfigMap": { - "id": "v1.ConfigMap", - "description": "ConfigMap holds configuration data for pods to consume.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "data": { - "type": "object", - "description": "Data contains the configuration data. Each key must be a valid DNS_SUBDOMAIN with an optional leading dot." - } - } - }, - "v1.Status": { - "id": "v1.Status", - "description": "Status is a return value for calls that don't return other objects.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "status": { - "type": "string", - "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "message": { - "type": "string", - "description": "A human-readable description of the status of this operation." - }, - "reason": { - "type": "string", - "description": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it." - }, - "details": { - "$ref": "v1.StatusDetails", - "description": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type." - }, - "code": { - "type": "integer", - "format": "int32", - "description": "Suggested HTTP return code for this status, 0 if not set." - } - } - }, - "v1.StatusDetails": { - "id": "v1.StatusDetails", - "description": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", - "properties": { - "name": { - "type": "string", - "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described)." - }, - "group": { - "type": "string", - "description": "The group attribute of the resource associated with the status StatusReason." - }, - "kind": { - "type": "string", - "description": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "causes": { - "type": "array", - "items": { - "$ref": "v1.StatusCause" - }, - "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes." - }, - "retryAfterSeconds": { - "type": "integer", - "format": "int32", - "description": "If specified, the time in seconds before the operation should be retried." - } - } - }, - "v1.StatusCause": { - "id": "v1.StatusCause", - "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", - "properties": { - "reason": { - "type": "string", - "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available." - }, - "message": { - "type": "string", - "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader." - }, - "field": { - "type": "string", - "description": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"" - } - } - }, - "v1.WatchEvent": { - "id": "v1.WatchEvent", - "required": [ - "type", - "object" - ], - "properties": { - "type": { - "type": "string" - }, - "object": { - "type": "string" - } - } - }, - "v1.Patch": { - "id": "v1.Patch", - "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", - "properties": {} - }, - "v1.DeleteOptions": { - "id": "v1.DeleteOptions", - "description": "DeleteOptions may be provided when deleting an API object.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "gracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately." - }, - "preconditions": { - "$ref": "v1.Preconditions", - "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned." - }, - "orphanDependents": { - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both." - }, - "propagationPolicy": { - "$ref": "v1.DeletionPropagation", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy." - } - } - }, - "v1.Preconditions": { - "id": "v1.Preconditions", - "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", - "properties": { - "uid": { - "$ref": "types.UID", - "description": "Specifies the target UID." - } - } - }, - "types.UID": { - "id": "types.UID", - "properties": {} - }, - "v1.DeletionPropagation": { - "id": "v1.DeletionPropagation", - "properties": {} - }, - "v1.EndpointsList": { - "id": "v1.EndpointsList", - "description": "EndpointsList is a list of endpoints.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Endpoints" - }, - "description": "List of endpoints." - } - } - }, - "v1.Endpoints": { - "id": "v1.Endpoints", - "description": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", - "required": [ - "subsets" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "subsets": { - "type": "array", - "items": { - "$ref": "v1.EndpointSubset" - }, - "description": "The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service." - } - } - }, - "v1.EndpointSubset": { - "id": "v1.EndpointSubset", - "description": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]", - "properties": { - "addresses": { - "type": "array", - "items": { - "$ref": "v1.EndpointAddress" - }, - "description": "IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize." - }, - "notReadyAddresses": { - "type": "array", - "items": { - "$ref": "v1.EndpointAddress" - }, - "description": "IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check." - }, - "ports": { - "type": "array", - "items": { - "$ref": "v1.EndpointPort" - }, - "description": "Port numbers available on the related IP addresses." - } - } - }, - "v1.EndpointAddress": { - "id": "v1.EndpointAddress", - "description": "EndpointAddress is a tuple that describes single IP address.", - "required": [ - "ip" - ], - "properties": { - "ip": { - "type": "string", - "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready." - }, - "hostname": { - "type": "string", - "description": "The Hostname of this endpoint" - }, - "nodeName": { - "type": "string", - "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node." - }, - "targetRef": { - "$ref": "v1.ObjectReference", - "description": "Reference to object providing the endpoint." - } - } - }, - "v1.EndpointPort": { - "id": "v1.EndpointPort", - "description": "EndpointPort is a tuple that describes a single port.", - "required": [ - "port" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined." - }, - "port": { - "type": "integer", - "format": "int32", - "description": "The port number of the endpoint." - }, - "protocol": { - "type": "string", - "description": "The IP protocol for this port. Must be UDP or TCP. Default is TCP." - } - } - }, - "v1.EventList": { - "id": "v1.EventList", - "description": "EventList is a list of events.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Event" - }, - "description": "List of events" - } - } - }, - "v1.Event": { - "id": "v1.Event", - "description": "Event is a report of an event somewhere in the cluster.", - "required": [ - "metadata", - "involvedObject" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "involvedObject": { - "$ref": "v1.ObjectReference", - "description": "The object that this event is about." - }, - "reason": { - "type": "string", - "description": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status." - }, - "message": { - "type": "string", - "description": "A human-readable description of the status of this operation." - }, - "source": { - "$ref": "v1.EventSource", - "description": "The component reporting this event. Should be a short machine understandable string." - }, - "firstTimestamp": { - "type": "string", - "description": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)" - }, - "lastTimestamp": { - "type": "string", - "description": "The time at which the most recent occurrence of this event was recorded." - }, - "count": { - "type": "integer", - "format": "int32", - "description": "The number of times this event has occurred." - }, - "type": { - "type": "string", - "description": "Type of this event (Normal, Warning), new types could be added in the future" - } - } - }, - "v1.EventSource": { - "id": "v1.EventSource", - "description": "EventSource contains information for an event.", - "properties": { - "component": { - "type": "string", - "description": "Component from which the event is generated." - }, - "host": { - "type": "string", - "description": "Node name on which the event is generated." - } - } - }, - "v1.LimitRangeList": { - "id": "v1.LimitRangeList", - "description": "LimitRangeList is a list of LimitRange items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.LimitRange" - }, - "description": "Items is a list of LimitRange objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md" - } - } - }, - "v1.LimitRange": { - "id": "v1.LimitRange", - "description": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.LimitRangeSpec", - "description": "Spec defines the limits enforced. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.LimitRangeSpec": { - "id": "v1.LimitRangeSpec", - "description": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", - "required": [ - "limits" - ], - "properties": { - "limits": { - "type": "array", - "items": { - "$ref": "v1.LimitRangeItem" - }, - "description": "Limits is the list of LimitRangeItem objects that are enforced." - } - } - }, - "v1.LimitRangeItem": { - "id": "v1.LimitRangeItem", - "description": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", - "properties": { - "type": { - "type": "string", - "description": "Type of resource that this limit applies to." - }, - "max": { - "type": "object", - "description": "Max usage constraints on this kind by resource name." - }, - "min": { - "type": "object", - "description": "Min usage constraints on this kind by resource name." - }, - "default": { - "type": "object", - "description": "Default resource requirement limit value by resource name if resource limit is omitted." - }, - "defaultRequest": { - "type": "object", - "description": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted." - }, - "maxLimitRequestRatio": { - "type": "object", - "description": "MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource." - } - } - }, - "v1.NamespaceList": { - "id": "v1.NamespaceList", - "description": "NamespaceList is a list of Namespaces.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Namespace" - }, - "description": "Items is the list of Namespace objects in the list. More info: http://kubernetes.io/docs/user-guide/namespaces" - } - } - }, - "v1.Namespace": { - "id": "v1.Namespace", - "description": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.NamespaceSpec", - "description": "Spec defines the behavior of the Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.NamespaceStatus", - "description": "Status describes the current status of a Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.NamespaceSpec": { - "id": "v1.NamespaceSpec", - "description": "NamespaceSpec describes the attributes on a Namespace.", - "properties": { - "finalizers": { - "type": "array", - "items": { - "$ref": "v1.FinalizerName" - }, - "description": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers" - } - } - }, - "v1.FinalizerName": { - "id": "v1.FinalizerName", - "properties": {} - }, - "v1.NamespaceStatus": { - "id": "v1.NamespaceStatus", - "description": "NamespaceStatus is information about the current status of a Namespace.", - "properties": { - "phase": { - "type": "string", - "description": "Phase is the current lifecycle phase of the namespace. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases" - } - } - }, - "v1.NodeList": { - "id": "v1.NodeList", - "description": "NodeList is the whole list of all Nodes which have been registered with master.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Node" - }, - "description": "List of nodes" - } - } - }, - "v1.Node": { - "id": "v1.Node", - "description": "Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.NodeSpec", - "description": "Spec defines the behavior of a node. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.NodeStatus", - "description": "Most recently observed status of the node. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.NodeSpec": { - "id": "v1.NodeSpec", - "description": "NodeSpec describes the attributes that a node is created with.", - "properties": { - "podCIDR": { - "type": "string", - "description": "PodCIDR represents the pod IP range assigned to the node." - }, - "externalID": { - "type": "string", - "description": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated." - }, - "providerID": { - "type": "string", - "description": "ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e" - }, - "unschedulable": { - "type": "boolean", - "description": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration" - }, - "taints": { - "type": "array", - "items": { - "$ref": "v1.Taint" - }, - "description": "If specified, the node's taints." - } - } - }, - "v1.Taint": { - "id": "v1.Taint", - "description": "The node this Taint is attached to has the effect \"effect\" on any pod that that does not tolerate the Taint.", - "required": [ - "key", - "effect" - ], - "properties": { - "key": { - "type": "string", - "description": "Required. The taint key to be applied to a node." - }, - "value": { - "type": "string", - "description": "Required. The taint value corresponding to the taint key." - }, - "effect": { - "type": "string", - "description": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute." - }, - "timeAdded": { - "type": "string", - "description": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints." - } - } - }, - "v1.NodeStatus": { - "id": "v1.NodeStatus", - "description": "NodeStatus is information about the current status of a node.", - "properties": { - "capacity": { - "type": "object", - "description": "Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details." - }, - "allocatable": { - "type": "object", - "description": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity." - }, - "phase": { - "type": "string", - "description": "NodePhase is the recently observed lifecycle phase of the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase The field is never populated, and now is deprecated." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.NodeCondition" - }, - "description": "Conditions is an array of current observed node conditions. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition" - }, - "addresses": { - "type": "array", - "items": { - "$ref": "v1.NodeAddress" - }, - "description": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses" - }, - "daemonEndpoints": { - "$ref": "v1.NodeDaemonEndpoints", - "description": "Endpoints of daemons running on the Node." - }, - "nodeInfo": { - "$ref": "v1.NodeSystemInfo", - "description": "Set of ids/uuids to uniquely identify the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info" - }, - "images": { - "type": "array", - "items": { - "$ref": "v1.ContainerImage" - }, - "description": "List of container images on this node" - }, - "volumesInUse": { - "type": "array", - "items": { - "$ref": "v1.UniqueVolumeName" - }, - "description": "List of attachable volumes in use (mounted) by the node." - }, - "volumesAttached": { - "type": "array", - "items": { - "$ref": "v1.AttachedVolume" - }, - "description": "List of volumes that are attached to the node." - } - } - }, - "v1.NodeCondition": { - "id": "v1.NodeCondition", - "description": "NodeCondition contains condition information for a node.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of node condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastHeartbeatTime": { - "type": "string", - "description": "Last time we got an update on a given condition." - }, - "lastTransitionTime": { - "type": "string", - "description": "Last time the condition transit from one status to another." - }, - "reason": { - "type": "string", - "description": "(brief) reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "Human readable message indicating details about last transition." - } - } - }, - "v1.NodeAddress": { - "id": "v1.NodeAddress", - "description": "NodeAddress contains information for the node's address.", - "required": [ - "type", - "address" - ], - "properties": { - "type": { - "type": "string", - "description": "Node address type, one of Hostname, ExternalIP or InternalIP." - }, - "address": { - "type": "string", - "description": "The node address." - } - } - }, - "v1.NodeDaemonEndpoints": { - "id": "v1.NodeDaemonEndpoints", - "description": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", - "properties": { - "kubeletEndpoint": { - "$ref": "v1.DaemonEndpoint", - "description": "Endpoint on which Kubelet is listening." - } - } - }, - "v1.DaemonEndpoint": { - "id": "v1.DaemonEndpoint", - "description": "DaemonEndpoint contains information about a single Daemon endpoint.", - "required": [ - "Port" - ], - "properties": { - "Port": { - "type": "integer", - "format": "int32", - "description": "Port number of the given endpoint." - } - } - }, - "v1.NodeSystemInfo": { - "id": "v1.NodeSystemInfo", - "description": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", - "required": [ - "machineID", - "systemUUID", - "bootID", - "kernelVersion", - "osImage", - "containerRuntimeVersion", - "kubeletVersion", - "kubeProxyVersion", - "operatingSystem", - "architecture" - ], - "properties": { - "machineID": { - "type": "string", - "description": "MachineID reported by the node. For unique machine identification in the cluster this field is prefered. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html" - }, - "systemUUID": { - "type": "string", - "description": "SystemUUID reported by the node. For unique machine identification MachineID is prefered. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html" - }, - "bootID": { - "type": "string", - "description": "Boot ID reported by the node." - }, - "kernelVersion": { - "type": "string", - "description": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64)." - }, - "osImage": { - "type": "string", - "description": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy))." - }, - "containerRuntimeVersion": { - "type": "string", - "description": "ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0)." - }, - "kubeletVersion": { - "type": "string", - "description": "Kubelet Version reported by the node." - }, - "kubeProxyVersion": { - "type": "string", - "description": "KubeProxy Version reported by the node." - }, - "operatingSystem": { - "type": "string", - "description": "The Operating System reported by the node" - }, - "architecture": { - "type": "string", - "description": "The Architecture reported by the node" - } - } - }, - "v1.ContainerImage": { - "id": "v1.ContainerImage", - "description": "Describe a container image", - "required": [ - "names" - ], - "properties": { - "names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Names by which this image is known. e.g. [\"gcr.io/google_containers/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]" - }, - "sizeBytes": { - "type": "integer", - "format": "int64", - "description": "The size of the image in bytes." - } - } - }, - "v1.UniqueVolumeName": { - "id": "v1.UniqueVolumeName", - "properties": {} - }, - "v1.AttachedVolume": { - "id": "v1.AttachedVolume", - "description": "AttachedVolume describes a volume attached to a node", - "required": [ - "name", - "devicePath" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the attached volume" - }, - "devicePath": { - "type": "string", - "description": "DevicePath represents the device path where the volume should be available" - } - } - }, - "v1.PersistentVolumeClaimList": { - "id": "v1.PersistentVolumeClaimList", - "description": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeClaim" - }, - "description": "A list of persistent volume claims. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - } - } - }, - "v1.PersistentVolumeClaim": { - "id": "v1.PersistentVolumeClaim", - "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PersistentVolumeClaimSpec", - "description": "Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "status": { - "$ref": "v1.PersistentVolumeClaimStatus", - "description": "Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - } - } - }, - "v1.PersistentVolumeClaimSpec": { - "id": "v1.PersistentVolumeClaimSpec", - "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "properties": { - "accessModes": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeAccessMode" - }, - "description": "AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1" - }, - "selector": { - "$ref": "v1.LabelSelector", - "description": "A label query over volumes to consider for binding." - }, - "resources": { - "$ref": "v1.ResourceRequirements", - "description": "Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources" - }, - "volumeName": { - "type": "string", - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim." - }, - "storageClassName": { - "type": "string", - "description": "Name of the StorageClass required by the claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#class-1" - } - } - }, - "v1.PersistentVolumeAccessMode": { - "id": "v1.PersistentVolumeAccessMode", - "properties": {} - }, - "v1.LabelSelector": { - "id": "v1.LabelSelector", - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "properties": { - "matchLabels": { - "type": "object", - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - }, - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.LabelSelectorRequirement" - }, - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed." - } - } - }, - "v1.LabelSelectorRequirement": { - "id": "v1.LabelSelectorRequirement", - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "key is the label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - } - } - }, - "v1.ResourceRequirements": { - "id": "v1.ResourceRequirements", - "description": "ResourceRequirements describes the compute resource requirements.", - "properties": { - "limits": { - "type": "object", - "description": "Limits describes the maximum amount of compute resources allowed. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - }, - "requests": { - "type": "object", - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: http://kubernetes.io/docs/user-guide/compute-resources/" - } - } - }, - "v1.PersistentVolumeClaimStatus": { - "id": "v1.PersistentVolumeClaimStatus", - "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", - "properties": { - "phase": { - "type": "string", - "description": "Phase represents the current phase of PersistentVolumeClaim." - }, - "accessModes": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeAccessMode" - }, - "description": "AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1" - }, - "capacity": { - "type": "object", - "description": "Represents the actual resources of the underlying volume." - } - } - }, - "v1.PersistentVolumeList": { - "id": "v1.PersistentVolumeList", - "description": "PersistentVolumeList is a list of PersistentVolume items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolume" - }, - "description": "List of persistent volumes. More info: http://kubernetes.io/docs/user-guide/persistent-volumes" - } - } - }, - "v1.PersistentVolume": { - "id": "v1.PersistentVolume", - "description": "PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PersistentVolumeSpec", - "description": "Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes" - }, - "status": { - "$ref": "v1.PersistentVolumeStatus", - "description": "Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes" - } - } - }, - "v1.PersistentVolumeSpec": { - "id": "v1.PersistentVolumeSpec", - "description": "PersistentVolumeSpec is the specification of a persistent volume.", - "properties": { - "capacity": { - "type": "object", - "description": "A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity" - }, - "gcePersistentDisk": { - "$ref": "v1.GCEPersistentDiskVolumeSource", - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "awsElasticBlockStore": { - "$ref": "v1.AWSElasticBlockStoreVolumeSource", - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "hostPath": { - "$ref": "v1.HostPathVolumeSource", - "description": "HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - }, - "glusterfs": { - "$ref": "v1.GlusterfsVolumeSource", - "description": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md" - }, - "nfs": { - "$ref": "v1.NFSVolumeSource", - "description": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "rbd": { - "$ref": "v1.RBDVolumeSource", - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md" - }, - "iscsi": { - "$ref": "v1.ISCSIVolumeSource", - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin." - }, - "cinder": { - "$ref": "v1.CinderVolumeSource", - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "cephfs": { - "$ref": "v1.CephFSVolumeSource", - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - }, - "fc": { - "$ref": "v1.FCVolumeSource", - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - }, - "flocker": { - "$ref": "v1.FlockerVolumeSource", - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running" - }, - "flexVolume": { - "$ref": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future." - }, - "azureFile": { - "$ref": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod." - }, - "vsphereVolume": { - "$ref": "v1.VsphereVirtualDiskVolumeSource", - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - }, - "quobyte": { - "$ref": "v1.QuobyteVolumeSource", - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - }, - "azureDisk": { - "$ref": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - }, - "photonPersistentDisk": { - "$ref": "v1.PhotonPersistentDiskVolumeSource", - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - }, - "portworxVolume": { - "$ref": "v1.PortworxVolumeSource", - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" - }, - "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - }, - "accessModes": { - "type": "array", - "items": { - "$ref": "v1.PersistentVolumeAccessMode" - }, - "description": "AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes" - }, - "claimRef": { - "$ref": "v1.ObjectReference", - "description": "ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding" - }, - "persistentVolumeReclaimPolicy": { - "type": "string", - "description": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy" - }, - "storageClassName": { - "type": "string", - "description": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass." - } - } - }, - "v1.GCEPersistentDiskVolumeSource": { - "id": "v1.GCEPersistentDiskVolumeSource", - "description": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", - "required": [ - "pdName" - ], - "properties": { - "pdName": { - "type": "string", - "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - } - } - }, - "v1.AWSElasticBlockStoreVolumeSource": { - "id": "v1.AWSElasticBlockStoreVolumeSource", - "description": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "partition": { - "type": "integer", - "format": "int32", - "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." - }, - "readOnly": { - "type": "boolean", - "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - } - } - }, - "v1.HostPathVolumeSource": { - "id": "v1.HostPathVolumeSource", - "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Path of the directory on the host. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - } - } - }, - "v1.GlusterfsVolumeSource": { - "id": "v1.GlusterfsVolumeSource", - "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "endpoints", - "path" - ], - "properties": { - "endpoints": { - "type": "string", - "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "path": { - "type": "string", - "description": "Path is the Glusterfs volume path. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod" - } - } - }, - "v1.NFSVolumeSource": { - "id": "v1.NFSVolumeSource", - "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", - "required": [ - "server", - "path" - ], - "properties": { - "server": { - "type": "string", - "description": "Server is the hostname or IP address of the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "path": { - "type": "string", - "description": "Path that is exported by the NFS server. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - } - } - }, - "v1.RBDVolumeSource": { - "id": "v1.RBDVolumeSource", - "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", - "required": [ - "monitors", - "image" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A collection of Ceph monitors. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "image": { - "type": "string", - "description": "The rados image name. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#rbd" - }, - "pool": { - "type": "string", - "description": "The rados pool name. Default is rbd. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it." - }, - "user": { - "type": "string", - "description": "The rados user name. Default is admin. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "keyring": { - "type": "string", - "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it" - } - } - }, - "v1.LocalObjectReference": { - "id": "v1.LocalObjectReference", - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - } - } - }, - "v1.ISCSIVolumeSource": { - "id": "v1.ISCSIVolumeSource", - "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", - "required": [ - "targetPortal", - "iqn", - "lun" - ], - "properties": { - "targetPortal": { - "type": "string", - "description": "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - }, - "iqn": { - "type": "string", - "description": "Target iSCSI Qualified Name." - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "iSCSI target lun number." - }, - "iscsiInterface": { - "type": "string", - "description": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport." - }, - "fsType": { - "type": "string", - "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://kubernetes.io/docs/user-guide/volumes#iscsi" - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false." - }, - "portals": { - "type": "array", - "items": { - "type": "string" - }, - "description": "iSCSI target portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - } - } - }, - "v1.CinderVolumeSource": { - "id": "v1.CinderVolumeSource", - "description": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "volume id used to identify the volume in cinder More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - } - } - }, - "v1.CephFSVolumeSource": { - "id": "v1.CephFSVolumeSource", - "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", - "required": [ - "monitors" - ], - "properties": { - "monitors": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: Monitors is a collection of Ceph monitors More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "path": { - "type": "string", - "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /" - }, - "user": { - "type": "string", - "description": "Optional: User is the rados user name, default is admin More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretFile": { - "type": "string", - "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it" - } - } - }, - "v1.FCVolumeSource": { - "id": "v1.FCVolumeSource", - "description": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", - "required": [ - "targetWWNs", - "lun" - ], - "properties": { - "targetWWNs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required: FC target worldwide names (WWNs)" - }, - "lun": { - "type": "integer", - "format": "int32", - "description": "Required: FC target lun number" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.FlockerVolumeSource": { - "id": "v1.FlockerVolumeSource", - "description": "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", - "properties": { - "datasetName": { - "type": "string", - "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated" - }, - "datasetUUID": { - "type": "string", - "description": "UUID of the dataset. This is unique identifier of a Flocker dataset" - } - } - }, - "v1.FlexVolumeSource": { - "id": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", - "required": [ - "driver" - ], - "properties": { - "driver": { - "type": "string", - "description": "Driver is the name of the driver to use for this volume." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts." - }, - "readOnly": { - "type": "boolean", - "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - }, - "options": { - "type": "object", - "description": "Optional: Extra command options if any." - } - } - }, - "v1.AzureFileVolumeSource": { - "id": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", - "required": [ - "secretName", - "shareName" - ], - "properties": { - "secretName": { - "type": "string", - "description": "the name of secret that contains Azure Storage Account Name and Key" - }, - "shareName": { - "type": "string", - "description": "Share Name" - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.VsphereVirtualDiskVolumeSource": { - "id": "v1.VsphereVirtualDiskVolumeSource", - "description": "Represents a vSphere volume resource.", - "required": [ - "volumePath" - ], - "properties": { - "volumePath": { - "type": "string", - "description": "Path that identifies vSphere volume vmdk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.QuobyteVolumeSource": { - "id": "v1.QuobyteVolumeSource", - "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", - "required": [ - "registry", - "volume" - ], - "properties": { - "registry": { - "type": "string", - "description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes" - }, - "volume": { - "type": "string", - "description": "Volume is a string that references an already created Quobyte volume by name." - }, - "readOnly": { - "type": "boolean", - "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false." - }, - "user": { - "type": "string", - "description": "User to map volume access to Defaults to serivceaccount user" - }, - "group": { - "type": "string", - "description": "Group to map volume access to Default is no group" - } - } - }, - "v1.AzureDiskVolumeSource": { - "id": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", - "required": [ - "diskName", - "diskURI" - ], - "properties": { - "diskName": { - "type": "string", - "description": "The Name of the data disk in the blob storage" - }, - "diskURI": { - "type": "string", - "description": "The URI the data disk in the blob storage" - }, - "cachingMode": { - "$ref": "v1.AzureDataDiskCachingMode", - "description": "Host Caching mode: None, Read Only, Read Write." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.AzureDataDiskCachingMode": { - "id": "v1.AzureDataDiskCachingMode", - "properties": {} - }, - "v1.PhotonPersistentDiskVolumeSource": { - "id": "v1.PhotonPersistentDiskVolumeSource", - "description": "Represents a Photon Controller persistent disk resource.", - "required": [ - "pdID" - ], - "properties": { - "pdID": { - "type": "string", - "description": "ID that identifies Photon Controller persistent disk" - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - } - } - }, - "v1.PortworxVolumeSource": { - "id": "v1.PortworxVolumeSource", - "description": "PortworxVolumeSource represents a Portworx volume resource.", - "required": [ - "volumeID" - ], - "properties": { - "volumeID": { - "type": "string", - "description": "VolumeID uniquely identifies a Portworx volume" - }, - "fsType": { - "type": "string", - "description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.ScaleIOVolumeSource": { - "id": "v1.ScaleIOVolumeSource", - "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", - "required": [ - "gateway", - "system", - "secretRef" - ], - "properties": { - "gateway": { - "type": "string", - "description": "The host address of the ScaleIO API Gateway." - }, - "system": { - "type": "string", - "description": "The name of the storage system as configured in ScaleIO." - }, - "secretRef": { - "$ref": "v1.LocalObjectReference", - "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." - }, - "sslEnabled": { - "type": "boolean", - "description": "Flag to enable/disable SSL communication with Gateway, default false" - }, - "protectionDomain": { - "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." - }, - "storagePool": { - "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." - }, - "storageMode": { - "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." - }, - "volumeName": { - "type": "string", - "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source." - }, - "fsType": { - "type": "string", - "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - }, - "readOnly": { - "type": "boolean", - "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - } - } - }, - "v1.PersistentVolumeStatus": { - "id": "v1.PersistentVolumeStatus", - "description": "PersistentVolumeStatus is the current status of a persistent volume.", - "properties": { - "phase": { - "type": "string", - "description": "Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase" - }, - "message": { - "type": "string", - "description": "A human-readable message indicating details about why the volume is in this state." - }, - "reason": { - "type": "string", - "description": "Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI." - } - } - }, - "v1.PodList": { - "id": "v1.PodList", - "description": "PodList is a list of Pods.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Pod" - }, - "description": "List of pods. More info: http://kubernetes.io/docs/user-guide/pods" - } - } - }, - "v1.Pod": { - "id": "v1.Pod", - "description": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PodSpec", - "description": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.PodStatus", - "description": "Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.PodSpec": { - "id": "v1.PodSpec", - "description": "PodSpec is a description of a pod.", - "required": [ - "containers" - ], - "properties": { - "volumes": { - "type": "array", - "items": { - "$ref": "v1.Volume" - }, - "description": "List of volumes that can be mounted by containers belonging to the pod. More info: http://kubernetes.io/docs/user-guide/volumes" - }, - "initContainers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "containers": { - "type": "array", - "items": { - "$ref": "v1.Container" - }, - "description": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers" - }, - "restartPolicy": { - "type": "string", - "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy" - }, - "terminationGracePeriodSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds." - }, - "activeDeadlineSeconds": { - "type": "integer", - "format": "int64", - "description": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer." - }, - "dnsPolicy": { - "type": "string", - "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'." - }, - "nodeSelector": { - "type": "object", - "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: http://kubernetes.io/docs/user-guide/node-selection/README" - }, - "serviceAccountName": { - "type": "string", - "description": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md" - }, - "serviceAccount": { - "type": "string", - "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead." - }, - "automountServiceAccountToken": { - "type": "boolean", - "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted." - }, - "nodeName": { - "type": "string", - "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements." - }, - "hostNetwork": { - "type": "boolean", - "description": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false." - }, - "hostPID": { - "type": "boolean", - "description": "Use the host's pid namespace. Optional: Default to false." - }, - "hostIPC": { - "type": "boolean", - "description": "Use the host's ipc namespace. Optional: Default to false." - }, - "securityContext": { - "$ref": "v1.PodSecurityContext", - "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field." - }, - "imagePullSecrets": { - "type": "array", - "items": { - "$ref": "v1.LocalObjectReference" - }, - "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod" - }, - "hostname": { - "type": "string", - "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value." - }, - "subdomain": { - "type": "string", - "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all." - }, - "affinity": { - "$ref": "v1.Affinity", - "description": "If specified, the pod's scheduling constraints" - }, - "schedulerName": { - "type": "string", - "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler." - }, - "tolerations": { - "type": "array", - "items": { - "$ref": "v1.Toleration" - }, - "description": "If specified, the pod's tolerations." - } - } - }, - "v1.Volume": { - "id": "v1.Volume", - "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "hostPath": { - "$ref": "v1.HostPathVolumeSource", - "description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: http://kubernetes.io/docs/user-guide/volumes#hostpath" - }, - "emptyDir": { - "$ref": "v1.EmptyDirVolumeSource", - "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - }, - "gcePersistentDisk": { - "$ref": "v1.GCEPersistentDiskVolumeSource", - "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#gcepersistentdisk" - }, - "awsElasticBlockStore": { - "$ref": "v1.AWSElasticBlockStoreVolumeSource", - "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://kubernetes.io/docs/user-guide/volumes#awselasticblockstore" - }, - "gitRepo": { - "$ref": "v1.GitRepoVolumeSource", - "description": "GitRepo represents a git repository at a particular revision." - }, - "secret": { - "$ref": "v1.SecretVolumeSource", - "description": "Secret represents a secret that should populate this volume. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "nfs": { - "$ref": "v1.NFSVolumeSource", - "description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: http://kubernetes.io/docs/user-guide/volumes#nfs" - }, - "iscsi": { - "$ref": "v1.ISCSIVolumeSource", - "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md" - }, - "glusterfs": { - "$ref": "v1.GlusterfsVolumeSource", - "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md" - }, - "persistentVolumeClaim": { - "$ref": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "rbd": { - "$ref": "v1.RBDVolumeSource", - "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md" - }, - "flexVolume": { - "$ref": "v1.FlexVolumeSource", - "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future." - }, - "cinder": { - "$ref": "v1.CinderVolumeSource", - "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md" - }, - "cephfs": { - "$ref": "v1.CephFSVolumeSource", - "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - }, - "flocker": { - "$ref": "v1.FlockerVolumeSource", - "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPI represents downward API about the pod that should populate this volume" - }, - "fc": { - "$ref": "v1.FCVolumeSource", - "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - }, - "azureFile": { - "$ref": "v1.AzureFileVolumeSource", - "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod." - }, - "configMap": { - "$ref": "v1.ConfigMapVolumeSource", - "description": "ConfigMap represents a configMap that should populate this volume" - }, - "vsphereVolume": { - "$ref": "v1.VsphereVirtualDiskVolumeSource", - "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - }, - "quobyte": { - "$ref": "v1.QuobyteVolumeSource", - "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - }, - "azureDisk": { - "$ref": "v1.AzureDiskVolumeSource", - "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - }, - "photonPersistentDisk": { - "$ref": "v1.PhotonPersistentDiskVolumeSource", - "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - }, - "projected": { - "$ref": "v1.ProjectedVolumeSource", - "description": "Items for all in one resources secrets, configmaps, and downward API" - }, - "portworxVolume": { - "$ref": "v1.PortworxVolumeSource", - "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" - }, - "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", - "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - } - } - }, - "v1.EmptyDirVolumeSource": { - "id": "v1.EmptyDirVolumeSource", - "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", - "properties": { - "medium": { - "type": "string", - "description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" - } - } - }, - "v1.GitRepoVolumeSource": { - "id": "v1.GitRepoVolumeSource", - "description": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.", - "required": [ - "repository" - ], - "properties": { - "repository": { - "type": "string", - "description": "Repository URL" - }, - "revision": { - "type": "string", - "description": "Commit hash for the specified revision." - }, - "directory": { - "type": "string", - "description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name." - } - } - }, - "v1.SecretVolumeSource": { - "id": "v1.SecretVolumeSource", - "description": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", - "properties": { - "secretName": { - "type": "string", - "description": "Name of the secret in the pod's namespace to use. More info: http://kubernetes.io/docs/user-guide/volumes#secrets" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's keys must be defined" - } - } - }, - "v1.KeyToPath": { - "id": "v1.KeyToPath", - "description": "Maps a string key to a path within a volume.", - "required": [ - "key", - "path" - ], - "properties": { - "key": { - "type": "string", - "description": "The key to project." - }, - "path": { - "type": "string", - "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.PersistentVolumeClaimVolumeSource": { - "id": "v1.PersistentVolumeClaimVolumeSource", - "description": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "type": "string", - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims" - }, - "readOnly": { - "type": "boolean", - "description": "Will force the ReadOnly setting in VolumeMounts. Default false." - } - } - }, - "v1.DownwardAPIVolumeSource": { - "id": "v1.DownwardAPIVolumeSource", - "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of downward API volume file" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.DownwardAPIVolumeFile": { - "id": "v1.DownwardAPIVolumeFile", - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" - }, - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "mode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.ObjectFieldSelector": { - "id": "v1.ObjectFieldSelector", - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "type": "string", - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - }, - "fieldPath": { - "type": "string", - "description": "Path of the field to select in the specified API version." - } - } - }, - "v1.ResourceFieldSelector": { - "id": "v1.ResourceFieldSelector", - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "type": "string", - "description": "Container name: required for volumes, optional for env vars" - }, - "resource": { - "type": "string", - "description": "Required: resource to select" - }, - "divisor": { - "type": "string", - "description": "Specifies the output format of the exposed resources, defaults to \"1\"" - } - } - }, - "v1.ConfigMapVolumeSource": { - "id": "v1.ConfigMapVolumeSource", - "description": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.ProjectedVolumeSource": { - "id": "v1.ProjectedVolumeSource", - "description": "Represents a projected volume source", - "required": [ - "sources" - ], - "properties": { - "sources": { - "type": "array", - "items": { - "$ref": "v1.VolumeProjection" - }, - "description": "list of volume projections" - }, - "defaultMode": { - "type": "integer", - "format": "int32", - "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - } - } - }, - "v1.VolumeProjection": { - "id": "v1.VolumeProjection", - "description": "Projection that may be projected along with other supported volume types", - "properties": { - "secret": { - "$ref": "v1.SecretProjection", - "description": "information about the secret data to project" - }, - "downwardAPI": { - "$ref": "v1.DownwardAPIProjection", - "description": "information about the downwardAPI data to project" - }, - "configMap": { - "$ref": "v1.ConfigMapProjection", - "description": "information about the configMap data to project" - } - } - }, - "v1.SecretProjection": { - "id": "v1.SecretProjection", - "description": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or its key must be defined" - } - } - }, - "v1.DownwardAPIProjection": { - "id": "v1.DownwardAPIProjection", - "description": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "v1.DownwardAPIVolumeFile" - }, - "description": "Items is a list of DownwardAPIVolume file" - } - } - }, - "v1.ConfigMapProjection": { - "id": "v1.ConfigMapProjection", - "description": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.KeyToPath" - }, - "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's keys must be defined" - } - } - }, - "v1.Container": { - "id": "v1.Container", - "description": "A single application container that you want to run within a pod.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated." - }, - "image": { - "type": "string", - "description": "Docker image name. More info: http://kubernetes.io/docs/user-guide/images" - }, - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "args": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/containers#containers-and-commands" - }, - "workingDir": { - "type": "string", - "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." - }, - "ports": { - "type": "array", - "items": { - "$ref": "v1.ContainerPort" - }, - "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated." - }, - "envFrom": { - "type": "array", - "items": { - "$ref": "v1.EnvFromSource" - }, - "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated." - }, - "env": { - "type": "array", - "items": { - "$ref": "v1.EnvVar" - }, - "description": "List of environment variables to set in the container. Cannot be updated." - }, - "resources": { - "$ref": "v1.ResourceRequirements", - "description": "Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources" - }, - "volumeMounts": { - "type": "array", - "items": { - "$ref": "v1.VolumeMount" - }, - "description": "Pod volumes to mount into the container's filesystem. Cannot be updated." - }, - "livenessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "readinessProbe": { - "$ref": "v1.Probe", - "description": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "lifecycle": { - "$ref": "v1.Lifecycle", - "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated." - }, - "terminationMessagePath": { - "type": "string", - "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated." - }, - "terminationMessagePolicy": { - "type": "string", - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated." - }, - "imagePullPolicy": { - "type": "string", - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/images#updating-images" - }, - "securityContext": { - "$ref": "v1.SecurityContext", - "description": "Security options the pod should run with. More info: http://releases.k8s.io/HEAD/docs/design/security_context.md" - }, - "stdin": { - "type": "boolean", - "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false." - }, - "stdinOnce": { - "type": "boolean", - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false" - }, - "tty": { - "type": "boolean", - "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false." - } - } - }, - "v1.ContainerPort": { - "id": "v1.ContainerPort", - "description": "ContainerPort represents a network port in a single container.", - "required": [ - "containerPort" - ], - "properties": { - "name": { - "type": "string", - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." - }, - "hostPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." - }, - "containerPort": { - "type": "integer", - "format": "int32", - "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536." - }, - "protocol": { - "type": "string", - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\"." - }, - "hostIP": { - "type": "string", - "description": "What host IP to bind the external port to." - } - } - }, - "v1.EnvFromSource": { - "id": "v1.EnvFromSource", - "description": "EnvFromSource represents the source of a set of ConfigMaps", - "properties": { - "prefix": { - "type": "string", - "description": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER." - }, - "configMapRef": { - "$ref": "v1.ConfigMapEnvSource", - "description": "The ConfigMap to select from" - }, - "secretRef": { - "$ref": "v1.SecretEnvSource", - "description": "The Secret to select from" - } - } - }, - "v1.ConfigMapEnvSource": { - "id": "v1.ConfigMapEnvSource", - "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap must be defined" - } - } - }, - "v1.SecretEnvSource": { - "id": "v1.SecretEnvSource", - "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret must be defined" - } - } - }, - "v1.EnvVar": { - "id": "v1.EnvVar", - "description": "EnvVar represents an environment variable present in a Container.", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the environment variable. Must be a C_IDENTIFIER." - }, - "value": { - "type": "string", - "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." - }, - "valueFrom": { - "$ref": "v1.EnvVarSource", - "description": "Source for the environment variable's value. Cannot be used if value is not empty." - } - } - }, - "v1.EnvVarSource": { - "id": "v1.EnvVarSource", - "description": "EnvVarSource represents a source for the value of an EnvVar.", - "properties": { - "fieldRef": { - "$ref": "v1.ObjectFieldSelector", - "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP." - }, - "resourceFieldRef": { - "$ref": "v1.ResourceFieldSelector", - "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - }, - "configMapKeyRef": { - "$ref": "v1.ConfigMapKeySelector", - "description": "Selects a key of a ConfigMap." - }, - "secretKeyRef": { - "$ref": "v1.SecretKeySelector", - "description": "Selects a key of a secret in the pod's namespace" - } - } - }, - "v1.ConfigMapKeySelector": { - "id": "v1.ConfigMapKeySelector", - "description": "Selects a key from a ConfigMap.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key to select." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the ConfigMap or it's key must be defined" - } - } - }, - "v1.SecretKeySelector": { - "id": "v1.SecretKeySelector", - "description": "SecretKeySelector selects a key of a Secret.", - "required": [ - "key" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names" - }, - "key": { - "type": "string", - "description": "The key of the secret to select from. Must be a valid secret key." - }, - "optional": { - "type": "boolean", - "description": "Specify whether the Secret or it's key must be defined" - } - } - }, - "v1.VolumeMount": { - "id": "v1.VolumeMount", - "description": "VolumeMount describes a mounting of a Volume within a container.", - "required": [ - "name", - "mountPath" - ], - "properties": { - "name": { - "type": "string", - "description": "This must match the Name of a Volume." - }, - "readOnly": { - "type": "boolean", - "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." - }, - "mountPath": { - "type": "string", - "description": "Path within the container at which the volume should be mounted. Must not contain ':'." - }, - "subPath": { - "type": "string", - "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." - } - } - }, - "v1.Probe": { - "id": "v1.Probe", - "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - }, - "initialDelaySeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after the container has started before liveness probes are initiated. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "timeoutSeconds": { - "type": "integer", - "format": "int32", - "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: http://kubernetes.io/docs/user-guide/pod-states#container-probes" - }, - "periodSeconds": { - "type": "integer", - "format": "int32", - "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." - }, - "successThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1." - }, - "failureThreshold": { - "type": "integer", - "format": "int32", - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." - } - } - }, - "v1.ExecAction": { - "id": "v1.ExecAction", - "description": "ExecAction describes a \"run in container\" action.", - "properties": { - "command": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." - } - } - }, - "v1.HTTPGetAction": { - "id": "v1.HTTPGetAction", - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "required": [ - "port" - ], - "properties": { - "path": { - "type": "string", - "description": "Path to access on the HTTP server." - }, - "port": { - "type": "string", - "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - }, - "host": { - "type": "string", - "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." - }, - "scheme": { - "type": "string", - "description": "Scheme to use for connecting to the host. Defaults to HTTP." - }, - "httpHeaders": { - "type": "array", - "items": { - "$ref": "v1.HTTPHeader" - }, - "description": "Custom headers to set in the request. HTTP allows repeated headers." - } - } - }, - "v1.HTTPHeader": { - "id": "v1.HTTPHeader", - "description": "HTTPHeader describes a custom header to be used in HTTP probes", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "description": "The header field name" - }, - "value": { - "type": "string", - "description": "The header field value" - } - } - }, - "v1.TCPSocketAction": { - "id": "v1.TCPSocketAction", - "description": "TCPSocketAction describes an action based on opening a socket", - "required": [ - "port" - ], - "properties": { - "port": { - "type": "string", - "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." - } - } - }, - "v1.Lifecycle": { - "id": "v1.Lifecycle", - "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", - "properties": { - "postStart": { - "$ref": "v1.Handler", - "description": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - }, - "preStop": { - "$ref": "v1.Handler", - "description": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: http://kubernetes.io/docs/user-guide/container-environment#hook-details" - } - } - }, - "v1.Handler": { - "id": "v1.Handler", - "description": "Handler defines a specific action that should be taken", - "properties": { - "exec": { - "$ref": "v1.ExecAction", - "description": "One and only one of the following should be specified. Exec specifies the action to take." - }, - "httpGet": { - "$ref": "v1.HTTPGetAction", - "description": "HTTPGet specifies the http request to perform." - }, - "tcpSocket": { - "$ref": "v1.TCPSocketAction", - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported" - } - } - }, - "v1.SecurityContext": { - "id": "v1.SecurityContext", - "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", - "properties": { - "capabilities": { - "$ref": "v1.Capabilities", - "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." - }, - "privileged": { - "type": "boolean", - "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false." - }, - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "readOnlyRootFilesystem": { - "type": "boolean", - "description": "Whether this container has a read-only root filesystem. Default is false." - } - } - }, - "v1.Capabilities": { - "id": "v1.Capabilities", - "description": "Adds and removes POSIX capabilities from running containers.", - "properties": { - "add": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Added capabilities" - }, - "drop": { - "type": "array", - "items": { - "$ref": "v1.Capability" - }, - "description": "Removed capabilities" - } - } - }, - "v1.Capability": { - "id": "v1.Capability", - "properties": {} - }, - "v1.SELinuxOptions": { - "id": "v1.SELinuxOptions", - "description": "SELinuxOptions are the labels to be applied to the container", - "properties": { - "user": { - "type": "string", - "description": "User is a SELinux user label that applies to the container." - }, - "role": { - "type": "string", - "description": "Role is a SELinux role label that applies to the container." - }, - "type": { - "type": "string", - "description": "Type is a SELinux type label that applies to the container." - }, - "level": { - "type": "string", - "description": "Level is SELinux level label that applies to the container." - } - } - }, - "v1.PodSecurityContext": { - "id": "v1.PodSecurityContext", - "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "properties": { - "seLinuxOptions": { - "$ref": "v1.SELinuxOptions", - "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsUser": { - "type": "integer", - "format": "int64", - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." - }, - "runAsNonRoot": { - "type": "boolean", - "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." - }, - "supplementalGroups": { - "type": "array", - "items": { - "type": "integer" - }, - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container." - }, - "fsGroup": { - "type": "integer", - "format": "int64", - "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw " - } - } - }, - "v1.Affinity": { - "id": "v1.Affinity", - "description": "Affinity is a group of affinity scheduling rules.", - "properties": { - "nodeAffinity": { - "$ref": "v1.NodeAffinity", - "description": "Describes node affinity scheduling rules for the pod." - }, - "podAffinity": { - "$ref": "v1.PodAffinity", - "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." - }, - "podAntiAffinity": { - "$ref": "v1.PodAntiAffinity", - "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." - } - } - }, - "v1.NodeAffinity": { - "id": "v1.NodeAffinity", - "description": "Node affinity is a group of node affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "$ref": "v1.NodeSelector", - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PreferredSchedulingTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.NodeSelector": { - "id": "v1.NodeSelector", - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "required": [ - "nodeSelectorTerms" - ], - "properties": { - "nodeSelectorTerms": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorTerm" - }, - "description": "Required. A list of node selector terms. The terms are ORed." - } - } - }, - "v1.NodeSelectorTerm": { - "id": "v1.NodeSelectorTerm", - "description": "A null or empty node selector term matches no objects.", - "required": [ - "matchExpressions" - ], - "properties": { - "matchExpressions": { - "type": "array", - "items": { - "$ref": "v1.NodeSelectorRequirement" - }, - "description": "Required. A list of node selector requirements. The requirements are ANDed." - } - } - }, - "v1.NodeSelectorRequirement": { - "id": "v1.NodeSelectorRequirement", - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "type": "string", - "description": "The label key that the selector applies to." - }, - "operator": { - "type": "string", - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." - }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." - } - } - }, - "v1.PreferredSchedulingTerm": { - "id": "v1.PreferredSchedulingTerm", - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", - "required": [ - "weight", - "preference" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100." - }, - "preference": { - "$ref": "v1.NodeSelectorTerm", - "description": "A node selector term, associated with the corresponding weight." - } - } - }, - "v1.PodAffinity": { - "id": "v1.PodAffinity", - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.PodAffinityTerm": { - "id": "v1.PodAffinityTerm", - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \u003ctopologyKey\u003e tches that of any node on which a pod of the set of pods is running", - "properties": { - "labelSelector": { - "$ref": "v1.LabelSelector", - "description": "A label query over a set of resources, in this case pods." - }, - "namespaces": { - "type": "array", - "items": { - "type": "string" - }, - "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"" - }, - "topologyKey": { - "type": "string", - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed." - } - } - }, - "v1.WeightedPodAffinityTerm": { - "id": "v1.WeightedPodAffinityTerm", - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "required": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "weight": { - "type": "integer", - "format": "int32", - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." - }, - "podAffinityTerm": { - "$ref": "v1.PodAffinityTerm", - "description": "Required. A pod affinity term, associated with the corresponding weight." - } - } - }, - "v1.PodAntiAffinity": { - "id": "v1.PodAntiAffinity", - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "properties": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.PodAffinityTerm" - }, - "description": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." - }, - "preferredDuringSchedulingIgnoredDuringExecution": { - "type": "array", - "items": { - "$ref": "v1.WeightedPodAffinityTerm" - }, - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." - } - } - }, - "v1.Toleration": { - "id": "v1.Toleration", - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "properties": { - "key": { - "type": "string", - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys." - }, - "operator": { - "type": "string", - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category." - }, - "value": { - "type": "string", - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string." - }, - "effect": { - "type": "string", - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." - }, - "tolerationSeconds": { - "type": "integer", - "format": "int64", - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system." - } - } - }, - "v1.PodStatus": { - "id": "v1.PodStatus", - "description": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", - "properties": { - "phase": { - "type": "string", - "description": "Current condition of the pod. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-phase" - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.PodCondition" - }, - "description": "Current service state of pod. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions" - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about why the pod is in this condition." - }, - "reason": { - "type": "string", - "description": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk'" - }, - "hostIP": { - "type": "string", - "description": "IP address of the host to which the pod is assigned. Empty if not yet scheduled." - }, - "podIP": { - "type": "string", - "description": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated." - }, - "startTime": { - "type": "string", - "description": "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod." - }, - "initContainerStatuses": { - "type": "array", - "items": { - "$ref": "v1.ContainerStatus" - }, - "description": "The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses" - }, - "containerStatuses": { - "type": "array", - "items": { - "$ref": "v1.ContainerStatus" - }, - "description": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: http://kubernetes.io/docs/user-guide/pod-states#container-statuses" - }, - "qosClass": { - "type": "string", - "description": "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md" - } - } - }, - "v1.PodCondition": { - "id": "v1.PodCondition", - "description": "PodCondition contains details for the current condition of this pod.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type is the type of the condition. Currently only Ready. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions" - }, - "status": { - "type": "string", - "description": "Status is the status of the condition. Can be True, False, Unknown. More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions" - }, - "lastProbeTime": { - "type": "string", - "description": "Last time we probed the condition." - }, - "lastTransitionTime": { - "type": "string", - "description": "Last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "Unique, one-word, CamelCase reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "Human-readable message indicating details about last transition." - } - } - }, - "v1.ContainerStatus": { - "id": "v1.ContainerStatus", - "description": "ContainerStatus contains details for the current status of this container.", - "required": [ - "name", - "ready", - "restartCount", - "image", - "imageID" - ], - "properties": { - "name": { - "type": "string", - "description": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated." - }, - "state": { - "$ref": "v1.ContainerState", - "description": "Details about the container's current condition." - }, - "lastState": { - "$ref": "v1.ContainerState", - "description": "Details about the container's last termination condition." - }, - "ready": { - "type": "boolean", - "description": "Specifies whether the container has passed its readiness probe." - }, - "restartCount": { - "type": "integer", - "format": "int32", - "description": "The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC." - }, - "image": { - "type": "string", - "description": "The image the container is running. More info: http://kubernetes.io/docs/user-guide/images" - }, - "imageID": { - "type": "string", - "description": "ImageID of the container's image." - }, - "containerID": { - "type": "string", - "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'. More info: http://kubernetes.io/docs/user-guide/container-environment#container-information" - } - } - }, - "v1.ContainerState": { - "id": "v1.ContainerState", - "description": "ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.", - "properties": { - "waiting": { - "$ref": "v1.ContainerStateWaiting", - "description": "Details about a waiting container" - }, - "running": { - "$ref": "v1.ContainerStateRunning", - "description": "Details about a running container" - }, - "terminated": { - "$ref": "v1.ContainerStateTerminated", - "description": "Details about a terminated container" - } - } - }, - "v1.ContainerStateWaiting": { - "id": "v1.ContainerStateWaiting", - "description": "ContainerStateWaiting is a waiting state of a container.", - "properties": { - "reason": { - "type": "string", - "description": "(brief) reason the container is not yet running." - }, - "message": { - "type": "string", - "description": "Message regarding why the container is not yet running." - } - } - }, - "v1.ContainerStateRunning": { - "id": "v1.ContainerStateRunning", - "description": "ContainerStateRunning is a running state of a container.", - "properties": { - "startedAt": { - "type": "string", - "description": "Time at which the container was last (re-)started" - } - } - }, - "v1.ContainerStateTerminated": { - "id": "v1.ContainerStateTerminated", - "description": "ContainerStateTerminated is a terminated state of a container.", - "required": [ - "exitCode" - ], - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "description": "Exit status from the last termination of the container" - }, - "signal": { - "type": "integer", - "format": "int32", - "description": "Signal from the last termination of the container" - }, - "reason": { - "type": "string", - "description": "(brief) reason from the last termination of the container" - }, - "message": { - "type": "string", - "description": "Message regarding the last termination of the container" - }, - "startedAt": { - "type": "string", - "description": "Time at which previous execution of the container started" - }, - "finishedAt": { - "type": "string", - "description": "Time at which the container last terminated" - }, - "containerID": { - "type": "string", - "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'" - } - } - }, - "v1beta1.Eviction": { - "id": "v1beta1.Eviction", - "description": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods/\u003cpod name\u003e/evictions.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "ObjectMeta describes the pod that is being evicted." - }, - "deleteOptions": { - "$ref": "v1.DeleteOptions", - "description": "DeleteOptions may be provided" - } - } - }, - "v1.PodTemplateList": { - "id": "v1.PodTemplateList", - "description": "PodTemplateList is a list of PodTemplates.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.PodTemplate" - }, - "description": "List of pod templates" - } - } - }, - "v1.PodTemplate": { - "id": "v1.PodTemplate", - "description": "PodTemplate describes a template for creating copies of a predefined pod.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template defines the pods that will be created from this pod template. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.PodTemplateSpec": { - "id": "v1.PodTemplateSpec", - "description": "PodTemplateSpec describes the data a pod should have when created from a template", - "properties": { - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.PodSpec", - "description": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ReplicationControllerList": { - "id": "v1.ReplicationControllerList", - "description": "ReplicationControllerList is a collection of replication controllers.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ReplicationController" - }, - "description": "List of replication controllers. More info: http://kubernetes.io/docs/user-guide/replication-controller" - } - } - }, - "v1.ReplicationController": { - "id": "v1.ReplicationController", - "description": "ReplicationController represents the configuration of a replication controller.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.ReplicationControllerSpec", - "description": "Spec defines the specification of the desired behavior of the replication controller. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.ReplicationControllerStatus", - "description": "Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ReplicationControllerSpec": { - "id": "v1.ReplicationControllerSpec", - "description": "ReplicationControllerSpec is the specification of a replication controller.", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "minReadySeconds": { - "type": "integer", - "format": "int32", - "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)" - }, - "selector": { - "type": "object", - "description": "Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors" - }, - "template": { - "$ref": "v1.PodTemplateSpec", - "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: http://kubernetes.io/docs/user-guide/replication-controller#pod-template" - } - } - }, - "v1.ReplicationControllerStatus": { - "id": "v1.ReplicationControllerStatus", - "description": "ReplicationControllerStatus represents the current status of a replication controller.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "Replicas is the most recently oberved number of replicas. More info: http://kubernetes.io/docs/user-guide/replication-controller#what-is-a-replication-controller" - }, - "fullyLabeledReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of pods that have labels matching the labels of the pod template of the replication controller." - }, - "readyReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of ready replicas for this replication controller." - }, - "availableReplicas": { - "type": "integer", - "format": "int32", - "description": "The number of available replicas (ready for at least minReadySeconds) for this replication controller." - }, - "observedGeneration": { - "type": "integer", - "format": "int64", - "description": "ObservedGeneration reflects the generation of the most recently observed replication controller." - }, - "conditions": { - "type": "array", - "items": { - "$ref": "v1.ReplicationControllerCondition" - }, - "description": "Represents the latest available observations of a replication controller's current state." - } - } - }, - "v1.ReplicationControllerCondition": { - "id": "v1.ReplicationControllerCondition", - "description": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", - "required": [ - "type", - "status" - ], - "properties": { - "type": { - "type": "string", - "description": "Type of replication controller condition." - }, - "status": { - "type": "string", - "description": "Status of the condition, one of True, False, Unknown." - }, - "lastTransitionTime": { - "type": "string", - "description": "The last time the condition transitioned from one status to another." - }, - "reason": { - "type": "string", - "description": "The reason for the condition's last transition." - }, - "message": { - "type": "string", - "description": "A human readable message indicating details about the transition." - } - } - }, - "v1.Scale": { - "id": "v1.Scale", - "description": "Scale represents a scaling request for a resource.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata." - }, - "spec": { - "$ref": "v1.ScaleSpec", - "description": "defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status." - }, - "status": { - "$ref": "v1.ScaleStatus", - "description": "current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only." - } - } - }, - "v1.ScaleSpec": { - "id": "v1.ScaleSpec", - "description": "ScaleSpec describes the attributes of a scale subresource.", - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "desired number of instances for the scaled object." - } - } - }, - "v1.ScaleStatus": { - "id": "v1.ScaleStatus", - "description": "ScaleStatus represents the current status of a scale subresource.", - "required": [ - "replicas" - ], - "properties": { - "replicas": { - "type": "integer", - "format": "int32", - "description": "actual number of observed instances of the scaled object." - }, - "selector": { - "type": "string", - "description": "label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" - } - } - }, - "v1.ResourceQuotaList": { - "id": "v1.ResourceQuotaList", - "description": "ResourceQuotaList is a list of ResourceQuota items.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ResourceQuota" - }, - "description": "Items is a list of ResourceQuota objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota" - } - } - }, - "v1.ResourceQuota": { - "id": "v1.ResourceQuota", - "description": "ResourceQuota sets aggregate quota restrictions enforced per namespace", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.ResourceQuotaSpec", - "description": "Spec defines the desired quota. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.ResourceQuotaStatus", - "description": "Status defines the actual enforced quota and its current usage. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ResourceQuotaSpec": { - "id": "v1.ResourceQuotaSpec", - "description": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", - "properties": { - "hard": { - "type": "object", - "description": "Hard is the set of desired hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota" - }, - "scopes": { - "type": "array", - "items": { - "$ref": "v1.ResourceQuotaScope" - }, - "description": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects." - } - } - }, - "v1.ResourceQuotaScope": { - "id": "v1.ResourceQuotaScope", - "properties": {} - }, - "v1.ResourceQuotaStatus": { - "id": "v1.ResourceQuotaStatus", - "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", - "properties": { - "hard": { - "type": "object", - "description": "Hard is the set of enforced hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota" - }, - "used": { - "type": "object", - "description": "Used is the current observed total usage of the resource in the namespace." - } - } - }, - "v1.SecretList": { - "id": "v1.SecretList", - "description": "SecretList is a list of Secret.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Secret" - }, - "description": "Items is a list of secret objects. More info: http://kubernetes.io/docs/user-guide/secrets" - } - } - }, - "v1.Secret": { - "id": "v1.Secret", - "description": "Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "data": { - "type": "object", - "description": "Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN or leading dot followed by valid DNS_SUBDOMAIN. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4" - }, - "stringData": { - "type": "object", - "description": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API." - }, - "type": { - "type": "string", - "description": "Used to facilitate programmatic handling of secret data." - } - } - }, - "v1.ServiceAccountList": { - "id": "v1.ServiceAccountList", - "description": "ServiceAccountList is a list of ServiceAccount objects", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.ServiceAccount" - }, - "description": "List of ServiceAccounts. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts" - } - } - }, - "v1.ServiceAccount": { - "id": "v1.ServiceAccount", - "description": "ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "secrets": { - "type": "array", - "items": { - "$ref": "v1.ObjectReference" - }, - "description": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: http://kubernetes.io/docs/user-guide/secrets" - }, - "imagePullSecrets": { - "type": "array", - "items": { - "$ref": "v1.LocalObjectReference" - }, - "description": "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: http://kubernetes.io/docs/user-guide/secrets#manually-specifying-an-imagepullsecret" - }, - "automountServiceAccountToken": { - "type": "boolean", - "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level." - } - } - }, - "v1.ServiceList": { - "id": "v1.ServiceList", - "description": "ServiceList holds a list of services.", - "required": [ - "items" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ListMeta", - "description": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "items": { - "type": "array", - "items": { - "$ref": "v1.Service" - }, - "description": "List of services" - } - } - }, - "v1.Service": { - "id": "v1.Service", - "description": "Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.", - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "metadata": { - "$ref": "v1.ObjectMeta", - "description": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata" - }, - "spec": { - "$ref": "v1.ServiceSpec", - "description": "Spec defines the behavior of a service. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - }, - "status": { - "$ref": "v1.ServiceStatus", - "description": "Most recently observed status of the service. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status" - } - } - }, - "v1.ServiceSpec": { - "id": "v1.ServiceSpec", - "description": "ServiceSpec describes the attributes that a user creates on a service.", - "properties": { - "ports": { - "type": "array", - "items": { - "$ref": "v1.ServicePort" - }, - "description": "The list of ports that are exposed by this service. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies" - }, - "selector": { - "type": "object", - "description": "Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://kubernetes.io/docs/user-guide/services#overview" - }, - "clusterIP": { - "type": "string", - "description": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies" - }, - "type": { - "type": "string", - "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: http://kubernetes.io/docs/user-guide/services#overview" - }, - "externalIPs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. A previous form of this functionality exists as the deprecatedPublicIPs field. When using this field, callers should also clear the deprecatedPublicIPs field." - }, - "deprecatedPublicIPs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "deprecatedPublicIPs is deprecated and replaced by the externalIPs field with almost the exact same semantics. This field is retained in the v1 API for compatibility until at least 8/20/2016. It will be removed from any new API revisions. If both deprecatedPublicIPs *and* externalIPs are set, deprecatedPublicIPs is used." - }, - "sessionAffinity": { - "type": "string", - "description": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: http://kubernetes.io/docs/user-guide/services#virtual-ips-and-service-proxies" - }, - "loadBalancerIP": { - "type": "string", - "description": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature." - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - }, - "description": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: http://kubernetes.io/docs/user-guide/services-firewalls" - }, - "externalName": { - "type": "string", - "description": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName." - } - } - }, - "v1.ServicePort": { - "id": "v1.ServicePort", - "description": "ServicePort contains information on service's port.", - "required": [ - "port" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service." - }, - "protocol": { - "type": "string", - "description": "The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default is TCP." - }, - "port": { - "type": "integer", - "format": "int32", - "description": "The port that will be exposed by this service." - }, - "targetPort": { - "type": "string", - "description": "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: http://kubernetes.io/docs/user-guide/services#defining-a-service" - }, - "nodePort": { - "type": "integer", - "format": "int32", - "description": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: http://kubernetes.io/docs/user-guide/services#type--nodeport" - } - } - }, - "v1.ServiceStatus": { - "id": "v1.ServiceStatus", - "description": "ServiceStatus represents the current status of a service.", - "properties": { - "loadBalancer": { - "$ref": "v1.LoadBalancerStatus", - "description": "LoadBalancer contains the current status of the load-balancer, if one is present." - } - } - }, - "v1.LoadBalancerStatus": { - "id": "v1.LoadBalancerStatus", - "description": "LoadBalancerStatus represents the status of a load-balancer.", - "properties": { - "ingress": { - "type": "array", - "items": { - "$ref": "v1.LoadBalancerIngress" - }, - "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points." - } - } - }, - "v1.LoadBalancerIngress": { - "id": "v1.LoadBalancerIngress", - "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", - "properties": { - "ip": { - "type": "string", - "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)" - }, - "hostname": { - "type": "string", - "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)" - } - } - }, - "v1.APIResourceList": { - "id": "v1.APIResourceList", - "description": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", - "required": [ - "groupVersion", - "resources" - ], - "properties": { - "kind": { - "type": "string", - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" - }, - "apiVersion": { - "type": "string", - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources" - }, - "groupVersion": { - "type": "string", - "description": "groupVersion is the group and version this APIResourceList is for." - }, - "resources": { - "type": "array", - "items": { - "$ref": "v1.APIResource" - }, - "description": "resources contains the name of the resources and if they are namespaced." - } - } - }, - "v1.APIResource": { - "id": "v1.APIResource", - "description": "APIResource specifies the name of a resource and whether it is namespaced.", - "required": [ - "name", - "namespaced", - "kind", - "verbs" - ], - "properties": { - "name": { - "type": "string", - "description": "name is the name of the resource." - }, - "namespaced": { - "type": "boolean", - "description": "namespaced indicates if a resource is namespaced or not." - }, - "kind": { - "type": "string", - "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')" - }, - "verbs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)" - }, - "shortNames": { - "type": "array", - "items": { - "type": "string" - }, - "description": "shortNames is a list of suggested short names of the resource." - } - } - } - } - } \ No newline at end of file diff --git a/cli-linux/build-bits-linux.sh b/obsolete/cli-linux/build-bits-linux.sh old mode 100755 new mode 100644 similarity index 100% rename from cli-linux/build-bits-linux.sh rename to obsolete/cli-linux/build-bits-linux.sh diff --git a/cli-linux/docker-compose.local.build.yml b/obsolete/cli-linux/docker-compose.local.build.yml similarity index 100% rename from cli-linux/docker-compose.local.build.yml rename to obsolete/cli-linux/docker-compose.local.build.yml diff --git a/cli-linux/prepare-spa-app.sh b/obsolete/cli-linux/prepare-spa-app.sh similarity index 100% rename from cli-linux/prepare-spa-app.sh rename to obsolete/cli-linux/prepare-spa-app.sh diff --git a/cli-linux/run.sh b/obsolete/cli-linux/run.sh similarity index 100% rename from cli-linux/run.sh rename to obsolete/cli-linux/run.sh diff --git a/cli-mac/build-bits.sh b/obsolete/cli-mac/build-bits.sh old mode 100755 new mode 100644 similarity index 100% rename from cli-mac/build-bits.sh rename to obsolete/cli-mac/build-bits.sh diff --git a/cli-windows/add-firewall-rules-for-sts-auth-thru-docker.ps1 b/obsolete/cli-windows/add-firewall-rules-for-sts-auth-thru-docker.ps1 similarity index 100% rename from cli-windows/add-firewall-rules-for-sts-auth-thru-docker.ps1 rename to obsolete/cli-windows/add-firewall-rules-for-sts-auth-thru-docker.ps1 diff --git a/cli-windows/build-bits-simple.ps1 b/obsolete/cli-windows/build-bits-simple.ps1 similarity index 100% rename from cli-windows/build-bits-simple.ps1 rename to obsolete/cli-windows/build-bits-simple.ps1 diff --git a/cli-windows/build-bits.ps1 b/obsolete/cli-windows/build-bits.ps1 similarity index 100% rename from cli-windows/build-bits.ps1 rename to obsolete/cli-windows/build-bits.ps1 diff --git a/cli-windows/build-images.ps1 b/obsolete/cli-windows/build-images.ps1 similarity index 100% rename from cli-windows/build-images.ps1 rename to obsolete/cli-windows/build-images.ps1 diff --git a/cli-windows/delete-images.ps1 b/obsolete/cli-windows/delete-images.ps1 similarity index 100% rename from cli-windows/delete-images.ps1 rename to obsolete/cli-windows/delete-images.ps1 diff --git a/cli-windows/delete-vs-and-eshop-images.ps1 b/obsolete/cli-windows/delete-vs-and-eshop-images.ps1 similarity index 100% rename from cli-windows/delete-vs-and-eshop-images.ps1 rename to obsolete/cli-windows/delete-vs-and-eshop-images.ps1 diff --git a/cli-windows/set-dockernat-networkategory-to-private.ps1 b/obsolete/cli-windows/set-dockernat-networkategory-to-private.ps1 similarity index 100% rename from cli-windows/set-dockernat-networkategory-to-private.ps1 rename to obsolete/cli-windows/set-dockernat-networkategory-to-private.ps1 diff --git a/cli-windows/start-external.ps1 b/obsolete/cli-windows/start-external.ps1 similarity index 100% rename from cli-windows/start-external.ps1 rename to obsolete/cli-windows/start-external.ps1 diff --git a/cli-windows/start-windows-containers.ps1 b/obsolete/cli-windows/start-windows-containers.ps1 similarity index 100% rename from cli-windows/start-windows-containers.ps1 rename to obsolete/cli-windows/start-windows-containers.ps1 diff --git a/cli-windows/vsts/build-bits-no-parallel.ps1 b/obsolete/cli-windows/vsts/build-bits-no-parallel.ps1 similarity index 100% rename from cli-windows/vsts/build-bits-no-parallel.ps1 rename to obsolete/cli-windows/vsts/build-bits-no-parallel.ps1 diff --git a/readme/README.ENV.md b/obsolete/readme/README.ENV.md similarity index 100% rename from readme/README.ENV.md rename to obsolete/readme/README.ENV.md diff --git a/readme/readme-docker-compose.md b/obsolete/readme/readme-docker-compose.md similarity index 100% rename from readme/readme-docker-compose.md rename to obsolete/readme/readme-docker-compose.md diff --git a/readme/readme.md b/obsolete/readme/readme.md similarity index 100% rename from readme/readme.md rename to obsolete/readme/readme.md diff --git a/run-docker-compose-build.ps1 b/obsolete/run-docker-compose-build.ps1 similarity index 100% rename from run-docker-compose-build.ps1 rename to obsolete/run-docker-compose-build.ps1 diff --git a/vsts-docs/builds/images/android-build-step1.png b/obsolete/vsts-docs/builds/images/android-build-step1.png similarity index 100% rename from vsts-docs/builds/images/android-build-step1.png rename to obsolete/vsts-docs/builds/images/android-build-step1.png diff --git a/vsts-docs/builds/images/android-build-step2.png b/obsolete/vsts-docs/builds/images/android-build-step2.png similarity index 100% rename from vsts-docs/builds/images/android-build-step2.png rename to obsolete/vsts-docs/builds/images/android-build-step2.png diff --git a/vsts-docs/builds/images/android-build-step3.png b/obsolete/vsts-docs/builds/images/android-build-step3.png similarity index 100% rename from vsts-docs/builds/images/android-build-step3.png rename to obsolete/vsts-docs/builds/images/android-build-step3.png diff --git a/vsts-docs/builds/images/android-build-step4.png b/obsolete/vsts-docs/builds/images/android-build-step4.png similarity index 100% rename from vsts-docs/builds/images/android-build-step4.png rename to obsolete/vsts-docs/builds/images/android-build-step4.png diff --git a/vsts-docs/builds/images/android-build-step5.png b/obsolete/vsts-docs/builds/images/android-build-step5.png similarity index 100% rename from vsts-docs/builds/images/android-build-step5.png rename to obsolete/vsts-docs/builds/images/android-build-step5.png diff --git a/vsts-docs/builds/images/android-build.png b/obsolete/vsts-docs/builds/images/android-build.png similarity index 100% rename from vsts-docs/builds/images/android-build.png rename to obsolete/vsts-docs/builds/images/android-build.png diff --git a/vsts-docs/builds/images/ios-build-step1.png b/obsolete/vsts-docs/builds/images/ios-build-step1.png similarity index 100% rename from vsts-docs/builds/images/ios-build-step1.png rename to obsolete/vsts-docs/builds/images/ios-build-step1.png diff --git a/vsts-docs/builds/images/ios-build-step2.png b/obsolete/vsts-docs/builds/images/ios-build-step2.png similarity index 100% rename from vsts-docs/builds/images/ios-build-step2.png rename to obsolete/vsts-docs/builds/images/ios-build-step2.png diff --git a/vsts-docs/builds/images/ios-build-step3.png b/obsolete/vsts-docs/builds/images/ios-build-step3.png similarity index 100% rename from vsts-docs/builds/images/ios-build-step3.png rename to obsolete/vsts-docs/builds/images/ios-build-step3.png diff --git a/vsts-docs/builds/images/ios-build.png b/obsolete/vsts-docs/builds/images/ios-build.png similarity index 100% rename from vsts-docs/builds/images/ios-build.png rename to obsolete/vsts-docs/builds/images/ios-build.png diff --git a/vsts-docs/builds/xamarin-android.md b/obsolete/vsts-docs/builds/xamarin-android.md similarity index 100% rename from vsts-docs/builds/xamarin-android.md rename to obsolete/vsts-docs/builds/xamarin-android.md diff --git a/vsts-docs/builds/xamarin-iOS.md b/obsolete/vsts-docs/builds/xamarin-iOS.md similarity index 100% rename from vsts-docs/builds/xamarin-iOS.md rename to obsolete/vsts-docs/builds/xamarin-iOS.md diff --git a/vsts-docs/readme.md b/obsolete/vsts-docs/readme.md similarity index 100% rename from vsts-docs/readme.md rename to obsolete/vsts-docs/readme.md diff --git a/restore-packages.cmd b/restore-packages.cmd deleted file mode 100644 index 4e99614d6..000000000 --- a/restore-packages.cmd +++ /dev/null @@ -1 +0,0 @@ -for /R %%f in (*.csproj) do dotnet restore --no-dependencies %%f diff --git a/Components/GeolocatorPlugin-1.0.3.info b/src/Mobile/Components/GeolocatorPlugin-1.0.3.info similarity index 100% rename from Components/GeolocatorPlugin-1.0.3.info rename to src/Mobile/Components/GeolocatorPlugin-1.0.3.info diff --git a/Components/GeolocatorPlugin-1.0.3.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3.png diff --git a/Components/GeolocatorPlugin-1.0.3/component/Details.md b/src/Mobile/Components/GeolocatorPlugin-1.0.3/component/Details.md similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/component/Details.md rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/component/Details.md diff --git a/Components/GeolocatorPlugin-1.0.3/component/GettingStarted.md b/src/Mobile/Components/GeolocatorPlugin-1.0.3/component/GettingStarted.md similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/component/GettingStarted.md rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/component/GettingStarted.md diff --git a/Components/GeolocatorPlugin-1.0.3/component/License.md b/src/Mobile/Components/GeolocatorPlugin-1.0.3/component/License.md similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/component/License.md rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/component/License.md diff --git a/Components/GeolocatorPlugin-1.0.3/component/Manifest.xml b/src/Mobile/Components/GeolocatorPlugin-1.0.3/component/Manifest.xml similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/component/Manifest.xml rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/component/Manifest.xml diff --git a/Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_128x128.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_128x128.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_128x128.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_128x128.png diff --git a/Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_512x512.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_512x512.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_512x512.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/component/icons/GeolocatorPlugin_512x512.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample.sln b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample.sln similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample.sln rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample.sln diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Assets/AboutAssets.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Assets/AboutAssets.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Assets/AboutAssets.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Assets/AboutAssets.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/GeolocatorSample.Droid.csproj b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/GeolocatorSample.Droid.csproj similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/GeolocatorSample.Droid.csproj rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/GeolocatorSample.Droid.csproj diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/MainActivity.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/MainActivity.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/MainActivity.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/MainActivity.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/PluginsHelp/GeolocatorReadme.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/PluginsHelp/GeolocatorReadme.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/PluginsHelp/GeolocatorReadme.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/PluginsHelp/GeolocatorReadme.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AndroidManifest.xml b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AndroidManifest.xml similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AndroidManifest.xml rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AndroidManifest.xml diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AssemblyInfo.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AssemblyInfo.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AssemblyInfo.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Properties/AssemblyInfo.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/AboutResources.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/AboutResources.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/AboutResources.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/AboutResources.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/Resource.Designer.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/Resource.Designer.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/Resource.Designer.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/Resource.Designer.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-hdpi/icon.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-hdpi/icon.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-hdpi/icon.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-hdpi/icon.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xhdpi/icon.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xhdpi/icon.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xhdpi/icon.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xhdpi/icon.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xxhdpi/icon.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xxhdpi/icon.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xxhdpi/icon.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable-xxhdpi/icon.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable/icon.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable/icon.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable/icon.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/Resources/drawable/icon.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/packages.config b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/packages.config similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/packages.config rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.Droid/packages.config diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/App.xaml.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/AlignmentGrid.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/AlignmentGrid.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/AlignmentGrid.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/AlignmentGrid.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/ApplicationIcon.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/ApplicationIcon.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/ApplicationIcon.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/ApplicationIcon.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileLarge.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileLarge.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileLarge.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileLarge.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileMedium.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileMedium.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileMedium.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileMedium.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileSmall.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileSmall.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileSmall.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/FlipCycleTileSmall.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileMediumLarge.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileMediumLarge.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileMediumLarge.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileMediumLarge.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileSmall.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileSmall.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileSmall.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Assets/Tiles/IconicTileSmall.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/GeolocatorSample.WinPhone.csproj b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/GeolocatorSample.WinPhone.csproj similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/GeolocatorSample.WinPhone.csproj rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/GeolocatorSample.WinPhone.csproj diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/LocalizedStrings.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/LocalizedStrings.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/LocalizedStrings.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/LocalizedStrings.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/MainPage.xaml.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/PluginsHelp/GeolocatorReadme.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/PluginsHelp/GeolocatorReadme.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/PluginsHelp/GeolocatorReadme.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/PluginsHelp/GeolocatorReadme.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AppManifest.xml b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AppManifest.xml similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AppManifest.xml rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AppManifest.xml diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AssemblyInfo.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AssemblyInfo.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AssemblyInfo.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/AssemblyInfo.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/WMAppManifest.xml b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/WMAppManifest.xml similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/WMAppManifest.xml rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Properties/WMAppManifest.xml diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/README_FIRST.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/README_FIRST.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/README_FIRST.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/README_FIRST.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.Designer.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.Designer.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.Designer.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.Designer.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.resx b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.resx similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.resx rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Resources/AppResources.resx diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/SplashScreenImage.jpg b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/SplashScreenImage.jpg similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/SplashScreenImage.jpg rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/SplashScreenImage.jpg diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Add.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Add.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Add.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Add.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Check.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Check.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Check.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Check.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Delete.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Delete.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Delete.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Delete.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Select.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Select.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Select.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/Toolkit.Content/ApplicationBar.Select.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/packages.config b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/packages.config similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/packages.config rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.WinPhone/packages.config diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/AppDelegate.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/AppDelegate.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/AppDelegate.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/AppDelegate.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Entitlements.plist b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Entitlements.plist similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Entitlements.plist rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Entitlements.plist diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/GeolocatorSample.iOS.csproj b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/GeolocatorSample.iOS.csproj similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/GeolocatorSample.iOS.csproj rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/GeolocatorSample.iOS.csproj diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Info.plist b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Info.plist similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Info.plist rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Info.plist diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Main.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Main.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Main.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Main.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/PluginsHelp/GeolocatorReadme.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/PluginsHelp/GeolocatorReadme.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/PluginsHelp/GeolocatorReadme.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/PluginsHelp/GeolocatorReadme.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Properties/AssemblyInfo.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Properties/AssemblyInfo.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Properties/AssemblyInfo.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Properties/AssemblyInfo.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-568h@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-568h@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-568h@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-568h@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default-Portrait@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Default@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@3x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@3x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@3x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-60@3x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-76@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@3x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@3x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@3x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small-40@3x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@2x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@2x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@2x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@2x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@3x.png b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@3x.png similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@3x.png rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/Icon-Small@3x.png diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/LaunchScreen.storyboard b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/LaunchScreen.storyboard similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/LaunchScreen.storyboard rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/Resources/LaunchScreen.storyboard diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork@2x b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork@2x similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork@2x rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/iTunesArtwork@2x diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/packages.config b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/packages.config similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/packages.config rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample.iOS/packages.config diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/App.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/App.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/App.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/App.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/GeolocatorSample.csproj b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/GeolocatorSample.csproj similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/GeolocatorSample.csproj rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/GeolocatorSample.csproj diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/PluginsHelp/GeolocatorReadme.txt b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/PluginsHelp/GeolocatorReadme.txt similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/PluginsHelp/GeolocatorReadme.txt rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/PluginsHelp/GeolocatorReadme.txt diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/Properties/AssemblyInfo.cs b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/Properties/AssemblyInfo.cs similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/Properties/AssemblyInfo.cs rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/Properties/AssemblyInfo.cs diff --git a/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/packages.config b/src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/packages.config similarity index 100% rename from Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/packages.config rename to src/Mobile/Components/GeolocatorPlugin-1.0.3/samples/GeolocatorSample/GeolocatorSample/GeolocatorSample/packages.config diff --git a/src/docker-compose.prod.yml b/src/docker-compose.prod.yml index 7548a4154..afc9314d9 100644 --- a/src/docker-compose.prod.yml +++ b/src/docker-compose.prod.yml @@ -1,20 +1,20 @@ version: '3.4' -# The Production docker-compose file has to have the external/real IPs or DNS names for the services -# The ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like: +# The Production docker-compose file has to have the external/real IPs or DNS names for the services +# The ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like: # ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=192.168.88.248 # but values present in the environment vars at runtime will always override those defined inside the .env file # An external IP or DNS name has to be used when testing the Web apps and the Xamarin apps from remote machines/devices using the same WiFi, for instance. # # IMPORTANT: Note that this compose file uses ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP instead of ESHOP_EXTERNAL_DNS_NAME_OR_IP -# Set ASPNETCORE_ENVIRONMENT= Development or Production, depending if you want to show up errors while testing. +# Set ASPNETCORE_ENVIRONMENT= Development or Production, depending if you want to show up errors while testing. # # You need to start it with the following CLI command: # docker-compose -f docker-compose.yml -f docker-compose.prod.yml up services: - + basket-api: environment: - ASPNETCORE_ENVIRONMENT=Development @@ -24,24 +24,24 @@ services: - IdentityUrlExternal=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - AzureServiceBusEnabled=False - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} - UseLoadTest=${USE_LOADTEST:-False} ports: - - "80" # The API Gateway redirects and access through the internal port (80). + - "80" # The API Gateway redirects and access through the internal port (80). catalog-api: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 - ConnectionString=${ESHOP_AZURE_CATALOG_DB:-Server=sqldata;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word} - - PicBaseUrl=${ESHOP_AZURE_STORAGE_CATALOG_URL:-http://localhost:5101/api/v1/catalog/items/[0]/pic/} #Local: You need to open your local dev-machine firewall at range 5100-5110. + - PicBaseUrl=${ESHOP_AZURE_STORAGE_CATALOG_URL:-http://localhost:5101/api/v1/catalog/items/[0]/pic/} #Local: You need to open your local dev-machine firewall at range 5100-5110. - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - AzureStorageAccountName=${ESHOP_AZURE_STORAGE_CATALOG_NAME} - AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_CATALOG_KEY} - UseCustomizationData=True @@ -50,7 +50,7 @@ services: - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} ports: - - "80" # The API Gateway redirects and access through the internal port (80). + - "80" # The API Gateway redirects and access through the internal port (80). identity-api: environment: @@ -58,19 +58,19 @@ services: - ASPNETCORE_URLS=http://0.0.0.0:80 - SpaClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5104 - XamarinCallback=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105/xamarincallback #localhost do not work for UWP login, so we have to use "external" IP always - - ConnectionString=${ESHOP_AZURE_IDENTITY_DB:-Server=sqldata;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word} - - MvcClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your local dev-machine firewall at range 5100-5110. + - ConnectionString=${ESHOP_AZURE_IDENTITY_DB:-Server=sqldata;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word} + - MvcClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your local dev-machine firewall at range 5100-5110. - LocationApiClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5109 - MarketingApiClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5110 - BasketApiClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5103 - OrderingApiClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5102 - MobileShoppingAggClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5120 - WebShoppingAggClient=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5121 - - UseCustomizationData=True + - UseCustomizationData=True - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} ports: - - "5105:80" + - "5105:80" ordering-api: environment: @@ -81,7 +81,7 @@ services: - IdentityUrlExternal=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - UseCustomizationData=True - AzureServiceBusEnabled=False - CheckUpdateTime=30000 @@ -98,7 +98,7 @@ services: - ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sqldata;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word} - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - UseCustomizationData=True - AzureServiceBusEnabled=False - CheckUpdateTime=30000 @@ -118,7 +118,7 @@ services: - MongoDatabase=MarketingDb - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - identityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. - IdentityUrlExternal=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 - CampaignDetailFunctionUri=${ESHOP_AZUREFUNC_CAMPAIGN_DETAILS_URI} @@ -137,12 +137,12 @@ services: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 - - IdentityUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. + - IdentityUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. - PurchaseUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5202 - - MarketingUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5203 + - MarketingUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5203 - CatalogUrlHC=http://catalog-api/hc - OrderingUrlHC=http://ordering-api/hc - - IdentityUrlHC=http://identity-api/hc #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser. + - IdentityUrlHC=http://identity-api/hc #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser. - BasketUrlHC=http://basket-api/hc - MarketingUrlHC=http://marketing-api/hc - PaymentUrlHC=http://payment-api/hc @@ -150,7 +150,7 @@ services: - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} ports: - - "5104:80" + - "5104:80" webmvc: environment: @@ -158,10 +158,10 @@ services: - ASPNETCORE_URLS=http://0.0.0.0:80 - PurchaseUrl=http://webshoppingapigw - IdentityUrl=http://10.0.75.1:5105 # Local Mac: Use http://docker.for.mac.localhost:5105 || Local Windows: Use 10.0.75.1 in a "Docker for Windows" environment, if using "localhost" from browser. || #Remote access: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP} if using external IP or DNS name from browser. - - MarketingUrl=http://webmarketingapigw + - MarketingUrl=http://webmarketingapigw - CatalogUrlHC=http://catalog-api/hc - OrderingUrlHC=http://ordering-api/hc - - IdentityUrlHC=http://identity-api/hc #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser. + - IdentityUrlHC=http://identity-api/hc #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser. - BasketUrlHC=http://basket-api/hc - MarketingUrlHC=http://marketing-api/hc - PaymentUrlHC=http://payment-api/hc @@ -196,7 +196,7 @@ services: - ASPNETCORE_URLS=http://0.0.0.0:80 - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - AzureServiceBusEnabled=False - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} @@ -209,11 +209,11 @@ services: - ASPNETCORE_URLS=http://0.0.0.0:80 - ConnectionString=${ESHOP_AZURE_COSMOSDB:-mongodb://nosqldata} - Database=LocationsDb - - identityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. + - identityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. - IdentityUrlExternal=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - AzureServiceBusEnabled=False - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} @@ -235,7 +235,7 @@ services: basket.data: ports: - "6379:6379" # Important: In a production environment your should remove the external port - + rabbitmq: ports: - "15672:15672" # Important: In a production environment your should remove the external port @@ -246,17 +246,17 @@ services: - ASPNETCORE_ENVIRONMENT=Development - IdentityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. ports: - - "5200:80" # Important: In a production environment your should remove the external port (5200) kept here for microservice debugging purposes. + - "5200:80" # Important: In a production environment your should remove the external port (5200) kept here for microservice debugging purposes. # The API Gateway redirects and access through the internal port (80). volumes: - ./ApiGateways/Mobile.Bff.Shopping/apigw:/app/configuration - + mobilemarketingapigw: environment: - ASPNETCORE_ENVIRONMENT=Development - IdentityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. ports: - - "5201:80" # Important: In a production environment your should remove the external port (5201) kept here for microservice debugging purposes. + - "5201:80" # Important: In a production environment your should remove the external port (5201) kept here for microservice debugging purposes. # The API Gateway redirects and access through the internal port (80). volumes: - ./ApiGateways/Mobile.Bff.Marketing/apigw:/app/configuration @@ -266,7 +266,7 @@ services: - ASPNETCORE_ENVIRONMENT=Development - IdentityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. ports: - - "5202:80" # Important: In a production environment your should remove the external port (5202) kept here for microservice debugging purposes. + - "5202:80" # Important: In a production environment your should remove the external port (5202) kept here for microservice debugging purposes. # The API Gateway redirects and access through the internal port (80). volumes: - ./ApiGateways/Web.Bff.Shopping/apigw:/app/configuration @@ -276,7 +276,7 @@ services: - ASPNETCORE_ENVIRONMENT=Development - IdentityUrl=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. ports: - - "5203:80" # Important: In a production environment your should remove the external port (5203) kept here for microservice debugging purposes. + - "5203:80" # Important: In a production environment your should remove the external port (5203) kept here for microservice debugging purposes. # The API Gateway redirects and access through the internal port (80). volumes: - ./ApiGateways/Web.Bff.Marketing/apigw:/app/configuration @@ -289,7 +289,7 @@ services: - urls__orders=http://ordering-api - urls__identity=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. ports: - - "80" # Important: In a production environment your should remove the external port (5120) kept here for microservice debugging purposes. + - "80" # Important: In a production environment your should remove the external port (5120) kept here for microservice debugging purposes. # The API Gateway redirects and access through the internal port (80). webshoppingagg: @@ -300,6 +300,6 @@ services: - urls__orders=http://ordering-api - urls__identity=http://identity-api #Local: You need to open your local dev-machine firewall at range 5100-5110. ports: - - "80" # Important: In a production environment your should remove the external port (5121) kept here for microservice debugging purposes. + - "80" # Important: In a production environment your should remove the external port (5121) kept here for microservice debugging purposes. # The API Gateway redirects and access through the internal port (80). diff --git a/src/eShopOnContainers-ServicesAndWebApps.sln b/src/eShopOnContainers-ServicesAndWebApps.sln index 08dd3e656..3a1dec68a 100644 --- a/src/eShopOnContainers-ServicesAndWebApps.sln +++ b/src/eShopOnContainers-ServicesAndWebApps.sln @@ -138,7 +138,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Webhooks.API", "Services\We EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebhookClient", "Web\WebhookClient\WebhookClient.csproj", "{766D7E92-6AF0-476C-ADD5-282BF4D8C576}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Devspace.Support", "Devspace.Support", "{68F5041D-51F2-4630-94B6-B49789F5E51A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Devspaces.Support", "Devspaces.Support", "{68F5041D-51F2-4630-94B6-B49789F5E51A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Devspaces.Support", "BuildingBlocks\Devspaces.Support\Devspaces.Support.csproj", "{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}" EndProject From 41385b42ebb6733cd4d90085920c11635614badb Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Wed, 20 Nov 2019 19:17:08 +0000 Subject: [PATCH 13/22] Remove old test docs already in wiki --- test/docker-compose-tests.override.yml | 20 --- test/docker-compose-tests.yml | 10 -- ...p-powershell-infrastructure-containers.PNG | Bin 153044 -> 0 bytes test/img/functionaltests-catalog-running.PNG | Bin 218838 -> 0 bytes test/img/functionaltestsview.PNG | Bin 15493 -> 0 bytes ...l-application-functional-tests-running.PNG | Bin 76207 -> 0 bytes test/img/integrationtestsview.PNG | Bin 26263 -> 0 bytes test/img/orderingservicetests.PNG | Bin 9465 -> 0 bytes test/img/services-functional-tests-folder.PNG | Bin 41410 -> 0 bytes test/img/unittestsrunning.PNG | Bin 63396 -> 0 bytes test/img/unittestsview.PNG | Bin 12037 -> 0 bytes test/readme.md | 128 ------------------ 12 files changed, 158 deletions(-) delete mode 100644 test/docker-compose-tests.override.yml delete mode 100644 test/docker-compose-tests.yml delete mode 100644 test/img/compose-up-powershell-infrastructure-containers.PNG delete mode 100644 test/img/functionaltests-catalog-running.PNG delete mode 100644 test/img/functionaltestsview.PNG delete mode 100644 test/img/global-application-functional-tests-running.PNG delete mode 100644 test/img/integrationtestsview.PNG delete mode 100644 test/img/orderingservicetests.PNG delete mode 100644 test/img/services-functional-tests-folder.PNG delete mode 100644 test/img/unittestsrunning.PNG delete mode 100644 test/img/unittestsview.PNG delete mode 100644 test/readme.md diff --git a/test/docker-compose-tests.override.yml b/test/docker-compose-tests.override.yml deleted file mode 100644 index 27308ec75..000000000 --- a/test/docker-compose-tests.override.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: '3' - -services: - redis.data: - ports: - - "6379:6379" - rabbitmq: - ports: - - "15672:15672" - - "5672:5672" - sql.data: - environment: - - SA_PASSWORD=Pass@word - - ACCEPT_EULA=Y - ports: - - "5433:1433" - nosql.data: - ports: - - "27017:27017" # Important: In a production environment your should remove the external por - diff --git a/test/docker-compose-tests.yml b/test/docker-compose-tests.yml deleted file mode 100644 index 113aca9ed..000000000 --- a/test/docker-compose-tests.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: '3' -services: - redis.data: - image: redis:alpine - rabbitmq: - image: rabbitmq:3-management-alpine - sql.data: - image: microsoft/mssql-server-linux:2017-latest - nosql.data: - image: mongo \ No newline at end of file diff --git a/test/img/compose-up-powershell-infrastructure-containers.PNG b/test/img/compose-up-powershell-infrastructure-containers.PNG deleted file mode 100644 index e5fbfe25ac94a506fa2e7272c6eb88a81dbf1b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153044 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

bqQ!~P0KIZdnOJ623 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 diff --git a/test/img/functionaltests-catalog-running.PNG b/test/img/functionaltests-catalog-running.PNG deleted file mode 100644 index 98d7a34f3523996a1d33bdbd22f4dedf91703b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218838 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

1h#UP0!m?fBJM7Yj!;rk#2NhEi z+<~E>8rSecY zu43iE>li*_G@|t$sL+av_H+~`C2k`cOHRjED0wGi@9WIhpv;JsOQ45!( zgD?IlR-c#9wpcd4TTb%-;b)kNRKSJLmxJE^z_Nb@|8a1g)aVT0^~0OLeg!?o{D8@e z7ov8og;a|RU%oU9TO%LAvMFuIwF(A$2aOhb=?GyJdt%yibug(2FJIyV41b?ypk%7M_*s8PK-GLjPL!ANaNMeP6fU98@? z3yF?slr0tx$Nw-2sSusN2)qfPmj0R)X(BfN##SZl2@3S-4)W7h#1id36%0A;tu2R#8;oh0k^`$(Qm->C}*B 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

)1sVOsP;nD$DbGA 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%0DdR9JI{0SP{9ZHgfw7VW**`+3}E^V9B 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

- -## Running Unit Tests for specific microservices - -In order to run the Unit Tests for any microservice, you just need to select the tests with [*Test Explorer* in Visual Studio](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer) (or use your preferred tool) and run the tests. - -For instance, you can filter and see just the Unit Test projects by typing *"UnitTest"* in the filter edit box within **Test Explorer**: - -

- -

- -Then you can run all or selected tests, like in the following image: - -

- -

- -These Unit Tests have no any dependency with any external infrastructure or any other microservice and that's why you don't need to spin-up additional infrastructure (Database server or additional containers). - - -## Running Functional/Integration Tests for specific microservices - -In this case, the Functional Tests do have dependencies with additional infrastructure. For instance, they might have dependencies with the microservices's database in the SQL Server container, the messaging broker (RabbitMQ container), etc. - -Therefore, in order to run the Functional Tests you first need to have the needed infrastructure, in this case to spin-up the infrastructure containers. - -In order to facilitate how you can have the infrastructure containers up and running, you have certain docker-compose files you can use with `docker-compose up`. These files are available here: - -https://github.com/dotnet-architecture/eShopOnContainers/tree/feature/orgtestprojects/test - -If you edit the docker-compose-tests.yml you can see that it just have info about the infrastructure containers to spin up: - -``` -docker-compose-tests.yml - -version: '3' -services: - redis.data: - image: redis:alpine - rabbitmq: - image: rabbitmq:3-management-alpine - sql.data: - image: microsoft/mssql-server-linux:2017-latest - nosql.data: - image: mongo -``` - -Here is how you start the infrastructure containers with "docker-compose up" in PowerShell or any Command-Line window: - -> docker-compose -f .\docker-compose-tests.yml -f .\docker-compose-tests.override.yml up - -

- -

- -Each Functional Test project uses a [TestServer](https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.testhost.testserver?view=aspnetcore-2.1) configured with the required infrastructure which should be available thanks to the previous "docker-compose up", so the Functional Tests can be run. - -> For more info about **TestServer** and *Functional Tests* and *Integration Tests*, see the article [Integration tests in ASP.NET Core](https://docs.microsoft.com/aspnet/core/test/integration-tests?view=aspnetcore-2.1). - -In order to filter and see the Functional Tests to run, type *"Functional"* in **Test Explorer**. - -

- -

- -You can, for instance, run the Functional Tests for the Catalog Microservice, which, under the covers, are accessing to the SQL Server container that should be running in Docker: - -

- -

- - -# Running Services Integration Tests (Tests across the whole application) - -So far, we've been focusing on isolated Unit Tests or Functional Tests that were related to single/isolated microservices, although taking into account the infrastructure for the functional tests per microservice. - -However, in a microservice-based application you also need how the multiple microservices interact with the whole application. For instance, you might raise an event from one microservice by publishing it on the Event Bus (based on RabbitMQ) and test/validate that you received that same event into another microservice because it was subscribed to it. - -These global Functional/Integration tests for the services need to be placed in a common place instead within specific microservice's folders, as it needs to deal with multiple microservices. - -That common place is the **"test/ServiceTests/FunctionalTests"** folder and it has those multiple integration tests for the whole application. - -

- -

- -In order to run these application services tests, you can filter, like in the following image. - -

- -

- -Then, making sure that you have the infrastructure containers up and running (thanks to the previous `docker-compose up` command, already explained), select and run the desired global application functional tests, as in the following image: - -

- -

- - - - -## Load Testing - -Load Testing for eShopOnContainers is described in [this document](ServicesTests/LoadTest/readme.md) - - - From 643d09a65a859f0f28ca4201eb9a3673abaabac3 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Wed, 20 Nov 2019 19:21:03 +0000 Subject: [PATCH 14/22] Move more obsolete files --- KUBERNETES.md => obsolete/KUBERNETES.md | 0 Local.testsettings => obsolete/Local.testsettings | 0 .../docker-compose.override.yml | 0 docker-compose.yml => obsolete/docker-compose.yml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename KUBERNETES.md => obsolete/KUBERNETES.md (100%) rename Local.testsettings => obsolete/Local.testsettings (100%) rename docker-compose.override.yml => obsolete/docker-compose.override.yml (100%) rename docker-compose.yml => obsolete/docker-compose.yml (100%) diff --git a/KUBERNETES.md b/obsolete/KUBERNETES.md similarity index 100% rename from KUBERNETES.md rename to obsolete/KUBERNETES.md diff --git a/Local.testsettings b/obsolete/Local.testsettings similarity index 100% rename from Local.testsettings rename to obsolete/Local.testsettings diff --git a/docker-compose.override.yml b/obsolete/docker-compose.override.yml similarity index 100% rename from docker-compose.override.yml rename to obsolete/docker-compose.override.yml diff --git a/docker-compose.yml b/obsolete/docker-compose.yml similarity index 100% rename from docker-compose.yml rename to obsolete/docker-compose.yml From 6af743c99cc2876f1411c864c62de3600ac8e3d6 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Wed, 20 Nov 2019 19:21:42 +0000 Subject: [PATCH 15/22] Move auxiliary solution files to "to-fix" folder --- .../eShopOnContainers-Android.sln | 0 .../eShopOnContainers-AzureFunctions.sln | 0 .../eShopOnContainers-MobileApps.sln | 0 eShopOnContainers-iOS.sln => to-fix/eShopOnContainers-iOS.sln | 0 eShopOnContainers.sln => to-fix/eShopOnContainers.sln | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename eShopOnContainers-Android.sln => to-fix/eShopOnContainers-Android.sln (100%) rename eShopOnContainers-AzureFunctions.sln => to-fix/eShopOnContainers-AzureFunctions.sln (100%) rename eShopOnContainers-MobileApps.sln => to-fix/eShopOnContainers-MobileApps.sln (100%) rename eShopOnContainers-iOS.sln => to-fix/eShopOnContainers-iOS.sln (100%) rename eShopOnContainers.sln => to-fix/eShopOnContainers.sln (100%) diff --git a/eShopOnContainers-Android.sln b/to-fix/eShopOnContainers-Android.sln similarity index 100% rename from eShopOnContainers-Android.sln rename to to-fix/eShopOnContainers-Android.sln diff --git a/eShopOnContainers-AzureFunctions.sln b/to-fix/eShopOnContainers-AzureFunctions.sln similarity index 100% rename from eShopOnContainers-AzureFunctions.sln rename to to-fix/eShopOnContainers-AzureFunctions.sln diff --git a/eShopOnContainers-MobileApps.sln b/to-fix/eShopOnContainers-MobileApps.sln similarity index 100% rename from eShopOnContainers-MobileApps.sln rename to to-fix/eShopOnContainers-MobileApps.sln diff --git a/eShopOnContainers-iOS.sln b/to-fix/eShopOnContainers-iOS.sln similarity index 100% rename from eShopOnContainers-iOS.sln rename to to-fix/eShopOnContainers-iOS.sln diff --git a/eShopOnContainers.sln b/to-fix/eShopOnContainers.sln similarity index 100% rename from eShopOnContainers.sln rename to to-fix/eShopOnContainers.sln From 38db586d5ac0912e6e15374a5b4b1601469f6de0 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 21 Nov 2019 10:45:28 +0000 Subject: [PATCH 16/22] Remove obsolete files/folders --- .../azurefunctions/azurefunctionsdeploy.json | 209 ---- .../azurefunctionsdeploy.parameters.json | 9 - deploy/azure/az/azurefunctions/readme.md | 39 - .../LinuxContainers/gen-keyvaultcert.ps1 | 53 - .../servicefabric/LinuxContainers/readme.md | 134 --- .../LinuxContainers/servicefabricdeploy.json | 751 -------------- .../servicefabricdeploy.parameters.json | 93 -- .../servicefabricdeploysecured.json | 821 ---------------- ...servicefabricdeploysecured.parameters.json | 102 -- .../WindowsContainers/gen-keyvaultcert.ps1 | 53 - .../servicefabric/WindowsContainers/readme.md | 138 --- .../servicefabricdeploy.json | 859 ---------------- .../servicefabricdeploy.parameters.json | 100 -- .../servicefabricdeploysecured.json | 924 ------------------ ...servicefabricdeploysecured.parameters.json | 106 -- deploy/azure/az/vms/docker-machine.md | 48 - deploy/azure/az/vms/linux-vm/linuxvm.json | 199 ---- .../az/vms/linux-vm/linuxvm.parameters.json | 7 - deploy/azure/az/vms/plain-vm.md | 77 -- deploy/azure/az/vms/readme.md | 10 - deploy/azure/az/vms/win-vm/windowsvm.json | 290 ------ .../az/vms/win-vm/windowsvm.parameters.json | 7 - deploy/k8s/README.CICD.k8s.md | 66 -- deploy/k8s/README.k8s.md | 98 -- deploy/k8s/build-push-images.ps1 | 72 -- deploy/k8s/conf-files.md | 17 - deploy/k8s/conf_cloud.yaml | 34 - deploy/k8s/conf_local.yaml | 27 - deploy/k8s/deploy-ingress-azure.ps1 | 1 - deploy/k8s/deploy-ingress-dockerlocal.ps1 | 2 - deploy/k8s/deploy-ingress.ps1 | 5 - deploy/k8s/deploy-nodeports.ps1 | 2 - deploy/k8s/deploy.ps1 | 212 ---- deploy/k8s/deploy.sh | 212 ---- deploy/k8s/img/blob_creation.png | Bin 26340 -> 0 bytes deploy/k8s/img/deploy_script_task.png | Bin 51001 -> 0 bytes deploy/k8s/img/get_kubectlbin_task.png | Bin 32167 -> 0 bytes deploy/k8s/img/get_kubectlconfig_task.png | Bin 31190 -> 0 bytes deploy/k8s/internalurls.yaml | 33 - deploy/k8s/nginx-ingress/mandatory-istio.yaml | 238 ----- deploy/k8s/nodeports/rabbitmq-admin.yaml | 12 - deploy/k8s/nodeports/sql-service.yaml | 12 - deploy/k8s/readme.md | 12 - obsolete/cli-linux/build-bits-linux.sh | 51 - .../cli-linux/docker-compose.local.build.yml | 10 - obsolete/cli-linux/prepare-spa-app.sh | 4 - obsolete/cli-linux/run.sh | 6 - obsolete/cli-mac/build-bits.sh | 47 - obsolete/cli-windows/build-bits-simple.ps1 | 17 - obsolete/cli-windows/build-bits.ps1 | 59 -- obsolete/cli-windows/build-images.ps1 | 11 - obsolete/cli-windows/delete-images.ps1 | 27 - .../delete-vs-and-eshop-images.ps1 | 46 - obsolete/cli-windows/start-external.ps1 | 11 - .../cli-windows/start-windows-containers.ps1 | 33 - .../vsts/build-bits-no-parallel.ps1 | 56 -- 56 files changed, 6462 deletions(-) delete mode 100644 deploy/azure/az/azurefunctions/azurefunctionsdeploy.json delete mode 100644 deploy/azure/az/azurefunctions/azurefunctionsdeploy.parameters.json delete mode 100644 deploy/azure/az/azurefunctions/readme.md delete mode 100644 deploy/azure/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 delete mode 100644 deploy/azure/az/servicefabric/LinuxContainers/readme.md delete mode 100644 deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.json delete mode 100644 deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json delete mode 100644 deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json delete mode 100644 deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json delete mode 100644 deploy/azure/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 delete mode 100644 deploy/azure/az/servicefabric/WindowsContainers/readme.md delete mode 100644 deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.json delete mode 100644 deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json delete mode 100644 deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json delete mode 100644 deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json delete mode 100644 deploy/azure/az/vms/docker-machine.md delete mode 100644 deploy/azure/az/vms/linux-vm/linuxvm.json delete mode 100644 deploy/azure/az/vms/linux-vm/linuxvm.parameters.json delete mode 100644 deploy/azure/az/vms/plain-vm.md delete mode 100644 deploy/azure/az/vms/readme.md delete mode 100644 deploy/azure/az/vms/win-vm/windowsvm.json delete mode 100644 deploy/azure/az/vms/win-vm/windowsvm.parameters.json delete mode 100644 deploy/k8s/README.CICD.k8s.md delete mode 100644 deploy/k8s/README.k8s.md delete mode 100644 deploy/k8s/build-push-images.ps1 delete mode 100644 deploy/k8s/conf-files.md delete mode 100644 deploy/k8s/conf_cloud.yaml delete mode 100644 deploy/k8s/conf_local.yaml delete mode 100644 deploy/k8s/deploy-ingress-azure.ps1 delete mode 100644 deploy/k8s/deploy-ingress-dockerlocal.ps1 delete mode 100644 deploy/k8s/deploy-ingress.ps1 delete mode 100644 deploy/k8s/deploy-nodeports.ps1 delete mode 100644 deploy/k8s/deploy.ps1 delete mode 100644 deploy/k8s/deploy.sh delete mode 100644 deploy/k8s/img/blob_creation.png delete mode 100644 deploy/k8s/img/deploy_script_task.png delete mode 100644 deploy/k8s/img/get_kubectlbin_task.png delete mode 100644 deploy/k8s/img/get_kubectlconfig_task.png delete mode 100644 deploy/k8s/internalurls.yaml delete mode 100644 deploy/k8s/nginx-ingress/mandatory-istio.yaml delete mode 100644 deploy/k8s/nodeports/rabbitmq-admin.yaml delete mode 100644 deploy/k8s/nodeports/sql-service.yaml delete mode 100644 deploy/k8s/readme.md delete mode 100644 obsolete/cli-linux/build-bits-linux.sh delete mode 100644 obsolete/cli-linux/docker-compose.local.build.yml delete mode 100644 obsolete/cli-linux/prepare-spa-app.sh delete mode 100644 obsolete/cli-linux/run.sh delete mode 100644 obsolete/cli-mac/build-bits.sh delete mode 100644 obsolete/cli-windows/build-bits-simple.ps1 delete mode 100644 obsolete/cli-windows/build-bits.ps1 delete mode 100644 obsolete/cli-windows/build-images.ps1 delete mode 100644 obsolete/cli-windows/delete-images.ps1 delete mode 100644 obsolete/cli-windows/delete-vs-and-eshop-images.ps1 delete mode 100644 obsolete/cli-windows/start-external.ps1 delete mode 100644 obsolete/cli-windows/start-windows-containers.ps1 delete mode 100644 obsolete/cli-windows/vsts/build-bits-no-parallel.ps1 diff --git a/deploy/azure/az/azurefunctions/azurefunctionsdeploy.json b/deploy/azure/az/azurefunctions/azurefunctionsdeploy.json deleted file mode 100644 index 29625302b..000000000 --- a/deploy/azure/az/azurefunctions/azurefunctionsdeploy.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "SitesEshopfunctionsName": { - "type": "string", - "metadata": { - "description": "Name of the Azure Functions namespace" - }, - "defaultValue": "mktfunctionsdemo" - } - }, - "variables": { - "SitesEshopfunctionsName": "[parameters('SitesEshopfunctionsName')]", - "WebConfigName": "[concat(variables('SitesEshopfunctionsName'), '/web')]", - "Location": "[resourceGroup().location]", - "ServerFarmPlan": "[concat(trim(variables('location')), 'Plan')]", - "StorageAccounts": "[concat(variables('SitesEshopfunctionsName'), 'st')]" - }, - "resources": [ - { - "type": "Microsoft.Storage/storageAccounts", - "sku": { - "name": "Standard_LRS", - "tier": "Standard" - }, - "kind": "Storage", - "name": "[variables('StorageAccounts')]", - "apiVersion": "2016-01-01", - "location": "[variables('Location')]", - "tags": {}, - "scale": null, - "properties": {}, - "dependsOn": [] - }, - { - "type": "Microsoft.Web/serverfarms", - "sku": { - "name": "Y1", - "tier": "Dynamic", - "size": "Y1", - "family": "Y", - "capacity": 0 - }, - "kind": "functionapp", - "name": "[variables('ServerFarmPlan')]", - "apiVersion": "2015-08-01", - "location": "[variables('Location')]", - "scale": null, - "properties": { - "name": "[variables('ServerFarmPlan')]", - "numberOfWorkers": 0 - }, - "dependsOn": [] - }, - { - "type": "Microsoft.Web/sites", - "kind": "functionapp", - "name": "[variables('SitesEshopfunctionsName')]", - "apiVersion": "2015-08-01", - "location": "[variables('Location')]", - "scale": null, - "properties": { - "name": "[variables('SitesEshopfunctionsName')]", - "hostNames": [ - "[concat(variables('SitesEshopfunctionsName'),'.azurewebsites.net')]" - ], - "enabledHostNames": [ - "[concat(variables('SitesEshopfunctionsName'),'.azurewebsites.net')]", - "[concat(variables('SitesEshopfunctionsName'),'.scm.azurewebsites.net')]" - ], - "hostNameSslStates": [ - { - "name": "[concat(variables('SitesEshopfunctionsName'),'.azurewebsites.net')]", - "sslState": 0, - "thumbprint": null, - "ipBasedSslState": 0 - }, - { - "name": "[concat(variables('SitesEshopfunctionsName'),'.scm.azurewebsites.net')]", - "sslState": 0, - "thumbprint": null, - "ipBasedSslState": 0 - } - ], - "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('ServerFarmPlan'))]" - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', variables('ServerFarmPlan'))]" - ] - }, - { - "type": "Microsoft.Web/sites/config", - "name": "[variables('WebConfigName')]", - "apiVersion": "2015-08-01", - "location": "[variables('Location')]", - "scale": null, - "properties": { - "numberOfWorkers": 1, - "defaultDocuments": [ - "Default.htm", - "Default.html", - "Default.asp", - "index.htm", - "index.html", - "iisstart.htm", - "default.aspx", - "index.php", - "hostingstart.html" - ], - "netFrameworkVersion": "v4.0", - "phpVersion": "5.6", - "pythonVersion": "", - "nodeVersion": "", - "linuxFxVersion": "", - "requestTracingEnabled": false, - "remoteDebuggingEnabled": false, - "remoteDebuggingVersion": null, - "httpLoggingEnabled": false, - "logsDirectorySizeLimit": 35, - "detailedErrorLoggingEnabled": false, - "publishingUsername": "$eshopfunctions", - "publishingPassword": null, - "appSettings": null, - "metadata": null, - "connectionStrings": null, - "machineKey": null, - "handlerMappings": null, - "documentRoot": null, - "scmType": "None", - "use32BitWorkerProcess": true, - "webSocketsEnabled": false, - "alwaysOn": false, - "javaVersion": null, - "javaContainer": null, - "javaContainerVersion": null, - "appCommandLine": "", - "managedPipelineMode": 0, - "virtualApplications": [ - { - "virtualPath": "/", - "physicalPath": "site\\wwwroot", - "preloadEnabled": false, - "virtualDirectories": null - } - ], - "winAuthAdminState": 0, - "winAuthTenantState": 0, - "customAppPoolIdentityAdminState": false, - "customAppPoolIdentityTenantState": false, - "runtimeADUser": null, - "runtimeADUserPassword": null, - "loadBalancing": 1, - "routingRules": [], - "experiments": { - "rampUpRules": [] - }, - "limits": null, - "autoHealEnabled": false, - "autoHealRules": { - "triggers": null, - "actions": null - }, - "tracingOptions": null, - "vnetName": "", - "siteAuthEnabled": false, - "siteAuthSettings": { - "enabled": null, - "unauthenticatedClientAction": null, - "tokenStoreEnabled": null, - "allowedExternalRedirectUrls": null, - "defaultProvider": null, - "clientId": null, - "clientSecret": null, - "issuer": null, - "allowedAudiences": null, - "additionalLoginParams": null, - "isAadAutoProvisioned": false, - "googleClientId": null, - "googleClientSecret": null, - "googleOAuthScopes": null, - "facebookAppId": null, - "facebookAppSecret": null, - "facebookOAuthScopes": null, - "twitterConsumerKey": null, - "twitterConsumerSecret": null, - "microsoftAccountClientId": null, - "microsoftAccountClientSecret": null, - "microsoftAccountOAuthScopes": null - }, - "cors": { - "allowedOrigins": [ - "https://functions.azure.com", - "https://functions-staging.azure.com", - "https://functions-next.azure.com" - ] - }, - "push": null, - "apiDefinition": null, - "autoSwapSlotName": null, - "localMySqlEnabled": false, - "ipSecurityRestrictions": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', variables('SitesEshopfunctionsName'))]" - ] - } - ] -} \ No newline at end of file diff --git a/deploy/azure/az/azurefunctions/azurefunctionsdeploy.parameters.json b/deploy/azure/az/azurefunctions/azurefunctionsdeploy.parameters.json deleted file mode 100644 index 9ef07000d..000000000 --- a/deploy/azure/az/azurefunctions/azurefunctionsdeploy.parameters.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "SitesEshopfunctionsName": { - "value": "eshopfunctionsapp" - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/azurefunctions/readme.md b/deploy/azure/az/azurefunctions/readme.md deleted file mode 100644 index 6ce3630b2..000000000 --- a/deploy/azure/az/azurefunctions/readme.md +++ /dev/null @@ -1,39 +0,0 @@ -# Deploying Azure Functions - -The ARM template `azurefunctionsdeploy.json` and its parameter file (`azurefunctionsdeploy.parameters.json`) are used to deploy Marketing azure functions. - -## Editing azurefunctionsdeploy.parameters.json file - -You can edit the `azurefunctionsdeploy.parameters.parameters.json` file to set your values, but is not needed. The only parameter that can be set is: - -1. `SitesEshopfunctionsName` is a string that is used to create the Azure function app name. - -## Deploy the template - -Once parameter file is edited you can deploy it using [create-resources script](../readme.md). - -i. e. if you are in Windows, to deploy the Azure Functions environment in a new resourcegroup located in westus, go to `deploy\az` folder and type: - -``` -create-resources.cmd azurefunctions\azurefunctionsdeploy newResourceGroup -c westus -``` -## Deploy Marketing azure function with Visual Studio. - -You need to deploy the Marketing azure function from Visual Studio 2017 15.3 from the the Marketing-functions project in the solution eShopOnContainers-AzureFunctions.sln (Visual Studio publish tool). - -## Setting Azure function configurations - -Once deployed, go to azure portal and set the connection string for the azure function under the name "SqlConnection". The value must be the connection string which points to MarketingDB. - -Example: - -"SqlConnection": "Server=tcp:eshopsql.database.windows.net,1433;Initial Catalog=marketingdb;" - -In appsettings section, add a new entry named "MarketingStorageUri". The value must be the uri of the blob storage where the campaign images are stored. - -Example: - -"MarketingStorageUri": "https://marketingcampaign.blob.core.windows.net/pics/" - - - diff --git a/deploy/azure/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 b/deploy/azure/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 deleted file mode 100644 index c6fc34013..000000000 --- a/deploy/azure/az/servicefabric/LinuxContainers/gen-keyvaultcert.ps1 +++ /dev/null @@ -1,53 +0,0 @@ -Param( - [parameter(Mandatory=$true)][string]$vaultName, - [parameter(Mandatory=$true)][string]$certName, - [parameter(Mandatory=$true)][string]$certPwd, - [parameter(Mandatory=$true)][string]$subjectName, - [parameter(Mandatory=$false)][string]$ValidityInMonths=12, - [parameter(Mandatory=$true)][string]$saveDir -) - - -#Log in Azure Account -Login-AzureRmAccount - - -# Create Cert in KeyVault -Write-Host "Creating certificate in Azure KeyVault..." -ForegroundColor Yellow -$policy = New-AzureKeyVaultCertificatePolicy -SubjectName $subjectName -IssuerName Self -ValidityInMonths $ValidityInMonths -Add-AzureKeyVaultCertificate -VaultName $vaultName -Name $certName -CertificatePolicy $policy - -# Downloading Certificate -Write-Host "Downloading Certificate from KeyVault..." -ForegroundColor Yellow - -$Stoploop = $false -$Retrycount = 0 - -do { - try { - - $kvSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certName -ErrorAction SilentlyContinue - $kvSecretBytes = [System.Convert]::FromBase64String($kvSecret.SecretValueText) - $certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection - $certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable) - $protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPwd) - [System.IO.File]::WriteAllBytes($saveDir + "\" + $certName + ".pfx", $protectedCertificateBytes) - - $Stoploop = $true - Write-Host "Finished!" -ForegroundColor Yellow - } - catch { - if ($Retrycount -gt 5){ - $Stoploop = $true - Write-Host "Not possible to retrieve the certificate!" -ForegroundColor Yellow - } - else { - Start-Sleep -Seconds 20 - $Retrycount = $Retrycount + 1 - } - } -} -While ($Stoploop -eq $false) - -# Show Certificate Values -Get-AzureKeyVaultCertificate -VaultName $vaultName -Name $certName \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/LinuxContainers/readme.md b/deploy/azure/az/servicefabric/LinuxContainers/readme.md deleted file mode 100644 index 98d097b10..000000000 --- a/deploy/azure/az/servicefabric/LinuxContainers/readme.md +++ /dev/null @@ -1,134 +0,0 @@ -# Deploying a Service Fabric cluster based on Linux nodes - -## A. Unsecured cluster (SF Linux cluster) -For a secured cluster, see option B. below. - -You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster - -However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. - -Because of those reasons, we have created a set of ARM templates and scripts so you can create, re-create and configure the SF clusters much faster, as explained below: - -Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Linux Containers. - -## Edit the servicefabricdeploy.parameters.json file - -Edit the following params in `servicefabricdeploy.parameters.json` file to set your values: - -- clusterName: Name of your SF cluster -- clusterLocation: Datacenter location, like westus or westeurope -- computeLocation: Datacenter location, like westus or westeurope -- adminUserName: user-name for VMs administration -- adminPassword: user-password for VMs administration -- dnsName: Name assigned to your SF dns - -Optionally, you could modify which ports are opened in the LoadBalancer for the multiple eShopOnContainer apps and API services. -By default, they are setup as: -- webMvcHttpPort: 5100 -- webSpaHttpPort: 5104 -- webStatusHttpPort: 5107 -- IdSrvHttpRule: 5105 -- BasketApiHttpRule: 5103 -- CatalogApiHttpRule: 5101 -- OrderingApiHttpRule: 5102 -- MarketingApiHttpRule: 5110 -- LocationsApiHttpRule: 5109 - -## Deploy the Service Fabric cluster using the script and ARM templates - -Once parameter file is edited you can deploy it using [create-resources script](../readme.md). - -For example, to deploy the cluster to a new resourcegroup located in westus, go to `deploy\az` folder and type: - -``` -create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploy qa-eshop-sflinux-resgrp -c westus -``` - -You should see a similar execution to the following: -![image](https://user-images.githubusercontent.com/1712635/31638180-15da9f84-b287-11e7-9d4e-604f33690198.png) - -Now, if you go to your subscription in Azure, you should be able to see the SF cluster already created and available, like in the following image: - -![image](https://user-images.githubusercontent.com/1712635/31638398-3fc08ad8-b288-11e7-879b-fc4df0daad2b.png) - -In this case, this is an unsecured SF cluster with a single Linux node, good for initial tests and getting started with SF. - -## B. Secured cluster (SF Linux cluster) - -Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers), you can find the ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) to create a secured Service Fabric cluster environment for Linux Containers (IN THIS CASE, IT IS A SECURED CLUSTER USING A CERTIFICATE). - -The ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) are used to create a service fabric cluster environment for linux containers secured with a certificate. - -## Create Azure Keyvault service -Go to PortalAzure and create a Keyvault service. Make sure Enable access for deployment checkboxes are selected. - -![image](https://user-images.githubusercontent.com/1712635/31638848-9b266530-b28a-11e7-953b-1e3ec1a54f77.png) - -## Generate a certificate in Azure Keyvault -In a POWER-SHELL window, move to the folder [..\deploy\az\servicefabric\LinuxContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/LinuxContainers). - -**Select your Azure subscription** You might have [several Azure subscriptions](https://docs.microsoft.com/en-us/cli/azure/account#set) as shown if you type the following. - - >``` - >az account list - >``` - If you have multiple subscription accounts, you first need to select the Azure subscription account you want to target. Type the following: - >``` - >az account set --subscription "Your Azure Subscription Name or ID" - >``` - -Execute the gen-keyvaultcert.ps1 script to generate and download a certificate from Keyvault. - -``` -.\gen-keyvaultcert.ps1 -vaultName -certName -certPwd -subjectName CN=.westeurope.cloudapp.azure.com -saveDir C:\Users\\Downloads - -``` - -You should see a similar execution to the following: -![image](https://user-images.githubusercontent.com/1712635/31640172-93efcca0-b291-11e7-970e-5b5e6bf07042.png) - -IMPORTANT: At this point, copy/cut the .PFX certificate file saved in the downloads forlder and save it in a secure place. - -## Install the certificate -Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. - - - -Also, install the same certificate as CA (Certificate Authority) under Current User, too. - -![image](https://user-images.githubusercontent.com/1712635/31642795-c6ffa434-b2a1-11e7-8ff8-2a63549a780e.png) - -## Editing servicefabricdeploysecured.parameters.json file - -Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with the unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: - -- sourceVaultValue: Your Azure Keyvault's RESOURCE ID (check Azure keyvault properties, similar to: /subscriptions/e1234ac1-c09c-3jaf-6767-98b3c5f1f246/resourceGroups/eshop-global-resgrp/providers/Microsoft.KeyVault/vaults/eshopkeyvault") - -- certificateUrlValue: Your certificate Secret Identifier (check Azure Keyvault secret certificate properties, should be in the format of https://.vault.azure.net:443/secrets/, similar to: -https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sflinux-cluster-cert/fd47684442c04cdj83b3hfe4h8e08123) - -- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 69JK453486D55A6818577Z0699100365HDK70FCE) - -## Deploy the secured SF Linux cluster - -Once parameters file is edited you can deploy it using [create-resources script](../readme.md). -Use a command prompt window positioned into the deploy\az folder. - -``` -create-resources.cmd servicefabric\LinuxContainers\servicefabricdeploysecured pro-eshop-sflinux-resgrp -c westus -``` -The execution should be something like the following: -![image](https://user-images.githubusercontent.com/1712635/31642529-54479704-b2a0-11e7-90ee-2abf32c92205.png) - -Once the cluster is created you can explore it with Azure's portal, like in the following image: - -![image](https://user-images.githubusercontent.com/1712635/31642956-b7cfc8d0-b2a2-11e7-8ede-a141ec190eb4.png) - -## Deploy eShopOnServiceFabric with Visual Studio. - -Modify the cloud.xml file of each Service Fabric application in PublishProfile directory and set your certificate settings to be able to deploy eshopOnContainers in the secured cluster: - - - - - diff --git a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.json deleted file mode 100644 index fb28174db..000000000 --- a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.json +++ /dev/null @@ -1,751 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterLocation": { - "type": "string", - "metadata": { - "description": "Location of the Cluster" - } - }, - "clusterName": { - "type": "string", - "defaultValue": "Cluster", - "metadata": { - "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" - } - }, - "nt0applicationStartPort": { - "type": "int", - "defaultValue": 20000 - }, - "nt0applicationEndPort": { - "type": "int", - "defaultValue": 30000 - }, - "nt0ephemeralStartPort": { - "type": "int", - "defaultValue": 49152 - }, - "nt0ephemeralEndPort": { - "type": "int", - "defaultValue": 65534 - }, - "nt0fabricTcpGatewayPort": { - "type": "int", - "defaultValue": 19000 - }, - "nt0fabricHttpGatewayPort": { - "type": "int", - "defaultValue": 19080 - }, - "webMvcHttpPort": { - "type": "int", - "defaultValue": 5100 - }, - "webSpaHttpPort": { - "type": "int", - "defaultValue": 5104 - }, - "webStatusHttpPort": { - "type": "int", - "defaultValue": 5107 - }, - "IdSrvHttpRule": { - "type": "int", - "defaultValue": 5105 - }, - "BasketApiHttpRule": { - "type": "int", - "defaultValue": 5103 - }, - "CatalogApiHttpRule": { - "type": "int", - "defaultValue": 5101 - }, - "OrderingApiHttpRule": { - "type": "int", - "defaultValue": 5102 - }, - "MarketingApiHttpRule": { - "type": "int", - "defaultValue": 5110 - }, - "LocationsApiHttpRule": { - "type": "int", - "defaultValue": 5109 - }, - "subnet0Name": { - "type": "string", - "defaultValue": "Subnet-0" - }, - "subnet0Prefix": { - "type": "string", - "defaultValue": "10.0.0.0/24" - }, - "computeLocation": { - "type": "string" - }, - "publicIPAddressName": { - "type": "string", - "defaultValue": "PublicIP-VM" - }, - "publicIPAddressType": { - "type": "string", - "allowedValues": [ - "Dynamic" - ], - "defaultValue": "Dynamic" - }, - "vmStorageAccountContainerName": { - "type": "string", - "defaultValue": "vhds" - }, - "adminUserName": { - "type": "string", - "defaultValue": "testadm", - "metadata": { - "description": "Remote desktop user Id" - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Remote desktop user password. Must be a strong password" - } - }, - "virtualNetworkName": { - "type": "string", - "defaultValue": "VNet" - }, - "addressPrefix": { - "type": "string", - "defaultValue": "10.0.0.0/16" - }, - "dnsName": { - "type": "string" - }, - "nicName": { - "type": "string", - "defaultValue": "NIC" - }, - "lbName": { - "type": "string", - "defaultValue": "LoadBalancer" - }, - "lbIPName": { - "type": "string", - "defaultValue": "PublicIP-LB-FE" - }, - "overProvision": { - "type": "string", - "defaultValue": "false" - }, - "vmImagePublisher": { - "type": "string", - "defaultValue": "Microsoft.Azure.ServiceFabric" - }, - "vmImageOffer": { - "type": "string", - "defaultValue": "UbuntuServer" - }, - "vmImageSku": { - "type": "string", - "defaultValue": "16.04" - }, - "vmImageVersion": { - "type": "string", - "defaultValue": "6.0.12" - }, - "storageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the VM image storage account" - } - }, - "supportLogStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the support log storage account" - } - }, - "supportLogStorageAccountName": { - "type": "string", - "defaultValue": "[toLower( concat('sflogs', uniqueString(resourceGroup().id),'2'))]", - "metadata": { - "description": "Name for the storage account that contains support logs from the cluster" - } - }, - "applicationDiagnosticsStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the application diagnostics storage account" - } - }, - "applicationDiagnosticsStorageAccountName": { - "type": "string", - "defaultValue": "[toLower(concat(uniqueString(resourceGroup().id), '3' ))]", - "metadata": { - "description": "Name for the storage account that contains application diagnostics data from the cluster" - } - }, - "nt0InstanceCount": { - "type": "int", - "defaultValue": 1, - "metadata": { - "description": "Instance count for node type" - } - }, - "vmNodeType0Name": { - "type": "string", - "defaultValue": "primary", - "maxLength": 9 - }, - "vmNodeType0Size": { - "type": "string", - "defaultValue": "Standard_D1_v2" - } - }, - "variables": { - "vmssApiVersion": "2017-03-30", - "lbApiVersion": "2015-06-15", - "vNetApiVersion": "2015-06-15", - "storageApiVersion": "2016-01-01", - "publicIPApiVersion": "2015-06-15", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", - "subnet0Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet0Name'))]", - "wadlogs": "", - "wadperfcounters1": "", - "wadperfcounters2": "", - "wadcfgxstart": "[concat(variables('wadlogs'),variables('wadperfcounters1'),variables('wadperfcounters2'),'')]", - "lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]", - "lbIPConfig0": "[concat(variables('lbID0'),'/frontendIPConfigurations/LoadBalancerIPConfig')]", - "lbPoolID0": "[concat(variables('lbID0'),'/backendAddressPools/LoadBalancerBEAddressPool')]", - "lbProbeID0": "[concat(variables('lbID0'),'/probes/FabricGatewayProbe')]", - "lbHttpProbeID0": "[concat(variables('lbID0'),'/probes/FabricHttpGatewayProbe')]", - "lbNatPoolID0": "[concat(variables('lbID0'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]", - "vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]", - "wadmetricsresourceid0": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name ,'/providers/','Microsoft.Compute/virtualMachineScaleSets/', parameters('vmNodeType0Name'))]" - }, - "resources": [ - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[parameters('supportLogStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('supportLogStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[parameters('applicationDiagnosticsStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('applicationDiagnosticsStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('vNetApiVersion')]", - "type": "Microsoft.Network/virtualNetworks", - "name": "[parameters('virtualNetworkName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[parameters('subnet0Name')]", - "properties": { - "addressPrefix": "[parameters('subnet0Prefix')]" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('publicIPApiVersion')]", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[concat(parameters('lbIPName'),'-','0')]", - "location": "[parameters('computeLocation')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[parameters('dnsName')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('lbApiVersion')]", - "type": "Microsoft.Network/loadBalancers", - "name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]" - ], - "properties": { - "frontendIPConfigurations": [ - { - "name": "LoadBalancerIPConfig", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "LoadBalancerBEAddressPool", - "properties": {} - } - ], - "loadBalancingRules": [ - { - "name": "LBRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "LBHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebMVCHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webMvcHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webMvcHttpPort')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "WebSPAHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webSpaHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webSpaHttpPort')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "WebStatusHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webStatusHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webStatusHttpPort')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "IdSrvHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('IdSrvHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('IdSrvHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "BasketApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('BasketApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('BasketApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "CatalogApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('CatalogApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('CatalogApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "OrderingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('OrderingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('OrderingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "MarketingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('MarketingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('MarketingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "LocationsApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('LocationsApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('LocationsApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - } - ], - "probes": [ - { - "name": "FabricGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricTcpGatewayPort')]", - "protocol": "tcp" - } - }, - { - "name": "FabricHttpGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricHttpGatewayPort')]", - "protocol": "tcp" - } - } - ], - "inboundNatPools": [ - { - "name": "LoadBalancerBEAddressNatPool", - "properties": { - "backendPort": "22", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPortRangeEnd": "4500", - "frontendPortRangeStart": "3389", - "protocol": "tcp" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('vmssApiVersion')]", - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[parameters('vmNodeType0Name')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", - "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('applicationDiagnosticsStorageAccountName'))]" - ], - "properties": { - "overprovision": "[parameters('overProvision')]", - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "extensionProfile": { - "extensions": [ - { - "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricLinuxNode')]", - "properties": { - "type": "ServiceFabricLinuxNode", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key1]", - "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key2]" - }, - "publisher": "Microsoft.Azure.ServiceFabric", - "settings": { - "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", - "nodeTypeRef": "[parameters('vmNodeType0Name')]", - "durabilityLevel": "Bronze", - "enableParallelJobs": true, - "nicPrefixOverride": "[parameters('subnet0Prefix')]" - }, - "typeHandlerVersion": "1.0" - } - }, - { - "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]", - "properties": { - "type": "LinuxDiagnostic", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]", - "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", - "storageAccountEndPoint": "https://core.windows.net/" - }, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid0'),variables('wadcfgxend')))]", - "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]" - }, - "typeHandlerVersion": "2.3" - } - } - ] - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[concat(parameters('nicName'), '-0')]", - "properties": { - "ipConfigurations": [ - { - "name": "[concat(parameters('nicName'),'-',0)]", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[variables('lbPoolID0')]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[variables('lbNatPoolID0')]" - } - ], - "subnet": { - "id": "[variables('subnet0Ref')]" - } - } - } - ], - "primary": true - } - } - ] - }, - "osProfile": { - "adminPassword": "[parameters('adminPassword')]", - "adminUsername": "[parameters('adminUsername')]", - "computernamePrefix": "[parameters('vmNodeType0Name')]" - }, - "storageProfile": { - "imageReference": { - "publisher": "[parameters('vmImagePublisher')]", - "offer": "[parameters('vmImageOffer')]", - "sku": "[parameters('vmImageSku')]", - "version": "[parameters('vmImageVersion')]" - }, - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage", - "managedDisk": { - "storageAccountType": "[parameters('storageAccountType')]" - } - } - } - } - }, - "sku": { - "name": "[parameters('vmNodeType0Size')]", - "capacity": "[parameters('nt0InstanceCount')]", - "tier": "Standard" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "2017-07-01-preview", - "type": "Microsoft.ServiceFabric/clusters", - "name": "[parameters('clusterName')]", - "location": "[parameters('clusterLocation')]", - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]" - ], - "properties": { - "addonFeatures": [ - "DnsService" - ], - "clientCertificateCommonNames": [], - "clientCertificateThumbprints": [], - "clusterCodeVersion": "6.0.120.1", - "clusterState": "Default", - "diagnosticsStorageAccountConfig": { - "blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]", - "protectedAccountKeyName": "StorageAccountKey1", - "queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]", - "storageAccountName": "[parameters('supportLogStorageAccountName')]", - "tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]" - }, - "fabricSettings": [], - "managementEndpoint": "[concat('http://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]", - "nodeTypes": [ - { - "name": "[parameters('vmNodeType0Name')]", - "applicationPorts": { - "endPort": "[parameters('nt0applicationEndPort')]", - "startPort": "[parameters('nt0applicationStartPort')]" - }, - "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]", - "durabilityLevel": "Bronze", - "ephemeralPorts": { - "endPort": "[parameters('nt0ephemeralEndPort')]", - "startPort": "[parameters('nt0ephemeralStartPort')]" - }, - "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]", - "isPrimary": true, - "vmInstanceCount": "[parameters('nt0InstanceCount')]" - } - ], - "provisioningState": "Default", - "reliabilityLevel": "None", - "upgradeMode": "Manual", - "vmImage": "Linux" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - } - ], - "outputs": { - "clusterProperties": { - "value": "[reference(parameters('clusterName'))]", - "type": "object" - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json deleted file mode 100644 index 0e37d24ec..000000000 --- a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploy.parameters.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterName": { - "value": "qa-eshop-sflinux-cluster" - }, - "clusterLocation": { - "value": "westus" - }, - "computeLocation": { - "value": "westus" - }, - "adminUserName": { - "value": "eshop" - }, - "adminPassword": { - "value": "Your_complex_Pass@word1" - }, - "nicName": { - "value": "NIC-eshoponsflin" - }, - "publicIPAddressName": { - "value": "eshoponsflin-PubIP" - }, - "dnsName": { - "value": "qa-eshop-sflinux-cluster" - }, - "virtualNetworkName": { - "value": "VNet-eshoponsflin" - }, - "lbName": { - "value": "LB-eshoponsflin" - }, - "lbIPName": { - "value": "LBIP-eshoponsflin" - }, - "vmImageSku": { - "value": "16.04-LTS" - }, - "vmImageVersion": { - "value": "latest" - }, - "vmImagePublisher": { - "value": "Canonical" - }, - "nt0ephemeralStartPort": { - "value": 49152 - }, - "nt0ephemeralEndPort": { - "value": 65534 - }, - "nt0applicationStartPort": { - "value": 20000 - }, - "nt0applicationEndPort": { - "value": 30000 - }, - "nt0fabricTcpGatewayPort": { - "value": 19000 - }, - "nt0fabricHttpGatewayPort": { - "value": 19080 - }, - "webMvcHttpPort": { - "value": 5100 - }, - "webSpaHttpPort": { - "value": 5104 - }, - "webStatusHttpPort": { - "value": 5107 - }, - "IdSrvHttpRule": { - "value": 5105 - }, - "BasketApiHttpRule": { - "value": 5103 - }, - "CatalogApiHttpRule": { - "value": 5101 - }, - "OrderingApiHttpRule": { - "value": 5102 - }, - "MarketingApiHttpRule": { - "value": 5110 - }, - "LocationsApiHttpRule": { - "value": 5109 - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json deleted file mode 100644 index 0d6620f32..000000000 --- a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.json +++ /dev/null @@ -1,821 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterLocation": { - "type": "string", - "metadata": { - "description": "Location of the Cluster" - } - }, - "clusterName": { - "type": "string", - "defaultValue": "Cluster", - "metadata": { - "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" - } - }, - "nt0applicationStartPort": { - "type": "int", - "defaultValue": 20000 - }, - "nt0applicationEndPort": { - "type": "int", - "defaultValue": 30000 - }, - "nt0ephemeralStartPort": { - "type": "int", - "defaultValue": 49152 - }, - "nt0ephemeralEndPort": { - "type": "int", - "defaultValue": 65534 - }, - "nt0fabricTcpGatewayPort": { - "type": "int", - "defaultValue": 19000 - }, - "nt0fabricHttpGatewayPort": { - "type": "int", - "defaultValue": 19080 - }, - "webMvcHttpPort": { - "type": "int", - "defaultValue": 5100 - }, - "webSpaHttpPort": { - "type": "int", - "defaultValue": 5104 - }, - "webStatusHttpPort": { - "type": "int", - "defaultValue": 5107 - }, - "IdSrvHttpRule": { - "type": "int", - "defaultValue": 5105 - }, - "BasketApiHttpRule": { - "type": "int", - "defaultValue": 5103 - }, - "CatalogApiHttpRule": { - "type": "int", - "defaultValue": 5101 - }, - "OrderingApiHttpRule": { - "type": "int", - "defaultValue": 5102 - }, - "MarketingApiHttpRule": { - "type": "int", - "defaultValue": 5110 - }, - "LocationsApiHttpRule": { - "type": "int", - "defaultValue": 5109 - }, - "subnet0Name": { - "type": "string", - "defaultValue": "Subnet-0" - }, - "subnet0Prefix": { - "type": "string", - "defaultValue": "10.0.0.0/24" - }, - "computeLocation": { - "type": "string" - }, - "publicIPAddressName": { - "type": "string", - "defaultValue": "PublicIP-VM" - }, - "publicIPAddressType": { - "type": "string", - "allowedValues": [ - "Dynamic" - ], - "defaultValue": "Dynamic" - }, - "vmStorageAccountContainerName": { - "type": "string", - "defaultValue": "vhds" - }, - "adminUserName": { - "type": "string", - "defaultValue": "testadm", - "metadata": { - "description": "Remote desktop user Id" - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Remote desktop user password. Must be a strong password" - } - }, - "virtualNetworkName": { - "type": "string", - "defaultValue": "VNet" - }, - "addressPrefix": { - "type": "string", - "defaultValue": "10.0.0.0/16" - }, - "dnsName": { - "type": "string" - }, - "nicName": { - "type": "string", - "defaultValue": "NIC" - }, - "lbName": { - "type": "string", - "defaultValue": "LoadBalancer" - }, - "lbIPName": { - "type": "string", - "defaultValue": "PublicIP-LB-FE" - }, - "overProvision": { - "type": "string", - "defaultValue": "false" - }, - "vmImagePublisher": { - "type": "string", - "defaultValue": "Microsoft.Azure.ServiceFabric" - }, - "vmImageOffer": { - "type": "string", - "defaultValue": "UbuntuServer" - }, - "vmImageSku": { - "type": "string", - "defaultValue": "16.04" - }, - "vmImageVersion": { - "type": "string", - "defaultValue": "6.0.12" - }, - "clusterProtectionLevel": { - "type": "string", - "allowedValues": [ - "None", - "Sign", - "EncryptAndSign" - ], - "defaultValue": "EncryptAndSign", - "metadata": { - "description": "Protection level.Three values are allowed - EncryptAndSign, Sign, None. It is best to keep the default of EncryptAndSign, unless you have a need not to" - } - }, - "certificateStoreValue": { - "type": "string", - "allowedValues": [ - "My" - ], - "defaultValue": "My", - "metadata": { - "description": "The store name where the cert will be deployed in the virtual machine" - } - }, - "certificateThumbprint": { - "type": "string", - "metadata": { - "description": "Certificate Thumbprint" - } - }, - "sourceVaultValue": { - "type": "string", - "metadata": { - "description": "Resource Id of the key vault, is should be in the format of /subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/" - } - }, - "certificateUrlValue": { - "type": "string", - "metadata": { - "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://.vault.azure.net:443/secrets/" - } - }, - "storageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the VM image storage account" - } - }, - "supportLogStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the support log storage account" - } - }, - "supportLogStorageAccountName": { - "type": "string", - "defaultValue": "[toLower( concat('sflogs', uniqueString(resourceGroup().id),'2'))]", - "metadata": { - "description": "Name for the storage account that contains support logs from the cluster" - } - }, - "applicationDiagnosticsStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the application diagnostics storage account" - } - }, - "applicationDiagnosticsStorageAccountName": { - "type": "string", - "defaultValue": "[toLower(concat(uniqueString(resourceGroup().id), '3' ))]", - "metadata": { - "description": "Name for the storage account that contains application diagnostics data from the cluster" - } - }, - "nt0InstanceCount": { - "type": "int", - "defaultValue": 5, - "metadata": { - "description": "Instance count for node type" - } - }, - "vmNodeType0Name": { - "type": "string", - "defaultValue": "primary", - "maxLength": 9 - }, - "vmNodeType0Size": { - "type": "string", - "defaultValue": "Standard_D1_v2" - } - }, - "variables": { - "vmssApiVersion": "2017-03-30", - "lbApiVersion": "2015-06-15", - "vNetApiVersion": "2015-06-15", - "storageApiVersion": "2016-01-01", - "publicIPApiVersion": "2015-06-15", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", - "subnet0Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet0Name'))]", - "wadlogs": "", - "wadperfcounters1": "", - "wadperfcounters2": "", - "wadcfgxstart": "[concat(variables('wadlogs'),variables('wadperfcounters1'),variables('wadperfcounters2'),'')]", - "lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]", - "lbIPConfig0": "[concat(variables('lbID0'),'/frontendIPConfigurations/LoadBalancerIPConfig')]", - "lbPoolID0": "[concat(variables('lbID0'),'/backendAddressPools/LoadBalancerBEAddressPool')]", - "lbProbeID0": "[concat(variables('lbID0'),'/probes/FabricGatewayProbe')]", - "lbHttpProbeID0": "[concat(variables('lbID0'),'/probes/FabricHttpGatewayProbe')]", - "lbNatPoolID0": "[concat(variables('lbID0'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]", - "vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]", - "wadmetricsresourceid0": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name ,'/providers/','Microsoft.Compute/virtualMachineScaleSets/', parameters('vmNodeType0Name'))]" - }, - "resources": [ - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[parameters('supportLogStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('supportLogStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[parameters('applicationDiagnosticsStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('applicationDiagnosticsStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('vNetApiVersion')]", - "type": "Microsoft.Network/virtualNetworks", - "name": "[parameters('virtualNetworkName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[parameters('subnet0Name')]", - "properties": { - "addressPrefix": "[parameters('subnet0Prefix')]" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('publicIPApiVersion')]", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[concat(parameters('lbIPName'),'-','0')]", - "location": "[parameters('computeLocation')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[parameters('dnsName')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('lbApiVersion')]", - "type": "Microsoft.Network/loadBalancers", - "name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]" - ], - "properties": { - "frontendIPConfigurations": [ - { - "name": "LoadBalancerIPConfig", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "LoadBalancerBEAddressPool", - "properties": {} - } - ], - "loadBalancingRules": [ - { - "name": "LBRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "LBHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebMVCHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webMvcHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webMvcHttpPort')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "WebSPAHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webSpaHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webSpaHttpPort')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "WebStatusHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webStatusHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webStatusHttpPort')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "IdSrvHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('IdSrvHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('IdSrvHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "BasketApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('BasketApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('BasketApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "CatalogApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('CatalogApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('CatalogApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "OrderingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('OrderingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('OrderingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "MarketingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('MarketingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('MarketingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "LocationsApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('LocationsApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('LocationsApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - } - ], - "probes": [ - { - "name": "FabricGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricTcpGatewayPort')]", - "protocol": "tcp" - } - }, - { - "name": "FabricHttpGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricHttpGatewayPort')]", - "protocol": "tcp" - } - } - ], - "inboundNatPools": [ - { - "name": "LoadBalancerBEAddressNatPool", - "properties": { - "backendPort": "22", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPortRangeEnd": "4500", - "frontendPortRangeStart": "3389", - "protocol": "tcp" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('vmssApiVersion')]", - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[parameters('vmNodeType0Name')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", - "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('applicationDiagnosticsStorageAccountName'))]" - ], - "properties": { - "overprovision": "[parameters('overProvision')]", - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "extensionProfile": { - "extensions": [ - { - "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricLinuxNode')]", - "properties": { - "type": "ServiceFabricLinuxNode", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key1]", - "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key2]" - }, - "publisher": "Microsoft.Azure.ServiceFabric", - "settings": { - "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", - "nodeTypeRef": "[parameters('vmNodeType0Name')]", - "durabilityLevel": "Bronze", - "enableParallelJobs": true, - "nicPrefixOverride": "[parameters('subnet0Prefix')]", - "certificate": { - "thumbprint": "[parameters('certificateThumbprint')]", - "x509StoreName": "[parameters('certificateStoreValue')]" - } - }, - "typeHandlerVersion": "1.0" - } - }, - { - "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]", - "properties": { - "type": "LinuxDiagnostic", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]", - "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", - "storageAccountEndPoint": "https://core.windows.net/" - }, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid0'),variables('wadcfgxend')))]", - "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]" - }, - "typeHandlerVersion": "2.3" - } - } - ] - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[concat(parameters('nicName'), '-0')]", - "properties": { - "ipConfigurations": [ - { - "name": "[concat(parameters('nicName'),'-',0)]", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[variables('lbPoolID0')]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[variables('lbNatPoolID0')]" - } - ], - "subnet": { - "id": "[variables('subnet0Ref')]" - } - } - } - ], - "primary": true - } - } - ] - }, - "osProfile": { - "adminPassword": "[parameters('adminPassword')]", - "adminUsername": "[parameters('adminUsername')]", - "computernamePrefix": "[parameters('vmNodeType0Name')]", - "secrets": [ - { - "sourceVault": { - "id": "[parameters('sourceVaultValue')]" - }, - "vaultCertificates": [ - { - "certificateUrl": "[parameters('certificateUrlValue')]" - } - ] - } - ] - }, - "storageProfile": { - "imageReference": { - "publisher": "[parameters('vmImagePublisher')]", - "offer": "[parameters('vmImageOffer')]", - "sku": "[parameters('vmImageSku')]", - "version": "[parameters('vmImageVersion')]" - }, - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage", - "managedDisk": { - "storageAccountType": "[parameters('storageAccountType')]" - } - } - } - } - }, - "sku": { - "name": "[parameters('vmNodeType0Size')]", - "capacity": "[parameters('nt0InstanceCount')]", - "tier": "Standard" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "2017-07-01-preview", - "type": "Microsoft.ServiceFabric/clusters", - "name": "[parameters('clusterName')]", - "location": "[parameters('clusterLocation')]", - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]" - ], - "properties": { - "addonFeatures": [ - "DnsService" - ], - "certificate": { - "thumbprint": "[parameters('certificateThumbprint')]", - "x509StoreName": "[parameters('certificateStoreValue')]" - }, - "clientCertificateCommonNames": [], - "clientCertificateThumbprints": [], - "clusterCodeVersion": "6.0.120.1", - "clusterState": "Default", - "diagnosticsStorageAccountConfig": { - "blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]", - "protectedAccountKeyName": "StorageAccountKey1", - "queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]", - "storageAccountName": "[parameters('supportLogStorageAccountName')]", - "tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]" - }, - "fabricSettings": [ - { - "parameters": [ - { - "name": "ClusterProtectionLevel", - "value": "[parameters('clusterProtectionLevel')]" - } - ], - "name": "Security" - } - ], - "managementEndpoint": "[concat('https://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]", - "nodeTypes": [ - { - "name": "[parameters('vmNodeType0Name')]", - "applicationPorts": { - "endPort": "[parameters('nt0applicationEndPort')]", - "startPort": "[parameters('nt0applicationStartPort')]" - }, - "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]", - "durabilityLevel": "Bronze", - "ephemeralPorts": { - "endPort": "[parameters('nt0ephemeralEndPort')]", - "startPort": "[parameters('nt0ephemeralStartPort')]" - }, - "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]", - "isPrimary": true, - "vmInstanceCount": "[parameters('nt0InstanceCount')]" - } - ], - "provisioningState": "Default", - "reliabilityLevel": "Silver", - "upgradeMode": "Manual", - "vmImage": "Linux" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - } - ], - "outputs": { - "clusterProperties": { - "value": "[reference(parameters('clusterName'))]", - "type": "object" - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json b/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json deleted file mode 100644 index 65875cb31..000000000 --- a/deploy/azure/az/servicefabric/LinuxContainers/servicefabricdeploysecured.parameters.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterName": { - "value": "pro-eshop-sflinux-cluster" - }, - "clusterLocation": { - "value": "westus" - }, - "computeLocation": { - "value": "westus" - }, - "adminUserName": { - "value": "eshop" - }, - "adminPassword": { - "value": "Pass@word1" - }, - "nicName": { - "value": "NIC-eshopsflinsec" - }, - "publicIPAddressName": { - "value": "eshopsflinsec-PubIP" - }, - "dnsName": { - "value": "pro-eshop-sflinux-cluster" - }, - "virtualNetworkName": { - "value": "VNet-eshopsflin" - }, - "lbName": { - "value": "LB-eshopsflin" - }, - "lbIPName": { - "value": "LBIP-eshopsflin" - }, - "sourceVaultValue": { - "value": "your-value-check-keyvault-at-azure" - }, - "certificateUrlValue": { - "value": "your-value-check-keyvault-at-azure" - }, - "certificateThumbprint": { - "value": "your-value-check-keyvault-at-azure" - }, - "vmImageSku": { - "value": "16.04-LTS" - }, - "vmImageVersion": { - "value": "latest" - }, - "vmImagePublisher": { - "value": "Canonical" - }, - "nt0ephemeralStartPort": { - "value": 49152 - }, - "nt0ephemeralEndPort": { - "value": 65534 - }, - "nt0applicationStartPort": { - "value": 20000 - }, - "nt0applicationEndPort": { - "value": 30000 - }, - "nt0fabricTcpGatewayPort": { - "value": 19000 - }, - "nt0fabricHttpGatewayPort": { - "value": 19080 - }, - "webMvcHttpPort": { - "value": 5100 - }, - "webSpaHttpPort": { - "value": 5104 - }, - "webStatusHttpPort": { - "value": 5107 - }, - "IdSrvHttpRule": { - "value": 5105 - }, - "BasketApiHttpRule": { - "value": 5103 - }, - "CatalogApiHttpRule": { - "value": 5101 - }, - "OrderingApiHttpRule": { - "value": 5102 - }, - "MarketingApiHttpRule": { - "value": 5110 - }, - "LocationsApiHttpRule": { - "value": 5109 - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 b/deploy/azure/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 deleted file mode 100644 index c6fc34013..000000000 --- a/deploy/azure/az/servicefabric/WindowsContainers/gen-keyvaultcert.ps1 +++ /dev/null @@ -1,53 +0,0 @@ -Param( - [parameter(Mandatory=$true)][string]$vaultName, - [parameter(Mandatory=$true)][string]$certName, - [parameter(Mandatory=$true)][string]$certPwd, - [parameter(Mandatory=$true)][string]$subjectName, - [parameter(Mandatory=$false)][string]$ValidityInMonths=12, - [parameter(Mandatory=$true)][string]$saveDir -) - - -#Log in Azure Account -Login-AzureRmAccount - - -# Create Cert in KeyVault -Write-Host "Creating certificate in Azure KeyVault..." -ForegroundColor Yellow -$policy = New-AzureKeyVaultCertificatePolicy -SubjectName $subjectName -IssuerName Self -ValidityInMonths $ValidityInMonths -Add-AzureKeyVaultCertificate -VaultName $vaultName -Name $certName -CertificatePolicy $policy - -# Downloading Certificate -Write-Host "Downloading Certificate from KeyVault..." -ForegroundColor Yellow - -$Stoploop = $false -$Retrycount = 0 - -do { - try { - - $kvSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certName -ErrorAction SilentlyContinue - $kvSecretBytes = [System.Convert]::FromBase64String($kvSecret.SecretValueText) - $certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection - $certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable) - $protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPwd) - [System.IO.File]::WriteAllBytes($saveDir + "\" + $certName + ".pfx", $protectedCertificateBytes) - - $Stoploop = $true - Write-Host "Finished!" -ForegroundColor Yellow - } - catch { - if ($Retrycount -gt 5){ - $Stoploop = $true - Write-Host "Not possible to retrieve the certificate!" -ForegroundColor Yellow - } - else { - Start-Sleep -Seconds 20 - $Retrycount = $Retrycount + 1 - } - } -} -While ($Stoploop -eq $false) - -# Show Certificate Values -Get-AzureKeyVaultCertificate -VaultName $vaultName -Name $certName \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/WindowsContainers/readme.md b/deploy/azure/az/servicefabric/WindowsContainers/readme.md deleted file mode 100644 index 18aa8ad78..000000000 --- a/deploy/azure/az/servicefabric/WindowsContainers/readme.md +++ /dev/null @@ -1,138 +0,0 @@ -# Deploying a Service Fabric cluster based on Windows nodes - -## A. Unsecured cluster (SF Windows cluster) -For a secured cluster, see option B. below. - -You can always deploy a SF cluster through the Azure portal, as explained in this article: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-azure-cluster - -However, when creating a cluster, there are quite a few configurations to take into account, like enabling the internal DNS service or Reverse Proxy service, choosing between Linux/Windows, open/publish your application ports in the load-balancer and most of all (the most complex setup) how to create a secure cluster. - -Because of those reasons, we have created a set of ARM templates and scripts so you can create, re-create and configure the SF clusters much faster, as explained below: - -Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers), you can find the ARM template `servicefabricdeploy.json` and its parameters file (`servicefabricdeploy.parameters.json`) to create a Service Fabric cluster environment for Windows Containers (NOT SECURED CLUSTER). - -## Edit the servicefabricdeploy.parameters.json file - -Edit the following params in `servicefabricdeploy.parameters.json` file to set your values: - -- clusterName: Name of your SF cluster -- clusterLocation: Datacenter location, like westus or westeurope -- computeLocation: Datacenter location, like westus or westeurope -- adminUserName: user-name for VMs administration -- adminPassword: user-password for VMs administration -- dnsName: Name assigned to your SF dns - -Optionally, you could modify which ports are opened in the LoadBalancer for the multiple eShopOnContainer apps and API services. -By default, they are setup as: -- webMvcHttpPort: 5100 -- webSpaHttpPort: 5104 -- webStatusHttpPort: 5107 -- IdSrvHttpRule: 5105 -- BasketApiHttpRule: 5103 -- CatalogApiHttpRule: 5101 -- OrderingApiHttpRule: 5102 -- MarketingApiHttpRule: 5110 -- LocationsApiHttpRule: 5109 - -## Deploy the Service Fabric cluster using the script and ARM templates - -Once parameter file is edited you can deploy it using [create-resources script](../readme.md). - -For example, to deploy the cluster to a new resourcegroup located in westus, using the Command Prompt, go to `deploy\az` folder and type: -``` -create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploy qa-eshop-sfwin-resgrp -c westus -``` - -You should see a similar execution to the following: -![image](https://user-images.githubusercontent.com/1712635/31638979-4881d7aa-b28b-11e7-873c-e1185043a9eb.png) - -Now, if you go to your subscription in Azure, you should be able to see the SF cluster already created and available, like in the following image: - -![image](https://user-images.githubusercontent.com/1712635/31639043-9b26c786-b28b-11e7-8d59-eeea97f74176.png) - -In this case, this is an unsecured SF cluster with a single Windows node, good for initial tests and getting started with SF. - - -## B. Secured cluster (SF Windows cluster) - -Within eShopOnContainers root folder, at the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers), you can find the ARM template `servicefabricdeploysecured.json` and its parameter file (`servicefabricdeploysecured.parameters.json`) to create a secured Service Fabric cluster environment for Windows Containers (IN THIS CASE, IT IS A SECURED CLUSTER USING A CERTIFICATE). - -## Create Azure Keyvault service -Go to PortalAzure and create a Keyvault service. Make sure Enable access for deployment checkboxes are selected. - -![image](https://user-images.githubusercontent.com/1712635/31638848-9b266530-b28a-11e7-953b-1e3ec1a54f77.png) - -## Generate a certificate in Azure Keyvault -In a POWER-SHELL window, move to the folder [..\deploy\az\servicefabric\WindowsContainers](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/az/servicefabric/WindowsContainers). - -**Select your Azure subscription** You might have [several Azure subscriptions](https://docs.microsoft.com/en-us/cli/azure/account#set) as shown if you type the following. - - >``` - >az account list - >``` - If you have multiple subscription accounts, you first need to select the Azure subscription account you want to target. Type the following: - >``` - >az account set --subscription "Your Azure Subscription Name or ID" - >``` - -**Execute the gen-keyvaultcert.ps1 script** to generate and download a certificate from Keyvault. -Make sure you're going to run it against the Azure subscription you mean it. - -You might need to authenticate from the browser when running this PowerShell script. - -``` -.\gen-keyvaultcert.ps1 -vaultName -certName -certPwd -subjectName CN=.westus.cloudapp.azure.com -saveDir C:\Users\\Downloads - -``` -You should see a similar execution to the following: -![image](https://user-images.githubusercontent.com/1712635/31640172-93efcca0-b291-11e7-970e-5b5e6bf07042.png) - -IMPORTANT: At this point, copy/cut the .PFX certificate file saved in the downloads forlder and save it in a secure place. - -## Install the certificate -Install the certificate (by double-clicking on the .PFX file) under 'Current User' store location (by default location) and check it as exportable. - - - -Also, install the same certificate as CA (Certificate Authority) under Current User, too. - -![image](https://user-images.githubusercontent.com/1712635/31642795-c6ffa434-b2a1-11e7-8ff8-2a63549a780e.png) - -## Editing servicefabricdeploysecured.parameters.json file - -Edit the parameters in `servicefabricdeploysecured.parameters.json` in a similar way you can do with the unsecured .json file shown above (clusterName, dnsName, etc.), plus edit the following values: - -- sourceVaultValue: Your Azure Keyvault's RESOURCE ID (check Azure keyvault properties, similar to: /subscriptions/e1234ac1-c09c-3jaf-6767-98b3c5f1f246/resourceGroups/eshop-global-resgrp/providers/Microsoft.KeyVault/vaults/eshopkeyvault") - -- certificateUrlValue: Your certificate Secret Identifier (check Azure Keyvault secret certificate properties, should be in the format of https://.vault.azure.net:443/secrets/, similar to: -https://eshopkeyvault.vault.azure.net/secrets/pro-eshop-sfwin-cluster-cert/w647684642cGE2sj83b3hfe4h8e08963) - -- certificateThumbprint: certificate thumbprint (check azure Keyvault certificate thumbprint, something like 88JK453486D55A6818573G0DW9100365HDK70HDK) - -## Deploy the secured SF cluster (Windows nodes) - -Once parameters file is edited you can deploy it using [create-resources script](../readme.md). - -Use a command prompt window positioned into the deploy\az folder. - -``` -create-resources.cmd servicefabric\WindowsContainers\servicefabricdeploysecured pro-eshop-sfwin-resgrp -c westus -``` -The execution should be something like the following: - -![image](https://user-images.githubusercontent.com/1712635/31641955-0bc9d59e-b29d-11e7-9230-5ba02843d98a.png) - -Once the cluster is created you can explore it with Azure's portal, like in the following image: -![image](https://user-images.githubusercontent.com/1712635/31642431-bf1c409e-b29f-11e7-980f-a7685a45108c.png) - -In this case, the ARM template is creating a 5 node cluster when creating a SECURE cluster for "production". - - -# Deploy eShopOnServiceFabric with Visual Studio. - -Modify the cloud.xml file of each Service Fabric application in PublishProfile directory and set your certificate settings to be able to deploy eshopOnContainers in the secured cluster: - - - - - diff --git a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.json deleted file mode 100644 index b33d939ed..000000000 --- a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.json +++ /dev/null @@ -1,859 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", - "contentVersion": "1.0.0.0", - "parameters": { - "prefix": { - "type": "string" - }, - "clusterLocation": { - "type": "string", - "metadata": { - "description": "Location of the Cluster" - } - }, - "clusterName": { - "type": "string", - "defaultValue": "Cluster", - "metadata": { - "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" - } - }, - "nt0applicationStartPort": { - "type": "int", - "defaultValue": 20000 - }, - "nt0applicationEndPort": { - "type": "int", - "defaultValue": 30000 - }, - "nt0ephemeralStartPort": { - "type": "int", - "defaultValue": 49152 - }, - "nt0ephemeralEndPort": { - "type": "int", - "defaultValue": 65534 - }, - "nt0fabricTcpGatewayPort": { - "type": "int", - "defaultValue": 19000 - }, - "nt0fabricHttpGatewayPort": { - "type": "int", - "defaultValue": 19080 - }, - "nt0reverseProxyEndpointPort": { - "type": "int", - "defaultValue": 19081 - }, - "webMvcHttpPort": { - "type": "int", - "defaultValue": 5100 - }, - "webSpaHttpPort": { - "type": "int", - "defaultValue": 5104 - }, - "webStatusHttpPort": { - "type": "int", - "defaultValue": 5107 - }, - "IdSrvHttpRule": { - "type": "int", - "defaultValue": 5105 - }, - "BasketApiHttpRule": { - "type": "int", - "defaultValue": 5103 - }, - "CatalogApiHttpRule": { - "type": "int", - "defaultValue": 5101 - }, - "OrderingApiHttpRule": { - "type": "int", - "defaultValue": 5102 - }, - "MarketingApiHttpRule": { - "type": "int", - "defaultValue": 5110 - }, - "LocationsApiHttpRule": { - "type": "int", - "defaultValue": 5109 - }, - "subnet0Name": { - "type": "string", - "defaultValue": "Subnet-0" - }, - "subnet0Prefix": { - "type": "string", - "defaultValue": "10.0.0.0/24" - }, - "computeLocation": { - "type": "string" - }, - "publicIPAddressName": { - "type": "string", - "defaultValue": "PublicIP-VM" - }, - "publicIPAddressType": { - "type": "string", - "allowedValues": [ - "Dynamic" - ], - "defaultValue": "Dynamic" - }, - "vmStorageAccountContainerName": { - "type": "string", - "defaultValue": "vhds" - }, - "adminUserName": { - "type": "string", - "defaultValue": "testadm", - "metadata": { - "description": "Remote desktop user Id" - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Remote desktop user password. Must be a strong password" - } - }, - "virtualNetworkName": { - "type": "string", - "defaultValue": "VNet" - }, - "addressPrefix": { - "type": "string", - "defaultValue": "10.0.0.0/16" - }, - "dnsName": { - "type": "string" - }, - "nicName": { - "type": "string", - "defaultValue": "NIC" - }, - "lbName": { - "type": "string", - "defaultValue": "LoadBalancer" - }, - "lbIPName": { - "type": "string", - "defaultValue": "PublicIP-LB-FE" - }, - "overProvision": { - "type": "string", - "defaultValue": "false" - }, - "vmImagePublisher": { - "type": "string", - "defaultValue": "MicrosoftWindowsServer" - }, - "vmImageOffer": { - "type": "string", - "defaultValue": "WindowsServer" - }, - "vmImageSku": { - "type": "string", - "defaultValue": "2012-R2-Datacenter" - }, - "vmImageVersion": { - "type": "string", - "defaultValue": "latest" - }, - "storageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the VM image storage account" - } - }, - "supportLogStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the support log storage account" - } - }, - "supportLogStorageAccountName": { - "type": "string", - "defaultValue": "[toLower( concat('sflogs', uniqueString(resourceGroup().id),'2'))]", - "metadata": { - "description": "Name for the storage account that contains support logs from the cluster" - } - }, - "applicationDiagnosticsStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the application diagnostics storage account" - } - }, - "applicationDiagnosticsStorageAccountName": { - "type": "string", - "defaultValue": "[toLower(concat(uniqueString(resourceGroup().id), '3' ))]", - "metadata": { - "description": "Name for the storage account that contains application diagnostics data from the cluster" - } - }, - "nt0InstanceCount": { - "type": "int", - "defaultValue": 1, - "metadata": { - "description": "Instance count for node type" - } - }, - "vmNodeType0Name": { - "type": "string", - "defaultValue": "primary", - "maxLength": 9 - }, - "vmNodeType0Size": { - "type": "string", - "defaultValue": "Standard_D2_v2" - } - }, - "variables": { - "vmssApiVersion": "2017-03-30", - "lbApiVersion": "2015-06-15", - "vNetApiVersion": "2015-06-15", - "storageApiVersion": "2016-01-01", - "publicIPApiVersion": "2015-06-15", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", - "subnet0Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet0Name'))]", - "lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', variables('clusterName'),'-',parameters('vmNodeType0Name')))]", - "lbIPConfig0": "[concat(variables('lbID0'),'/frontendIPConfigurations/LoadBalancerIPConfig')]", - "lbPoolID0": "[concat(variables('lbID0'),'/backendAddressPools/LoadBalancerBEAddressPool')]", - "lbProbeID0": "[concat(variables('lbID0'),'/probes/FabricGatewayProbe')]", - "lbHttpProbeID0": "[concat(variables('lbID0'),'/probes/FabricHttpGatewayProbe')]", - "lbNatPoolID0": "[concat(variables('lbID0'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]", - "vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]", - "supportLogStorageAccountName": "[take(concat(parameters('prefix'), parameters('supportLogStorageAccountName')),22)]", - "applicationDiagnosticsStorageAccountName" : "[take(concat(parameters('prefix'), parameters('applicationDiagnosticsStorageAccountName')),22)]", - "clusterName": "[concat(parameters('prefix'), parameters('clusterName'))]", - "uniqueStringArray0": [ - "[concat(variables('vmStorageAccountName0'), '0')]", - "[concat(variables('vmStorageAccountName0'), '1')]", - "[concat(variables('vmStorageAccountName0'), '2')]", - "[concat(variables('vmStorageAccountName0'), '3')]", - "[concat(variables('vmStorageAccountName0'), '4')]" - ] - }, - "resources": [ - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('supportLogStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('supportLogStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('applicationDiagnosticsStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('applicationDiagnosticsStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "[variables('vNetApiVersion')]", - "type": "Microsoft.Network/virtualNetworks", - "name": "[parameters('virtualNetworkName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[parameters('subnet0Name')]", - "properties": { - "addressPrefix": "[parameters('subnet0Prefix')]" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "[variables('publicIPApiVersion')]", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[concat(parameters('lbIPName'),'-','0')]", - "location": "[parameters('computeLocation')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[parameters('dnsName')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "[variables('lbApiVersion')]", - "type": "Microsoft.Network/loadBalancers", - "name": "[concat('LB','-', variables('clusterName'),'-',parameters('vmNodeType0Name'))]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]" - ], - "properties": { - "frontendIPConfigurations": [ - { - "name": "LoadBalancerIPConfig", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "LoadBalancerBEAddressPool", - "properties": {} - } - ], - "loadBalancingRules": [ - { - "name": "LBRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "LBHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "ReverseProxyHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0reverseProxyEndpointPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0reverseProxyEndpointPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebMVCHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webMvcHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webMvcHttpPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebSPAHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webSpaHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webSpaHttpPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebStatusHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webStatusHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webStatusHttpPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "IdSrvHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('IdSrvHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('IdSrvHttpRule')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "BasketApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('BasketApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('BasketApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "CatalogApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('CatalogApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('CatalogApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "OrderingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('OrderingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('OrderingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "MarketingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('MarketingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('MarketingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "LocationsApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('LocationsApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('LocationsApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - } - ], - "probes": [ - { - "name": "FabricGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricTcpGatewayPort')]", - "protocol": "tcp" - } - }, - { - "name": "FabricHttpGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricHttpGatewayPort')]", - "protocol": "tcp" - } - } - ], - "inboundNatPools": [ - { - "name": "LoadBalancerBEAddressNatPool", - "properties": { - "backendPort": "3389", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPortRangeEnd": "4500", - "frontendPortRangeStart": "3389", - "protocol": "tcp" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('uniqueStringArray0')[copyIndex()]]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "copy": { - "name": "storageLoop", - "count": 5 - }, - "kind": "Storage", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "[variables('vmssApiVersion')]", - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[parameters('vmNodeType0Name')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4])]", - "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', variables('clusterName'),'-',parameters('vmNodeType0Name')))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]" - ], - "properties": { - "overprovision": "[parameters('overProvision')]", - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "extensionProfile": { - "extensions": [ - { - "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricNode')]", - "properties": { - "type": "ServiceFabricNode", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]", - "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]" - }, - "publisher": "Microsoft.Azure.ServiceFabric", - "settings": { - "clusterEndpoint": "[reference(variables('clusterName')).clusterEndpoint]", - "nodeTypeRef": "[parameters('vmNodeType0Name')]", - "dataPath": "D:\\\\SvcFab", - "durabilityLevel": "Bronze", - "enableParallelJobs": true, - "nicPrefixOverride": "[parameters('subnet0Prefix')]" - }, - "typeHandlerVersion": "1.0" - } - }, - { - "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]", - "properties": { - "type": "IaaSDiagnostics", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]", - "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", - "storageAccountEndPoint": "https://core.windows.net/" - }, - "publisher": "Microsoft.Azure.Diagnostics", - "settings": { - "WadCfg": { - "DiagnosticMonitorConfiguration": { - "overallQuotaInMB": "50000", - "EtwProviders": { - "EtwEventSourceProviderConfiguration": [ - { - "provider": "Microsoft-ServiceFabric-Actors", - "scheduledTransferKeywordFilter": "1", - "scheduledTransferPeriod": "PT5M", - "DefaultEvents": { - "eventDestination": "ServiceFabricReliableActorEventTable" - } - }, - { - "provider": "Microsoft-ServiceFabric-Services", - "scheduledTransferPeriod": "PT5M", - "DefaultEvents": { - "eventDestination": "ServiceFabricReliableServiceEventTable" - } - } - ], - "EtwManifestProviderConfiguration": [ - { - "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8", - "scheduledTransferLogLevelFilter": "Information", - "scheduledTransferKeywordFilter": "4611686018427387904", - "scheduledTransferPeriod": "PT5M", - "DefaultEvents": { - "eventDestination": "ServiceFabricSystemEventTable" - } - } - ] - } - } - }, - "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]" - }, - "typeHandlerVersion": "1.5" - } - } - ] - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[concat(parameters('nicName'), '-0')]", - "properties": { - "ipConfigurations": [ - { - "name": "[concat(parameters('nicName'),'-',0)]", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[variables('lbPoolID0')]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[variables('lbNatPoolID0')]" - } - ], - "subnet": { - "id": "[variables('subnet0Ref')]" - } - } - } - ], - "primary": true - } - } - ] - }, - "osProfile": { - "adminPassword": "[parameters('adminPassword')]", - "adminUsername": "[parameters('adminUsername')]", - "computernamePrefix": "[parameters('vmNodeType0Name')]" - }, - "storageProfile": { - "imageReference": { - "publisher": "[parameters('vmImagePublisher')]", - "offer": "[parameters('vmImageOffer')]", - "sku": "[parameters('vmImageSku')]", - "version": "[parameters('vmImageVersion')]" - }, - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage", - "vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]" - ], - "name": "vmssosdisk" - } - } - } - }, - "sku": { - "name": "[parameters('vmNodeType0Size')]", - "capacity": "[parameters('nt0InstanceCount')]", - "tier": "Standard" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - }, - { - "apiVersion": "2017-07-01-preview", - "type": "Microsoft.ServiceFabric/clusters", - "name": "[variables('clusterName')]", - "location": "[parameters('clusterLocation')]", - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]" - ], - "properties": { - "addonFeatures": [ - "DnsService" - ], - "clientCertificateCommonNames": [], - "clientCertificateThumbprints": [], - "clusterCodeVersion": "6.0.232.9494", - "clusterState": "Default", - "diagnosticsStorageAccountConfig": { - "blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]", - "protectedAccountKeyName": "StorageAccountKey1", - "queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]", - "storageAccountName": "[variables('supportLogStorageAccountName')]", - "tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]" - }, - "fabricSettings": [], - "managementEndpoint": "[concat('http://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]", - "nodeTypes": [ - { - "name": "[parameters('vmNodeType0Name')]", - "applicationPorts": { - "endPort": "[parameters('nt0applicationEndPort')]", - "startPort": "[parameters('nt0applicationStartPort')]" - }, - "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]", - "durabilityLevel": "Bronze", - "ephemeralPorts": { - "endPort": "[parameters('nt0ephemeralEndPort')]", - "startPort": "[parameters('nt0ephemeralStartPort')]" - }, - "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]", - "isPrimary": true, - "reverseProxyEndpointPort": "[parameters('nt0reverseProxyEndpointPort')]", - "vmInstanceCount": "[parameters('nt0InstanceCount')]" - } - ], - "provisioningState": "Default", - "reliabilityLevel": "None", - "upgradeMode": "Manual", - "vmImage": "Windows" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[variables('clusterName')]" - } - } - ], - "outputs": { - "clusterProperties": { - "value": "[reference(variables('clusterName'))]", - "type": "object" - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json deleted file mode 100644 index af7e1a6ee..000000000 --- a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploy.parameters.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "prefix": { - "value": "qa" - }, - "clusterName": { - "value": "-eshop-sfwin-cluster" - }, - "clusterLocation": { - "value": "westus" - }, - "computeLocation": { - "value": "westus" - }, - "adminUserName": { - "value": "testedu" - }, - "adminPassword": { - "value": "testedu1234!" - }, - "nicName": { - "value": "NIC-eshopsfwin" - }, - "publicIPAddressName": { - "value": "eshopsfwin-PubIP" - }, - "dnsName": { - "value": "testedu-eshop-sfwin-cluster" - }, - "virtualNetworkName": { - "value": "VNet-eshopsfwin" - }, - "lbName": { - "value": "LB-eshopsfwin" - }, - "lbIPName": { - "value": "LBIP-eshopsfwin" - }, - "applicationDiagnosticsStorageAccountName": { - "value": "sfdiageshopw" - }, - "supportLogStorageAccountName": { - "value": "sflogeshopw" - }, - "vmImageSku": { - "value": "2016-Datacenter-with-Containers" - }, - "nt0ephemeralStartPort": { - "value": 49152 - }, - "nt0ephemeralEndPort": { - "value": 65534 - }, - "nt0applicationStartPort": { - "value": 20000 - }, - "nt0applicationEndPort": { - "value": 30000 - }, - "nt0fabricTcpGatewayPort": { - "value": 19000 - }, - "nt0fabricHttpGatewayPort": { - "value": 19080 - }, - "nt0reverseProxyEndpointPort": { - "value": 19081 - }, - "webMvcHttpPort": { - "value": 5100 - }, - "webSpaHttpPort": { - "value": 5104 - }, - "webStatusHttpPort": { - "value": 5107 - }, - "IdSrvHttpRule": { - "value": 5105 - }, - "BasketApiHttpRule": { - "value": 5103 - }, - "CatalogApiHttpRule": { - "value": 5101 - }, - "OrderingApiHttpRule": { - "value": 5102 - }, - "MarketingApiHttpRule": { - "value": 5110 - }, - "LocationsApiHttpRule": { - "value": 5109 - } - } -} - diff --git a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json deleted file mode 100644 index 843f5c0d1..000000000 --- a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.json +++ /dev/null @@ -1,924 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterLocation": { - "type": "string", - "metadata": { - "description": "Location of the Cluster" - } - }, - "clusterName": { - "type": "string", - "defaultValue": "Cluster", - "metadata": { - "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" - } - }, - "nt0applicationStartPort": { - "type": "int", - "defaultValue": 20000 - }, - "nt0applicationEndPort": { - "type": "int", - "defaultValue": 30000 - }, - "nt0ephemeralStartPort": { - "type": "int", - "defaultValue": 49152 - }, - "nt0ephemeralEndPort": { - "type": "int", - "defaultValue": 65534 - }, - "nt0fabricTcpGatewayPort": { - "type": "int", - "defaultValue": 19000 - }, - "nt0fabricHttpGatewayPort": { - "type": "int", - "defaultValue": 19080 - }, - "nt0reverseProxyEndpointPort": { - "type": "int", - "defaultValue": 19081 - }, - "webMvcHttpPort": { - "type": "int", - "defaultValue": 5100 - }, - "webSpaHttpPort": { - "type": "int", - "defaultValue": 5104 - }, - "webStatusHttpPort": { - "type": "int", - "defaultValue": 5107 - }, - "IdSrvHttpRule": { - "type": "int", - "defaultValue": 5105 - }, - "BasketApiHttpRule": { - "type": "int", - "defaultValue": 5103 - }, - "CatalogApiHttpRule": { - "type": "int", - "defaultValue": 5101 - }, - "OrderingApiHttpRule": { - "type": "int", - "defaultValue": 5102 - }, - "MarketingApiHttpRule": { - "type": "int", - "defaultValue": 5110 - }, - "LocationsApiHttpRule": { - "type": "int", - "defaultValue": 5109 - }, - "subnet0Name": { - "type": "string", - "defaultValue": "Subnet-0" - }, - "subnet0Prefix": { - "type": "string", - "defaultValue": "10.0.0.0/24" - }, - "computeLocation": { - "type": "string" - }, - "publicIPAddressName": { - "type": "string", - "defaultValue": "PublicIP-VM" - }, - "publicIPAddressType": { - "type": "string", - "allowedValues": [ - "Dynamic" - ], - "defaultValue": "Dynamic" - }, - "vmStorageAccountContainerName": { - "type": "string", - "defaultValue": "vhds" - }, - "adminUserName": { - "type": "string", - "defaultValue": "testadm", - "metadata": { - "description": "Remote desktop user Id" - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Remote desktop user password. Must be a strong password" - } - }, - "virtualNetworkName": { - "type": "string", - "defaultValue": "VNet" - }, - "addressPrefix": { - "type": "string", - "defaultValue": "10.0.0.0/16" - }, - "dnsName": { - "type": "string" - }, - "nicName": { - "type": "string", - "defaultValue": "NIC" - }, - "lbName": { - "type": "string", - "defaultValue": "LoadBalancer" - }, - "lbIPName": { - "type": "string", - "defaultValue": "PublicIP-LB-FE" - }, - "overProvision": { - "type": "string", - "defaultValue": "false" - }, - "vmImagePublisher": { - "type": "string", - "defaultValue": "MicrosoftWindowsServer" - }, - "vmImageOffer": { - "type": "string", - "defaultValue": "WindowsServer" - }, - "vmImageSku": { - "type": "string", - "defaultValue": "2012-R2-Datacenter" - }, - "vmImageVersion": { - "type": "string", - "defaultValue": "latest" - }, - "clusterProtectionLevel": { - "type": "string", - "allowedValues": [ - "None", - "Sign", - "EncryptAndSign" - ], - "defaultValue": "EncryptAndSign", - "metadata": { - "description": "Protection level.Three values are allowed - EncryptAndSign, Sign, None. It is best to keep the default of EncryptAndSign, unless you have a need not to" - } - }, - "certificateStoreValue": { - "type": "string", - "allowedValues": [ - "My" - ], - "defaultValue": "My", - "metadata": { - "description": "The store name where the cert will be deployed in the virtual machine" - } - }, - "certificateThumbprint": { - "type": "string", - "metadata": { - "description": "Certificate Thumbprint" - } - }, - "sourceVaultValue": { - "type": "string", - "metadata": { - "description": "Resource Id of the key vault, is should be in the format of /subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/" - } - }, - "certificateUrlValue": { - "type": "string", - "metadata": { - "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://.vault.azure.net:443/secrets/" - } - }, - "storageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the VM image storage account" - } - }, - "supportLogStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the support log storage account" - } - }, - "supportLogStorageAccountName": { - "type": "string", - "defaultValue": "[toLower( concat('sflogs', uniqueString(resourceGroup().id),'2'))]", - "metadata": { - "description": "Name for the storage account that contains support logs from the cluster" - } - }, - "applicationDiagnosticsStorageAccountType": { - "type": "string", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS" - ], - "defaultValue": "Standard_LRS", - "metadata": { - "description": "Replication option for the application diagnostics storage account" - } - }, - "applicationDiagnosticsStorageAccountName": { - "type": "string", - "defaultValue": "[toLower(concat(uniqueString(resourceGroup().id), '3' ))]", - "metadata": { - "description": "Name for the storage account that contains application diagnostics data from the cluster" - } - }, - "nt0InstanceCount": { - "type": "int", - "defaultValue": 5, - "metadata": { - "description": "Instance count for node type" - } - }, - "vmNodeType0Name": { - "type": "string", - "defaultValue": "primary", - "maxLength": 9 - }, - "vmNodeType0Size": { - "type": "string", - "defaultValue": "Standard_D2_v2" - } - }, - "variables": { - "vmssApiVersion": "2017-03-30", - "lbApiVersion": "2015-06-15", - "vNetApiVersion": "2015-06-15", - "storageApiVersion": "2016-01-01", - "publicIPApiVersion": "2015-06-15", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", - "subnet0Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet0Name'))]", - "lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]", - "lbIPConfig0": "[concat(variables('lbID0'),'/frontendIPConfigurations/LoadBalancerIPConfig')]", - "lbPoolID0": "[concat(variables('lbID0'),'/backendAddressPools/LoadBalancerBEAddressPool')]", - "lbProbeID0": "[concat(variables('lbID0'),'/probes/FabricGatewayProbe')]", - "lbHttpProbeID0": "[concat(variables('lbID0'),'/probes/FabricHttpGatewayProbe')]", - "lbNatPoolID0": "[concat(variables('lbID0'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]", - "vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]", - "uniqueStringArray0": [ - "[concat(variables('vmStorageAccountName0'), '0')]", - "[concat(variables('vmStorageAccountName0'), '1')]", - "[concat(variables('vmStorageAccountName0'), '2')]", - "[concat(variables('vmStorageAccountName0'), '3')]", - "[concat(variables('vmStorageAccountName0'), '4')]" - ] - }, - "resources": [ - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[parameters('supportLogStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('supportLogStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[parameters('applicationDiagnosticsStorageAccountName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "kind": "Storage", - "sku": { - "name": "[parameters('applicationDiagnosticsStorageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('vNetApiVersion')]", - "type": "Microsoft.Network/virtualNetworks", - "name": "[parameters('virtualNetworkName')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[parameters('subnet0Name')]", - "properties": { - "addressPrefix": "[parameters('subnet0Prefix')]" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('publicIPApiVersion')]", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[concat(parameters('lbIPName'),'-','0')]", - "location": "[parameters('computeLocation')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[parameters('dnsName')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('lbApiVersion')]", - "type": "Microsoft.Network/loadBalancers", - "name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]" - ], - "properties": { - "frontendIPConfigurations": [ - { - "name": "LoadBalancerIPConfig", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "LoadBalancerBEAddressPool", - "properties": {} - } - ], - "loadBalancingRules": [ - { - "name": "LBRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricTcpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "LBHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0fabricHttpGatewayPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "ReverseProxyHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('nt0reverseProxyEndpointPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('nt0reverseProxyEndpointPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebMVCHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webMvcHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webMvcHttpPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebSPAHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webSpaHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webSpaHttpPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "WebStatusHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('webStatusHttpPort')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('webStatusHttpPort')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "IdSrvHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('IdSrvHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('IdSrvHttpRule')]", - "idleTimeoutInMinutes": "5", - "probe": { - "id": "[variables('lbHttpProbeID0')]" - }, - "protocol": "tcp" - } - }, - { - "name": "BasketApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('BasketApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('BasketApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "CatalogApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('CatalogApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('CatalogApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "OrderingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('OrderingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('OrderingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "MarketingApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('MarketingApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('MarketingApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - }, - { - "name": "LocationsApiHttpRule", - "properties": { - "backendAddressPool": { - "id": "[variables('lbPoolID0')]" - }, - "backendPort": "[parameters('LocationsApiHttpRule')]", - "enableFloatingIP": "false", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPort": "[parameters('LocationsApiHttpRule')]", - "idleTimeoutInMinutes": "5", - "protocol": "tcp" - } - } - ], - "probes": [ - { - "name": "FabricGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricTcpGatewayPort')]", - "protocol": "tcp" - } - }, - { - "name": "FabricHttpGatewayProbe", - "properties": { - "intervalInSeconds": 5, - "numberOfProbes": 2, - "port": "[parameters('nt0fabricHttpGatewayPort')]", - "protocol": "tcp" - } - } - ], - "inboundNatPools": [ - { - "name": "LoadBalancerBEAddressNatPool", - "properties": { - "backendPort": "3389", - "frontendIPConfiguration": { - "id": "[variables('lbIPConfig0')]" - }, - "frontendPortRangeEnd": "4500", - "frontendPortRangeStart": "3389", - "protocol": "tcp" - } - } - ] - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('uniqueStringArray0')[copyIndex()]]", - "location": "[parameters('computeLocation')]", - "dependsOn": [], - "properties": {}, - "copy": { - "name": "storageLoop", - "count": 5 - }, - "kind": "Storage", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "[variables('vmssApiVersion')]", - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[parameters('vmNodeType0Name')]", - "location": "[parameters('computeLocation')]", - "dependsOn": [ - "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3])]", - "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4])]", - "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('applicationDiagnosticsStorageAccountName'))]" - ], - "properties": { - "overprovision": "[parameters('overProvision')]", - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "extensionProfile": { - "extensions": [ - { - "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricNode')]", - "properties": { - "type": "ServiceFabricNode", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key1]", - "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key2]" - }, - "publisher": "Microsoft.Azure.ServiceFabric", - "settings": { - "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", - "nodeTypeRef": "[parameters('vmNodeType0Name')]", - "dataPath": "D:\\\\SvcFab", - "durabilityLevel": "Bronze", - "enableParallelJobs": true, - "nicPrefixOverride": "[parameters('subnet0Prefix')]", - "certificate": { - "thumbprint": "[parameters('certificateThumbprint')]", - "x509StoreName": "[parameters('certificateStoreValue')]" - } - }, - "typeHandlerVersion": "1.0" - } - }, - { - "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]", - "properties": { - "type": "IaaSDiagnostics", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]", - "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", - "storageAccountEndPoint": "https://core.windows.net/" - }, - "publisher": "Microsoft.Azure.Diagnostics", - "settings": { - "WadCfg": { - "DiagnosticMonitorConfiguration": { - "overallQuotaInMB": "50000", - "EtwProviders": { - "EtwEventSourceProviderConfiguration": [ - { - "provider": "Microsoft-ServiceFabric-Actors", - "scheduledTransferKeywordFilter": "1", - "scheduledTransferPeriod": "PT5M", - "DefaultEvents": { - "eventDestination": "ServiceFabricReliableActorEventTable" - } - }, - { - "provider": "Microsoft-ServiceFabric-Services", - "scheduledTransferPeriod": "PT5M", - "DefaultEvents": { - "eventDestination": "ServiceFabricReliableServiceEventTable" - } - } - ], - "EtwManifestProviderConfiguration": [ - { - "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8", - "scheduledTransferLogLevelFilter": "Information", - "scheduledTransferKeywordFilter": "4611686018427387904", - "scheduledTransferPeriod": "PT5M", - "DefaultEvents": { - "eventDestination": "ServiceFabricSystemEventTable" - } - } - ] - } - } - }, - "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]" - }, - "typeHandlerVersion": "1.5" - } - } - ] - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[concat(parameters('nicName'), '-0')]", - "properties": { - "ipConfigurations": [ - { - "name": "[concat(parameters('nicName'),'-',0)]", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[variables('lbPoolID0')]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[variables('lbNatPoolID0')]" - } - ], - "subnet": { - "id": "[variables('subnet0Ref')]" - } - } - } - ], - "primary": true - } - } - ] - }, - "osProfile": { - "adminPassword": "[parameters('adminPassword')]", - "adminUsername": "[parameters('adminUsername')]", - "computernamePrefix": "[parameters('vmNodeType0Name')]", - "secrets": [ - { - "sourceVault": { - "id": "[parameters('sourceVaultValue')]" - }, - "vaultCertificates": [ - { - "certificateStore": "[parameters('certificateStoreValue')]", - "certificateUrl": "[parameters('certificateUrlValue')]" - } - ] - } - ] - }, - "storageProfile": { - "imageReference": { - "publisher": "[parameters('vmImagePublisher')]", - "offer": "[parameters('vmImageOffer')]", - "sku": "[parameters('vmImageSku')]", - "version": "[parameters('vmImageVersion')]" - }, - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage", - "vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]" - ], - "name": "vmssosdisk" - } - } - } - }, - "sku": { - "name": "[parameters('vmNodeType0Size')]", - "capacity": "[parameters('nt0InstanceCount')]", - "tier": "Standard" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - }, - { - "apiVersion": "2017-07-01-preview", - "type": "Microsoft.ServiceFabric/clusters", - "name": "[parameters('clusterName')]", - "location": "[parameters('clusterLocation')]", - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]" - ], - "properties": { - "addonFeatures": [ - "DnsService" - ], - "certificate": { - "thumbprint": "[parameters('certificateThumbprint')]", - "x509StoreName": "[parameters('certificateStoreValue')]" - }, - "clientCertificateCommonNames": [], - "clientCertificateThumbprints": [], - "clusterCodeVersion": "5.7.207.9494", - "clusterState": "Default", - "diagnosticsStorageAccountConfig": { - "blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]", - "protectedAccountKeyName": "StorageAccountKey1", - "queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]", - "storageAccountName": "[parameters('supportLogStorageAccountName')]", - "tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]" - }, - "fabricSettings": [ - { - "parameters": [ - { - "name": "ClusterProtectionLevel", - "value": "[parameters('clusterProtectionLevel')]" - } - ], - "name": "Security" - } - ], - "managementEndpoint": "[concat('https://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]", - "nodeTypes": [ - { - "name": "[parameters('vmNodeType0Name')]", - "applicationPorts": { - "endPort": "[parameters('nt0applicationEndPort')]", - "startPort": "[parameters('nt0applicationStartPort')]" - }, - "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]", - "durabilityLevel": "Bronze", - "ephemeralPorts": { - "endPort": "[parameters('nt0ephemeralEndPort')]", - "startPort": "[parameters('nt0ephemeralStartPort')]" - }, - "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]", - "isPrimary": true, - "reverseProxyEndpointPort": "[parameters('nt0reverseProxyEndpointPort')]", - "vmInstanceCount": "[parameters('nt0InstanceCount')]" - } - ], - "provisioningState": "Default", - "reliabilityLevel": "Silver", - "upgradeMode": "Manual", - "vmImage": "Windows" - }, - "tags": { - "resourceType": "Service Fabric", - "clusterName": "[parameters('clusterName')]" - } - } - ], - "outputs": { - "clusterProperties": { - "value": "[reference(parameters('clusterName'))]", - "type": "object" - } - } -} \ No newline at end of file diff --git a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json b/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json deleted file mode 100644 index bbc8eb663..000000000 --- a/deploy/azure/az/servicefabric/WindowsContainers/servicefabricdeploysecured.parameters.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterName": { - "value": "pro-eshop-sfwin-cluster" - }, - "clusterLocation": { - "value": "westus" - }, - "computeLocation": { - "value": "westus" - }, - "adminUserName": { - "value": "eshop" - }, - "adminPassword": { - "value": "Your_complex_Pass@word1" - }, - "nicName": { - "value": "NIC-eshopsfwin" - }, - "publicIPAddressName": { - "value": "eshopsfwin-PubIP" - }, - "dnsName": { - "value": "pro-eshop-sfwin-cluster" - }, - "virtualNetworkName": { - "value": "VNet-eshopsfwin" - }, - "lbName": { - "value": "LB-eshopsfwin" - }, - "lbIPName": { - "value": "LBIP-eshopsfwin" - }, - "applicationDiagnosticsStorageAccountName": { - "value": "sfdgqaeshopsfwinsec" - }, - "supportLogStorageAccountName": { - "value": "sflogsqaeshopsfwinsec" - }, - "sourceVaultValue": { - "value": "your-value-check-keyvault-at-azure" - }, - "certificateUrlValue": { - "value": "your-value-check-keyvault-at-azure" - }, - "certificateThumbprint": { - "value": "your-value-check-keyvault-at-azure" - }, - "vmImageSku": { - "value": "2016-Datacenter-with-Containers" - }, - "nt0ephemeralStartPort": { - "value": 49152 - }, - "nt0ephemeralEndPort": { - "value": 65534 - }, - "nt0applicationStartPort": { - "value": 20000 - }, - "nt0applicationEndPort": { - "value": 30000 - }, - "nt0fabricTcpGatewayPort": { - "value": 19000 - }, - "nt0fabricHttpGatewayPort": { - "value": 19080 - }, - "nt0reverseProxyEndpointPort": { - "value": 19081 - }, - "webMvcHttpPort": { - "value": 5100 - }, - "webSpaHttpPort": { - "value": 5104 - }, - "webStatusHttpPort": { - "value": 5107 - }, - "IdSrvHttpRule": { - "value": 5105 - }, - "BasketApiHttpRule": { - "value": 5103 - }, - "CatalogApiHttpRule": { - "value": 5101 - }, - "OrderingApiHttpRule": { - "value": 5102 - }, - "MarketingApiHttpRule": { - "value": 5110 - }, - "LocationsApiHttpRule": { - "value": 5109 - } - } -} - diff --git a/deploy/azure/az/vms/docker-machine.md b/deploy/azure/az/vms/docker-machine.md deleted file mode 100644 index 71cbbd4a7..000000000 --- a/deploy/azure/az/vms/docker-machine.md +++ /dev/null @@ -1,48 +0,0 @@ -# Create a VM using docker-machine - -Ensure you are logged in the desired subscription Refer to [this article](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli) for more details. - -1. Use `az account show` to find your subscription id. -2. Use `docker-machine create --driver azure --azure-subscription-id --azure-resource-group --azure-ssh-user ` - -After use `docker-machine create` you'll need to authenticate in Azure (even thought if you are logged using `az`, because this is not an Azure CLI 2.0 command). This command will fully create the VM with all the needed settings to run Docker. - -**Note** Refer to this article with all the [parameters that docker-machine accepts when creating Azure VMs](https://docs.docker.com/machine/drivers/azure/#options) for finding more parameters. - -## Connecting your local environment with docker host running on the VM - -Using docker-machine you control the remote VM from your local development environment (you don't need to use ssh to login to remote VM). - -Connecting your local environment to a remote host is using by setting some environment variables, but the easiest way is to use again the docker-machine command. Just type `docker-machine env machine_name` (where machine_name is the name you gave when you created the VM). That command **do not change anything**, so do'nt do really nothing, but **outputs the environment variables you have to set**. This is the output of the command (running on a windows workstation): - -``` -SET DOCKER_TLS_VERIFY=1 -SET DOCKER_HOST=tcp://104.42.236.237:2376 -SET DOCKER_CERT_PATH=C:\Users\etoma\.docker\machine\machines\ufohost -SET DOCKER_MACHINE_NAME=ufohost -SET COMPOSE_CONVERT_WINDOWS_PATHS=true -REM Run this command to configure your shell: -REM @FOR /f "tokens=*" %i IN ('docker-machine env ufohost') DO @%i -``` - -You have to set all these environment variables, or (as the command suggest) just copy and paste the last line in your terminal. - -Once you did this, your local development machine is connected to VM running Docker on Azure: all docker and docker-compose commands will run in the VM instead of your local Docker machine! - - - - - - - - - - - - - - - - - - diff --git a/deploy/azure/az/vms/linux-vm/linuxvm.json b/deploy/azure/az/vms/linux-vm/linuxvm.json deleted file mode 100644 index 5b4778ebe..000000000 --- a/deploy/azure/az/vms/linux-vm/linuxvm.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "newStorageAccountName": { - "type": "string", - "metadata": { - "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." - } - }, - "adminUsername": { - "type": "string", - "metadata": { - "description": "Username for the Virtual Machine." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Password for the Virtual Machine." - } - }, - "dnsNameForPublicIP": { - "type": "string", - "metadata": { - "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." - } - }, - "ubuntuOSVersion": { - "type": "string", - "defaultValue": "14.04.4-LTS", - "metadata": { - "description": "The Ubuntu version for deploying the Docker containers. This will pick a fully patched image of this given Ubuntu version. Allowed values: 14.04.4-LTS, 15.10, 16.04.0-LTS" - }, - "allowedValues": [ - "14.04.4-LTS", - "15.10", - "16.04.0-LTS" - ] - }, - "VMName": { - "type": "string", - "metadata": { - "description": "Name of VM in Azure" - } - } - }, - "variables": { - "newStorageAccountName": "[take(concat(parameters('newStorageAccountName'), uniqueString(resourceGroup().id)), 23)]", - "dnsNameForPublicIP": "[concat(parameters('dnsNameForPublicIP'), uniqueString(resourceGroup().id))]", - "imagePublisher": "Canonical", - "imageOffer": "UbuntuServer", - "OSDiskName": "osdiskfordockersimple", - "nicName": "myVMNicD", - "extensionName": "DockerExtension", - "addressPrefix": "10.0.0.0/16", - "subnetName": "Subnet", - "subnetPrefix": "10.0.0.0/24", - "storageAccountType": "Standard_LRS", - "publicIPAddressName": "myPublicIPD", - "publicIPAddressType": "Dynamic", - "vmStorageAccountContainerName": "vhds", - "vmName": "[parameters('VMName')]", - "vmSize": "Standard_F1", - "virtualNetworkName": "MyVNETD", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]" - }, - "resources": [ - { - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('newStorageAccountName')]", - "apiVersion": "2015-05-01-preview", - "location": "[resourceGroup().location]", - "properties": { - "accountType": "[variables('storageAccountType')]" - } - }, - { - "apiVersion": "2015-05-01-preview", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('publicIPAddressName')]", - "location": "[resourceGroup().location]", - "properties": { - "publicIPAllocationMethod": "[variables('publicIPAddressType')]", - "dnsSettings": { - "domainNameLabel": "[variables('dnsNameForPublicIP')]" - } - } - }, - { - "apiVersion": "2015-05-01-preview", - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[resourceGroup().location]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetName')]", - "properties": { - "addressPrefix": "[variables('subnetPrefix')]" - } - } - ] - } - }, - { - "apiVersion": "2015-05-01-preview", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicName')]", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" - }, - "subnet": { - "id": "[variables('subnetRef')]" - } - } - } - ] - } - }, - { - "apiVersion": "2015-05-01-preview", - "type": "Microsoft.Compute/virtualMachines", - "name": "[variables('vmName')]", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", - "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" - ], - "properties": { - "hardwareProfile": { - "vmSize": "[variables('vmSize')]" - }, - "osProfile": { - "computerName": "[variables('vmName')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]" - }, - "storageProfile": { - "imageReference": { - "publisher": "[variables('imagePublisher')]", - "offer": "[variables('imageOffer')]", - "sku": "[parameters('ubuntuOSVersion')]", - "version": "latest" - }, - "osDisk": { - "name": "osdisk1", - "vhd": { - "uri": "[concat('http://',variables('newStorageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd')]" - }, - "caching": "ReadWrite", - "createOption": "FromImage" - } - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" - } - ] - } - } - }, - { - "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('vmName'),'/', variables('extensionName'))]", - "apiVersion": "2015-05-01-preview", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" - ], - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "DockerExtension", - "typeHandlerVersion": "1.0", - "autoUpgradeMinorVersion": true, - "settings": { } - } - } - ] -} - diff --git a/deploy/azure/az/vms/linux-vm/linuxvm.parameters.json b/deploy/azure/az/vms/linux-vm/linuxvm.parameters.json deleted file mode 100644 index d34dfd1d9..000000000 --- a/deploy/azure/az/vms/linux-vm/linuxvm.parameters.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "newStorageAccountName": { "value": "eshopsrvmvstorage" }, - "adminUsername": { "value": "eshop" }, - "adminPassword": { "value": "Pass@word" }, - "dnsNameForPublicIP": { "value": "eshop-srv" }, - "VMName": {"value": "MyDockerVM2"} -} diff --git a/deploy/azure/az/vms/plain-vm.md b/deploy/azure/az/vms/plain-vm.md deleted file mode 100644 index 4e06ed0d3..000000000 --- a/deploy/azure/az/vms/plain-vm.md +++ /dev/null @@ -1,77 +0,0 @@ -# Deploy a VM to run the services - -Follow these instructions to deploy a Linux-based VM with the Docker Host installed, or a VM with Windows Server 2016 plus -windows containers and Docker Daemon. - -**Note**: Use this option, only if you want to provide an environment using images pulled from DockerHub (for example, to create a test environment). If you want to -be able to deploy images built by yourself (but not pushed to DockerHub) follow the [instructions about using docker-machine](./docker-machine.md). - -You can use this machine to install the microservices and having a "development" environment (useful to develop and test the client apps). - -Please note that this deployment is not a production deployment. In a production-based scenario, you should deploy all containers in ACS. - -## Create the VM - -Ensure you are logged in the desired subscription (use `az login` and `az account set` if needed. Refer to [this article](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli) for more details. - -Go to `linux-vm` or `win-vm` folder (based on if you want a Linux or Windows VM). Then: - -1. Edit the file `linuxvm.parameters.json` or `windowsvm.parameters.json` (based on what VM do you want to create) with your desired values -2. Run the [create-resources script](../readme.md) to deploy the desired template (`linux-vm/linuxvm.json` or `win-vm/windowsvm.json`). - -I. e. if you are in Windows and want to deploy a linux based VM, in a new resourcegroup located in westus, go to `deploy\az` folder and type: - -``` -create-resources.cmd vms\linux-vm\linuxvm newResourceGroup -c westus -``` - -**Note:** To avoid errors, ARM template used generates unique names for: - -1. VM used storage -2. Public DNS - -Those public names are based on the parameters set in the parameters file. - -### The parameters file (linuxvm.parameters.json or winsowsvm.parameters.json) - -Both files are identical and contains the minimum set of parameters needed by the ARM template to deploy the VM. ARM template accepts some other parameters (set with default values). Look the template for more info. - -The parameters defined are: - -1. `newStorageAccountName`: Name of the storage created for the VM. To ensure uniqueness a unique suffix will be added to this value. -2. `adminUsername`: Admin login -3. `adminPassword`: Admin password -4. `dnsNameForPublicIP`: DNS of the VM. To ensure uniqueness a unique suffix will be added to this value. -5. `VMName`: Name of the VM inside Azure - -## Finding the IP and DNS of the VM - -To find the IP and FQDN of the VM you can type `az vm list --resource-group --output table --show-details` (where resourcegroup is the -name of the resourcegroup where you created the VM). This command will generate output like: - -``` -Name ResourceGroup PowerState PublicIps Fqdns Location ----------- --------------- ------------ ------------- ------------------------------------------------ ---------- -MyDockerVM MyResourceGroup VM running xx.xx.xxx.xxx eshop-srvxxxxxxxxxxxxx.westus.cloudapp.azure.com westus -``` - -You can use this information to connect your new VM. - -## Deploy services in the VM - -We are providing public images of the services in DockerHub (https://hub.docker.com/u/eshop/). To use these images, just create a folder in the VM and copy -following files to it (those files are in the root of the repo): - -1. `docker-compose.nobuild.yml` -2. `docker-compose.prod.yml` - -**Note:** The `docker-compose.nobuild.yml` is just a version of the `docker-compose.yml` without the `build` section. Is neede due [docker-compose bug](https://github.com/docker/compose/issues/2945). - -Then log into the VM and run the command `docker-compose -f docker-compose.nobuild.yml -f docker-compose.prod.yml up --no-build -d` to start all the microservices. - - - - - - - diff --git a/deploy/azure/az/vms/readme.md b/deploy/azure/az/vms/readme.md deleted file mode 100644 index 25085f75c..000000000 --- a/deploy/azure/az/vms/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -## Create VM with Docker installed - -There are two options for creating VM machines with Docker installed: - -1. [Deploying a Linux VM to run single-server development environment using docker-machine (**Recommended for development environments**)](./docker-machine.md) -2. [Deploying a Linux VM or Windows Server 2016 to run a single-server development environment using ARM template (**Recommended for creating testing environments**)](./plain-vm.md) - -If you want to create a VM for deploying images you build locally, then use the first option. - -If you want to create a VM to run images deployed to DockerHub (to provide some test environment) then use the second option. \ No newline at end of file diff --git a/deploy/azure/az/vms/win-vm/windowsvm.json b/deploy/azure/az/vms/win-vm/windowsvm.json deleted file mode 100644 index 78bebdfef..000000000 --- a/deploy/azure/az/vms/win-vm/windowsvm.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - - "VMName": { - "type": "string", - "metadata": { - "description": "This name will also be used to prefix the network security group, storage, virtual network, network card, subnet and public IP address name." - } - }, - - "adminUsername": { - "type": "string", - "metadata": { - "description": "Username for the Virtual Machine." - } - }, - - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Password for the Virtual Machine." - } - }, - - "dnsNameForPublicIP": { - "type": "string", - "metadata": { - "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." - } - }, - - "newStorageAccountName": { - "type": "string", - "metadata": { - "description": "Storage name for the Virtual Machine." - } - }, - "vmSize": { - "type": "string", - "defaultValue": "Standard_D1", - "metadata": { - "description": "VM Size" - } - } - }, - - "variables": { - "newStorageAccountName": "[take(concat(parameters('newStorageAccountName'), uniqueString(resourceGroup().id)), 23)]", - "dnsNameForPublicIP": "[concat(parameters('dnsNameForPublicIP'), uniqueString(resourceGroup().id))]", - "windowsOSVersion": "2016-Datacenter", - "imagePublisher": "MicrosoftWindowsServer", - "imageOffer": "WindowsServer", - "OSDiskName": "[concat(parameters('VMName'),'_osdisk')]", - "nicName": "[concat(parameters('VMName'),'_nic')]", - "addressPrefix": "10.0.0.0/16", - "subnetName": "[concat(parameters('VMName'),'_subnet')]", - "subnetPrefix": "10.0.0.0/24", - "networkSecurityGroupName": "[concat(parameters('VMName'),'_nsg')]", - "storageAccountType": "Standard_LRS", - "publicIPAddressName": "[concat(parameters('VMName'),'_pubip')]", - "publicIPAddressType": "Dynamic", - "vmStorageAccountContainerName": "vhds", - "apiVersion": "2015-05-01-preview", - "virtualNetworkName": "[concat(parameters('VMName'),'_vnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]" - }, - "resources": [ - { - "type": "Microsoft.Network/networkSecurityGroups", - "name": "[variables('networkSecurityGroupName')]", - "apiVersion": "[variables('apiVersion')]", - "location": "[resourceGroup().location]", - "properties": { - "securityRules": [ - { - "name": "HTTP", - "properties": { - "description": "HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "*", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 100, - "direction": "Inbound" - } - }, - - { - "name": "RDP", - "properties": { - "description": "RDP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "3389", - "sourceAddressPrefix": "*", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 200, - "direction": "Inbound" - } - }, - - { - "name": "Docker", - "properties": { - "description": "Docker", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "2375", - "sourceAddressPrefix": "*", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 300, - "direction": "Inbound" - } - } - - ] - } - }, - - { - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('newStorageAccountName')]", - "apiVersion": "[variables('apiVersion')]", - "location": "[resourceGroup().location]", - "tags": { - "displayName": "StorageAccount" - }, - "properties": { - "accountType": "[variables('storageAccountType')]" - } - }, - - { - "apiVersion": "[variables('apiVersion')]", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('publicIPAddressName')]", - "location": "[resourceGroup().location]", - "tags": { - "displayName": "PublicIPAddress" - }, - "properties": { - "publicIPAllocationMethod": "[variables('publicIPAddressType')]", - "dnsSettings": { - "domainNameLabel": "[tolower(variables('dnsNameForPublicIP'))]" - } - } - }, - - { - "apiVersion": "[variables('apiVersion')]", - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('networkSecurityGroupName'))]" - ], - "tags": { - "displayName": "VirtualNetwork" - }, - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetName')]", - "properties": { - "addressPrefix": "[variables('subnetPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" - } - } - } - ] - } - }, - - { - "apiVersion": "[variables('apiVersion')]", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicName')]", - "location": "[resourceGroup().location]", - "tags": { - "displayName": "NetworkInterface" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" - }, - "subnet": { - "id": "[variables('subnetRef')]" - } - } - } - ] - } - }, - - { - "apiVersion": "[variables('apiVersion')]", - "type": "Microsoft.Compute/virtualMachines", - "name": "[parameters('VMName')]", - "location": "[resourceGroup().location]", - "tags": { - "displayName": "VirtualMachine" - }, - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", - "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" - ], - "properties": { - "hardwareProfile": { - "vmSize": "[parameters('vmSize')]" - }, - "osProfile": { - "computername": "[parameters('VMName')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]" - }, - "storageProfile": { - "imageReference": { - "publisher": "[variables('imagePublisher')]", - "offer": "[variables('imageOffer')]", - "sku": "[variables('windowsOSVersion')]", - "version": "latest" - }, - "osDisk": { - "name": "osdisk", - "vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName')), variables('apiVersion')).primaryEndpoints.blob, variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd')]" - }, - "caching": "ReadWrite", - "createOption": "FromImage" - } - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" - } - ] - } - }, - "resources": [ - { - "name": "containerConfiguration", - "type": "extensions", - "location": "[resourceGroup().location]", - "apiVersion": "2015-06-15", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]" - ], - "tags": { - "displayName": "containerConfiguration" - }, - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.2", - "autoUpgradeMinorVersion": true, - "settings": { - "fileUris": [ - "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/windows-server-containers-preview/azure-containers.ps1" - ], - "commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File azure-containers.ps1 -adminuser ',parameters('adminUsername'))]" - } - } - } - ] - } - ] -} \ No newline at end of file diff --git a/deploy/azure/az/vms/win-vm/windowsvm.parameters.json b/deploy/azure/az/vms/win-vm/windowsvm.parameters.json deleted file mode 100644 index 7a2773a54..000000000 --- a/deploy/azure/az/vms/win-vm/windowsvm.parameters.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "newStorageAccountName": { "value": "eshopsrvmvstoragewin" }, - "adminUsername": { "value": "eshop" }, - "adminPassword": { "value": "Pass@word" }, - "dnsNameForPublicIP": { "value": "eshop-srv-win" }, - "VMName": {"value": "eshop-srv-win"} -} diff --git a/deploy/k8s/README.CICD.k8s.md b/deploy/k8s/README.CICD.k8s.md deleted file mode 100644 index 40dbb8739..000000000 --- a/deploy/k8s/README.CICD.k8s.md +++ /dev/null @@ -1,66 +0,0 @@ -# Kubernetes CI/CD VSTS -For k8s CI/CD pipeline delivery a series of tasks must be created in VSTS to deploy k8s in Azure - -## Prerequisites -* A Kubernetes cluster. Follow Azure Container Service's [walkthrough](https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough) to create one. -* A private Docker registry. Follow Azure Container Registry's [guide](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal) to create one. -* Optionally, previous steps can be skipped if you run gen-k8s-env.ps1 (or gen-k8s-env-aks.ps1 if you would like to use AKS instead of ACS) script to automatically create the azure environment needed for kubernetes deployment. Azure cli 2.0 must be previously installed [installation guide](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli). For example: - ->``` ->./gen-k8s-env -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -orchestratorName k8s-cluster -dnsName k8s-dns ->``` -or using AKS instead of ACS ->``` ->./gen-k8s-env-aks -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -dnsName k8s-dns -serviceName k8s-cluster -createAcr true -nodeCount 3 -nodeVMSize Standard_D2_v2 ->``` -* An `Azure Blob storage`. It is needed for storing the kubernetes config file used by the hosted agent to access to Kubernetes cluster. Example: - - - -* Upload the `kubernetes config file` to the blob storage previously created. Execute the following command which will download the config file into the directory `c:\Users\\.kube\` and then, upload it to your blob storage: - ->``` ->https://eshopk8s.blob.core.windows.net/k8s-config/config ->``` - -## Create the VSTS tasks -1. Create a `Download File` task to download the kubernetes binary `kubectl` to the hosted agent. For example: - ->``` ->https://storage.googleapis.com/kubernetes-release/release/v1.8.5/bin/windows/386/kubectl.exe ->``` - - - -2. Create a Download File task to download the kubernetes config file to the hosted agent. For example: - ->``` ->https://eshopk8s.blob.core.windows.net/k8s-config/config ->``` - - -3. Create a powershell task to execute the k8s deployment script. For example: - -* Deployment script path - ->``` ->$(System.DefaultWorkingDirectory)/All Microservices/docker-compose/deploy.ps1 ->``` - -* Deployment script path arguments. Use value: - ->``` ->-deployCI $true -execPath '$(System.DefaultWorkingDirectory)/' -kubeconfigPath '$(System.DefaultWorkingDirectory)/' -deployInfrastructure $true -imageTag dev -configFile '$(System.DefaultWorkingDirectory)/$(Build.DefinitionName)/docker-compose/conf_local.yml' ->``` - - -- deployCI: Must be set to `$true`. This avoids create images (always are pulled from registry) and compile bits. -- deployInfrastructure: Can be set to `$false` if don't want to deploy infrastructure containers (like Redis, rabbit, SQL,...). -- imageTag: Image tag to pull from k8s. -- configFile: Configuration file (refer to [README.k8s.md](./README.k8s.md) for more info). This file is part of the VSTS build output. -- execPath: path where the k8s binary is stored -- kubeconfigPath: path where the k8s config file is stored - - You can use additional parameters (i.e. pass registry and user/password to use custom registry instead of DockerHub. Plase, refer to [README.k8s.md](./README.k8s.md) for more info. - - diff --git a/deploy/k8s/README.k8s.md b/deploy/k8s/README.k8s.md deleted file mode 100644 index 84d9a72f0..000000000 --- a/deploy/k8s/README.k8s.md +++ /dev/null @@ -1,98 +0,0 @@ -# eShopOnContainers on Kubernetes -The k8s directory contains Kubernetes configuration for the eShopOnContainers app and a PowerShell script to deploy it to a cluster. Each eShopOnContainers microservice has a deployment configuration in `deployments.yaml`, and is exposed to the cluster by a service in `services.yaml`. The microservices are exposed externally on individual routes (`/basket-api`, `/webmvc`, etc.) by an nginx reverse proxy specified in `frontend.yaml` and `nginx.conf`. - -## Prerequisites -* A Kubernetes cluster. Follow Azure Container Service's [walkthrough](https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough) to create one. -* A private Docker registry. Follow Azure Container Registry's [guide](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal) to create one. -* Optionally, previous steps can be skipped if you run the **gen-k8s-env-aks.ps1** script to create an AKS cluster environment or gen-k8s-env.ps1 script to create an ACS for Kuberentes cluster environment including the creation of additional Azure environment needed like an Azure Resource Manager and ACR registry. - -Azure cli 2.0 must be previously installed [installation guide](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli). For example: - - **Important**: Note the parameter "-createAcr true". If you are creating the K8s cluster but you want to re-use and existing ACR, say "-createAcr false". - - -For AKS: - ->``` ->./gen-k8s-env-aks -resourceGroupName YoureShopAksResgroup -location centralus -serviceName YoureShopAksCluster -dnsNamePrefix youreshopaks -registryName YoureShopAcrRegistry -createAcr true -nodeCount 3 -nodeVMSize Standard_D2_v2 ->``` - -For ACS: - ->``` ->./gen-k8s-env-aks -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -serviceName k8s-cluster -createAcr true -nodeCount 3 -nodeVMSize Standard_D2_v2 ->``` - -* A Docker development environment with `docker` and `docker-compose`. - * Visit [docker.com](https://docker.com) to download the tools and set up the environment. Docker's [installation guide](https://docs.docker.com/engine/getstarted/step_one/#step-3-verify-your-installation) covers verifying your Docker installation. -* The Kubernetes command line client, `kubectl`. - * This can be installed with the `az` tool as described in the Azure Container Service [walkthrough](https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough). `az` is also helpful for getting the credentials `kubectl` needs to access your cluster. For other installation options, and information about configuring `kubectl` yourself, see the [Kubernetes documentation](https://kubernetes.io/docs/tasks/kubectl/install/). - -## Deploy the application with the deployment script -1. Open a PowerShell command line at the `k8s` directory of your local eShopOnContainers repository. -1. Ensure `docker`, `docker-compose`, and `kubectl` are on the path, and configured for your Docker machine and Kubernetes cluster. -1. Run `deploy.ps1` with your registry information. The Docker username and password are provided by Azure Container Registry, and can be retrieved from the Azure portal. Optionally, ACR credentials can be obtained by running the following command: - ->``` ->az acr credential show -n eshopregistry ->``` - -Once the user and password are retrieved, run the following script for deployment. For example: - ->``` ->./deploy.ps1 -registry myregistry.azurecr.io -dockerUser User -dockerPassword SecretPassword -configFile file_with_config.yaml ->``` - -The parameter `configFile` is important (and mandatory) because it contains the configuration used for the Pods in Kubernetes. This allow deploying Pods that use your own resources in Azure or any other cloud provider. A configuration file `conf_local.yaml` is provided which configures Pods to use the infrastructure containers (that is sql server, rabbitmq, redis and mongodb must be deployed also in the k8s). - -The script will build the code and corresponding Docker images, push the later to your registry, and deploy the application to your cluster. You can watch the deployment unfold from the Kubernetes web interface: run `kubectl proxy` and open a browser to [http://localhost:8001/ui](http://localhost:8001/ui) - -### Pods configuration file - -When deploying to k8s the script needs the `configFile` parameter with the location of the YAML configuration file. This file contains the configuration of the pods. The file is a .YAML file. For reference another configuration file (conf_cloud.yaml) is provided but without valid values. - -If you deploy the infrastructure containers use `conf_local.yaml` as a value for `configFile` parameter. If you don't deploy the infrastructure containers use your own configuration file with the correct values. - -### Parameters of the deploy.ps1 script - -The script accepts following parameters: - -+ `registry`: Name of the Docker registry to use. If not passed DockerHub is assumed -+ `dockerUser`: Login to use for the Docker registry (if needed) -+ `dockerPassword`: Password to use for the Docker registry (if needed) -+ `execPath`: Location of `kubectl` (if not in the path). If passed must finish with the path character. -+ `kubeconfigPath`: Location of the `kubectl` configuration file. **This parameter is used only in the CI pipeline**, so you don't need to pass it when invoking the script using the CLI. -+ `configFile`: Location of the Yaml file with the `externalcfg` configmap to be deployed. This configmap is used to configure the Pod's environment **This parameter is mandatory** -+ `imageTag`: Tag of the images to deploy to k8s. If not passed the name of the current branch is used. -+ `externalDns`: External DNS name of the k8s. This is only needed if you have configured a DNS that points to your k8s external IP. If you don't have any DNS configured do not pass this parameter. -+ `deployCI`: If `true` means that script is running under the context of a VSTS Hosted Build Agent. **You should never use this parameter from CLI** -+ `buildBits`: means that the source code of eShopOnContainers will be built. If you have built your code (and have all projects published in `obj/Docker/publish`) do not pass this parameter. Default value is `false` -+ `buildImages`: If `true` (default value) Docker images are built and pushed in the Docker registry. If you set this parameter to `false`, Docker images won't be built nor pushed in the Docker registry (but k8s' deployments and services will be redeployed). -+ `deployInfrastructure`: If `true` infrastructure containers (rabbitmq, mongo, redis, sql) will be deployed in k8s. If `false` those containers (and its related deployments and services in k8s) won't be deployed. -+ `dockerOrg`: Name of the organization in the registry where the images are (or will be pushed). Default value is `eshop` (which has images provided by Microsoft) - -**Important:** If you **don't pass the `-buildBits $true` the script won't build and publish the projects** to their `obj/Docker/publish` folder. If any project is not published, you'll be receiving errors like: - -``` -ERROR: Service 'xxxxxxx' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder123456789/obj/Docker/publish: no such file or directory -``` - -### Typical usages of the script: - -Build all projects, and deploy all them in k8s including infrastructure containers in a organization called `foo` in Docker Hub. Images will be tagged with my current git branch and containers will use the configuration set in `conf_local.yml` file: - -``` -./deploy.ps1 -buildBits $true -dockerOrg foo -dockerUser MY_USER -dockerPassword MY_PASSWORD -configFile conf_local.yml -``` - -Do not build any project and don't rebuild docker images. Create k8s deployments that will pull images from my private repository, in the `foo` organization, using the tag `latest`. Containers will use the configuration set in `conf_cloud` file. - -``` -./deploy.ps1 -buildImages $false -dockerOrg foo -registry MY_REGISTRY_FQDN -dockerUser MY_USER -dockerPassword MY_PASSWORD -configFile conf_cloud.yml -imageTag master -``` - -Deploy k8s using public images that Microsoft provides: - -``` -./deploy.ps1 -buildImages $false -configFile conf_local.yml -imageTag master -``` diff --git a/deploy/k8s/build-push-images.ps1 b/deploy/k8s/build-push-images.ps1 deleted file mode 100644 index e2c8e06b6..000000000 --- a/deploy/k8s/build-push-images.ps1 +++ /dev/null @@ -1,72 +0,0 @@ -Param( - [parameter(Mandatory=$false)][string]$registry, - [parameter(Mandatory=$false)][string]$dockerUser, - [parameter(Mandatory=$false)][string]$dockerPassword, - [parameter(Mandatory=$false)][string]$imageTag, - [parameter(Mandatory=$false)][bool]$buildImages=$true, - [parameter(Mandatory=$false)][bool]$pushImages=$true, - [parameter(Mandatory=$false)][string]$dockerOrg="eshop" -) - -# Initialization - -$useDockerHub = [string]::IsNullOrEmpty($registry) - -# Check required commands (only if not in CI environment) - -$requiredCommands = ("docker", "docker-compose") -foreach ($command in $requiredCommands) { - if ((Get-Command $command -ErrorAction SilentlyContinue) -eq $null) { - Write-Host "$command must be on path" -ForegroundColor Red - exit - } -} - -# Get tag to use from current branch if no tag is passed -if ([string]::IsNullOrEmpty($imageTag)) { - $imageTag = $(git rev-parse --abbrev-ref HEAD) -} -Write-Host "Docker image Tag: $imageTag" -ForegroundColor Yellow - -# Build docker images if needed -if ($buildImages) { - Write-Host "Building Docker images tagged with '$imageTag'" -ForegroundColor Yellow - $env:TAG=$imageTag - docker-compose -p .. -f ../docker-compose.yml build -} - -# Login to Docker registry -if (-not [string]::IsNullOrEmpty($dockerUser)) { - $registryFDQN = if (-not $useDockerHub) {$registry} else {"index.docker.io/v1/"} - - Write-Host "Logging in to $registryFDQN as user $dockerUser" -ForegroundColor Yellow - if ($useDockerHub) { - docker login -u $dockerUser -p $dockerPassword - } - else { - docker login -u $dockerUser -p $dockerPassword $registryFDQN - } - - if (-not $LastExitCode -eq 0) { - Write-Host "Login failed" -ForegroundColor Red - exit - } - -} - -# Push images to Docker registry -if ($pushImages) { - Write-Host "Pushing images to $registry/$dockerOrg..." -ForegroundColor Yellow - $services = ("basket.api", "catalog.api", "identity.api", "ordering.api", "ordering.backgroundtasks", "marketing.api","payment.api","locations.api", "webmvc", "webspa", "webstatus", "ocelotapigw", "mobileshoppingagg", "webshoppingagg", "ordering.signalrhub") - - foreach ($service in $services) { - $imageFqdn = if ($useDockerHub) {"$dockerOrg/${service}"} else {"$registry/$dockerOrg/${service}"} - docker tag eshop/${service}:$imageTag ${imageFqdn}:$imageTag - docker push ${imageFqdn}:$imageTag - } -} - - - - - diff --git a/deploy/k8s/conf-files.md b/deploy/k8s/conf-files.md deleted file mode 100644 index 3a74a86bd..000000000 --- a/deploy/k8s/conf-files.md +++ /dev/null @@ -1,17 +0,0 @@ -# YAML files used to deploy to k8s - -This is just a brief enumeration of the configuration files used to create the k8s objects. Use as reference to find where specific object is. - -- `deployments.yaml` Contains the definition of all deployments of the eShopOnContainers. Do not contain any infrastructure deployment (so no SQL, Redis, ...). -- `services.yaml` Contains the definition of all services of the eShopOnContainers. Do not contain any infrastructure service (so no SQL, Redis, ...). -- `basket-data.yaml` Contains the definition of the Redis (used by basket.api) deployment and service -- `nosql-data.yaml` Contains the definition of the Mongodb (used by locations and marketing) deployment and service -- `sql-data.yaml` Contains the definition of the SQL server deployment and service -- `rabbitmq.yaml` Contains the definition of the RabbitMQ deployment and service -- `keystore-data.yaml` Contains the deployment and service definition of the Redis used to mantain coherence between all the ASP.NET Identity keystores. -- `conf_local.yaml` Contains the configuration map that configures all the Pods to use "local" containers (that is all containers in k8s) -- `conf_cloud.yaml` Contains the configuration map that configures all the Pods to use "cloud" resources (that is use Azure resources instead infrastructure containers). This file is provided with no valid values, just for example. -- `frontend.yaml` Contains the deployment and service definition of the NGINX frontend used as reverse-proxy - -- For more information what kubernetes deployments are, read [Kubernetes help](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) -- For more information what kubernetes services are, read [Kubernetes help](https://kubernetes.io/docs/concepts/services-networking/service/) diff --git a/deploy/k8s/conf_cloud.yaml b/deploy/k8s/conf_cloud.yaml deleted file mode 100644 index a914105ae..000000000 --- a/deploy/k8s/conf_cloud.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: externalcfg - labels: - app: eshop -data: -# Basket.API entries - basket__ConnectionString: REDIS CONNECTION STRING FOR BASKET -# Catalog.API entries - catalog__ConnectionString: Catalog SQL SERVER CONNECTION STRING (Server=xxxx;Intial Catalog=yyy;....) -# Identity.API entries - IdentitySqlDb: Identity SQL SERVER CONNECTION STRING (Server=xxxx;Intial Catalog=yyy;....) -# Locations.API entries - LocationsBus: CONNECTION_STRING (NAME OF RABBITMQ CONTAINER OR Endpoint=sb://XXXX for topic in case of using Azure) - LocationsNoSqlDb: Locations MongoDb ConnectionString - LocationsNoSqlDbName: Locations MongoDb database (LocationsDb) -# Marketing.API entries - MarketingBus: CONNECTION_STRING (NAME OF RABBITMQ CONTAINER OR Endpoint=sb://XXXX for topic in case of using Azure) - MarketingNoSqlDb: Marketing MongoDb ConnectionString - MarketingNoSqlDbName: Marketing MongoDb database (MarketingDb) - MarketingSqlDb: Marketing SQL SERVER CONNECTION STRING (Server=xxxx;Intial Catalog=yyy;....) -# Ordering.API entries - OrderingBus: CONNECTION_STRING (NAME OF RABBITMQ CONTAINER OR Endpoint=sb://XXXX for topic in case of using Azure) - OrderingSqlDb: Ordering SQL SERVER CONNECTION STRING (Server=xxxx;Intial Catalog=yyy;....) - GracePeriodManager_GracePeriodTime: "1" - GracePeriodManager_CheckUpdateTime: "15000" -# Payment.API entries - PaymentBus: CONNECTION_STRING (NAME OF RABBITMQ CONTAINER OR Endpoint=sb://XXXX for topic in case of using Azure) -# Global entries - all_UseAzureServiceBus: "TRUE" IF USE AZURE SB ("FALSE" FOR USING RABBITMQ) - keystore: REDIS CONNECTION STRING FOR KEYSTORE - all_EventBusConnection: CONNECTION_STRING (NAME OF RABBITMQ CONTAINER OR Endpoint=sb://XXXX in case of using Azure) - all_InstrumentationKey: APPINSIGHTS KEY diff --git a/deploy/k8s/conf_local.yaml b/deploy/k8s/conf_local.yaml deleted file mode 100644 index 615754bcf..000000000 --- a/deploy/k8s/conf_local.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: externalcfg - labels: - app: eshop -data: - basket__ConnectionString: basket-data - catalog__ConnectionString: Server=sql-data;Initial Catalog=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word; - catalog__AzureStorageEnabled: "False" - identity__ConnectionString: Server=sql-data;Initial Catalog=Microsoft.eShopOnContainers.Services.IdentityDb;User Id=sa;Password=Pass@word; - locations__ConnectionString: mongodb://nosql-data - locations__Database: LocationsDb - marketing__MongoConnectionString: mongodb://nosql-data - marketing__MongoDatabase: MarketingDb - marketing__ConnectionString: Server=sql-data;Initial Catalog=Microsoft.eShopOnContainers.Services.MarketingDb;User Id=sa;Password=Pass@word; - ordering__ConnectionString: Server=sql-data;Initial Catalog=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word; - keystore: keystore-data - GracePeriodManager__GracePeriodTime: "1" - GracePeriodManager__CheckUpdateTime: "15000" - all__EventBusConnection: rabbitmq - all__InstrumentationKey: "" - all__EnableLoadTest: "False" - all__UseAzureServiceBus: "False" - - - diff --git a/deploy/k8s/deploy-ingress-azure.ps1 b/deploy/k8s/deploy-ingress-azure.ps1 deleted file mode 100644 index d0ff702df..000000000 --- a/deploy/k8s/deploy-ingress-azure.ps1 +++ /dev/null @@ -1 +0,0 @@ -kubectl apply -f nginx-ingress\cloud-generic.yaml \ No newline at end of file diff --git a/deploy/k8s/deploy-ingress-dockerlocal.ps1 b/deploy/k8s/deploy-ingress-dockerlocal.ps1 deleted file mode 100644 index 04ffad763..000000000 --- a/deploy/k8s/deploy-ingress-dockerlocal.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -kubectl apply -f nginx-ingress\cm.yaml -kubectl apply -f nginx-ingress\cloud-generic.yaml \ No newline at end of file diff --git a/deploy/k8s/deploy-ingress.ps1 b/deploy/k8s/deploy-ingress.ps1 deleted file mode 100644 index 37abcbee2..000000000 --- a/deploy/k8s/deploy-ingress.ps1 +++ /dev/null @@ -1,5 +0,0 @@ -# Deploy nginx-ingress core files -kubectl apply -f nginx-ingress\mandatory.yaml - - - diff --git a/deploy/k8s/deploy-nodeports.ps1 b/deploy/k8s/deploy-nodeports.ps1 deleted file mode 100644 index a10462b0b..000000000 --- a/deploy/k8s/deploy-nodeports.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -kubectl apply -f .\nodeports\rabbitmq-admin.yaml -kubectl apply -f .\nodeports\sql-services.yaml diff --git a/deploy/k8s/deploy.ps1 b/deploy/k8s/deploy.ps1 deleted file mode 100644 index 6a44a4b12..000000000 --- a/deploy/k8s/deploy.ps1 +++ /dev/null @@ -1,212 +0,0 @@ -Param( - [parameter(Mandatory=$false)][string]$registry, - [parameter(Mandatory=$false)][string]$dockerUser, - [parameter(Mandatory=$false)][string]$dockerPassword, - [parameter(Mandatory=$false)][string]$execPath, - [parameter(Mandatory=$false)][string]$kubeconfigPath, - [parameter(Mandatory=$true)][string]$configFile, - [parameter(Mandatory=$false)][string]$imageTag, - [parameter(Mandatory=$false)][bool]$deployCI=$false, - [parameter(Mandatory=$false)][bool]$buildImages=$true, - [parameter(Mandatory=$false)][bool]$pushImages=$true, - [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, - [parameter(Mandatory=$false)][string]$dockerOrg="eshop" -) - -function ExecKube($cmd) { - if($deployCI) { - $kubeconfig = $kubeconfigPath + 'config'; - $exp = $execPath + 'kubectl ' + $cmd + ' --kubeconfig=' + $kubeconfig - Invoke-Expression $exp - } - else{ - $exp = $execPath + 'kubectl ' + $cmd - Invoke-Expression $exp - } -} - -# Initialization -$debugMode = $PSCmdlet.MyInvocation.BoundParameters["Debug"].IsPresent -$useDockerHub = [string]::IsNullOrEmpty($registry) - -$externalDns = & ExecKube -cmd 'get svc ingress-nginx -n ingress-nginx -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"' -Write-Host "Ingress ip detected: $externalDns" -ForegroundColor Yellow - -if (-not [bool]($externalDns -as [ipaddress])) { - Write-Host "Must install ingress first" -ForegroundColor Red - Write-Host "Run deploy-ingress.ps1 and deploy-ingress-azure.ps1" -ForegroundColor Red - exit -} - - -# Check required commands (only if not in CI environment) -if(-not $deployCI) { - $requiredCommands = ("docker", "docker-compose", "kubectl") - foreach ($command in $requiredCommands) { - if ((Get-Command $command -ErrorAction SilentlyContinue) -eq $null) { - Write-Host "$command must be on path" -ForegroundColor Red - exit - } - } -} -else { - $buildImages = false; # Never build images through CI, as they previously built -} - -# Get tag to use from current branch if no tag is passed -if ([string]::IsNullOrEmpty($imageTag)) { - $imageTag = $(git rev-parse --abbrev-ref HEAD) -} -Write-Host "Docker image Tag: $imageTag" -ForegroundColor Yellow - -# building docker images if needed -if ($buildImages) { - Write-Host "Building Docker images tagged with '$imageTag'" -ForegroundColor Yellow - $env:TAG=$imageTag - docker-compose -p .. -f ../docker-compose.yml build -} - -if ($pushImages) { - Write-Host "Pushing images to $registry/$dockerOrg..." -ForegroundColor Yellow - $services = ("basket.api", "catalog.api", "identity.api", "ordering.api", "ordering.backgroundtasks", "marketing.api","payment.api","locations.api", "webmvc", "webspa", "webstatus", "ocelotapigw", "mobileshoppingagg", "webshoppingagg", "ordering.signalrhub") - - foreach ($service in $services) { - $imageFqdn = if ($useDockerHub) {"$dockerOrg/${service}"} else {"$registry/$dockerOrg/${service}"} - docker tag eshop/${service}:$imageTag ${imageFqdn}:$imageTag - docker push ${imageFqdn}:$imageTag - } -} - -# if we have login/pwd add the secret to k8s -if (-not [string]::IsNullOrEmpty($dockerUser)) { - $registryFDQN = if (-not $useDockerHub) {$registry} else {"index.docker.io/v1/"} - - Write-Host "Logging in to $registryFDQN as user $dockerUser" -ForegroundColor Yellow - if ($useDockerHub) { - docker login -u $dockerUser -p $dockerPassword - } - else { - docker login -u $dockerUser -p $dockerPassword $registryFDQN - } - - if (-not $LastExitCode -eq 0) { - Write-Host "Login failed" -ForegroundColor Red - exit - } - - # Try to delete the Docker registry key secret - ExecKube -cmd 'delete secret docker-registry registry-key' - - # Create the Docker registry key secret - ExecKube -cmd 'create secret docker-registry registry-key ` - --docker-server=$registryFDQN ` - --docker-username=$dockerUser ` - --docker-password=$dockerPassword ` - --docker-email=not@used.com' -} - -# Removing previous services & deployments -Write-Host "Removing existing services & deployments.." -ForegroundColor Yellow -ExecKube -cmd 'delete deployments --all' -ExecKube -cmd 'delete services --all' -ExecKube -cmd 'delete configmap internalurls' -ExecKube -cmd 'delete configmap urls' -ExecKube -cmd 'delete configmap externalcfg' -ExecKube -cmd 'delete configmap ocelot' -ExecKube -cmd 'delete -f ingress.yaml' - -# start sql, rabbitmq, frontend deployments -if ($deployInfrastructure) { - Write-Host 'Deploying infrastructure deployments (databases, redis, RabbitMQ...)' -ForegroundColor Yellow - ExecKube -cmd 'create -f sql-data.yaml -f basket-data.yaml -f keystore-data.yaml -f rabbitmq.yaml -f nosql-data.yaml' -} - - -Write-Host 'Deploying ocelot APIGW' -ForegroundColor Yellow - -ExecKube "create configmap ocelot --from-file=mm=ocelot/configuration-mobile-marketing.json --from-file=ms=ocelot/configuration-mobile-shopping.json --from-file=wm=ocelot/configuration-web-marketing.json --from-file=ws=ocelot/configuration-web-shopping.json " -ExecKube -cmd "apply -f ocelot/deployment.yaml" -ExecKube -cmd "apply -f ocelot/service.yaml" - -Write-Host 'Deploying code deployments (Web APIs, Web apps, ...)' -ForegroundColor Yellow -ExecKube -cmd 'create -f services.yaml' - -ExecKube -cmd 'create -f internalurls.yaml' -ExecKube -cmd 'create configmap urls ` - --from-literal=PicBaseUrl=http://$($externalDns)/webshoppingapigw/c/api/v1/catalog/items/[0]/pic/ ` - --from-literal=Marketing_PicBaseUrl=http://$($externalDns)/webmarketingapigw/m/api/v1/campaigns/[0]/pic/ ` - --from-literal=mvc_e=http://$($externalDns)/webmvc ` - --from-literal=marketingapigw_e=http://$($externalDns)/webmarketingapigw ` - --from-literal=webshoppingapigw_e=http://$($externalDns)/webshoppingapigw ` - --from-literal=mobileshoppingagg_e=http://$($externalDns)/mobileshoppingagg ` - --from-literal=webshoppingagg_e=http://$($externalDns)/webshoppingagg ` - --from-literal=identity_e=http://$($externalDns)/identity ` - --from-literal=spa_e=http://$($externalDns) ` - --from-literal=locations_e=http://$($externalDns)/locations-api ` - --from-literal=marketing_e=http://$($externalDns)/marketing-api ` - --from-literal=basket_e=http://$($externalDns)/basket-api ` - --from-literal=ordering_e=http://$($externalDns)/ordering-api ` - --from-literal=xamarin_callback_e=http://$($externalDns)/xamarincallback' - -ExecKube -cmd 'label configmap urls app=eshop' - -Write-Host "Deploying configuration from $configFile" -ForegroundColor Yellow -ExecKube -cmd "create -f $configFile" - -Write-Host "Creating deployments..." -ForegroundColor Yellow -ExecKube -cmd 'create -f deployments.yaml' - -# update deployments with the correct image (with tag and/or registry) -$registryPath = "" -if (-not [string]::IsNullOrEmpty($registry)) { - $registryPath = "$registry/" -} - -Write-Host "Update Image containers to use prefix '$registry$dockerOrg' and tag '$imageTag'" -ForegroundColor Yellow - -ExecKube -cmd 'set image deployments/basket basket=${registryPath}${dockerOrg}/basket.api:$imageTag' -ExecKube -cmd 'set image deployments/catalog catalog=${registryPath}${dockerOrg}/catalog.api:$imageTag' -ExecKube -cmd 'set image deployments/identity identity=${registryPath}${dockerOrg}/identity.api:$imageTag' -ExecKube -cmd 'set image deployments/ordering ordering=${registryPath}${dockerOrg}/ordering.api:$imageTag' -ExecKube -cmd 'set image deployments/ordering-backgroundtasks ordering-backgroundtasks=${registryPath}${dockerOrg}/ordering.backgroundtasks:$imageTag' -ExecKube -cmd 'set image deployments/marketing marketing=${registryPath}${dockerOrg}/marketing.api:$imageTag' -ExecKube -cmd 'set image deployments/locations locations=${registryPath}${dockerOrg}/locations.api:$imageTag' -ExecKube -cmd 'set image deployments/payment payment=${registryPath}${dockerOrg}/payment.api:$imageTag' -ExecKube -cmd 'set image deployments/webmvc webmvc=${registryPath}${dockerOrg}/webmvc:$imageTag' -ExecKube -cmd 'set image deployments/webstatus webstatus=${registryPath}${dockerOrg}/webstatus:$imageTag' -ExecKube -cmd 'set image deployments/webspa webspa=${registryPath}${dockerOrg}/webspa:$imageTag' -ExecKube -cmd 'set image deployments/ordering-signalrhub ordering-signalrhub=${registryPath}${dockerOrg}/ordering.signalrhub:$imageTag' - -ExecKube -cmd 'set image deployments/mobileshoppingagg mobileshoppingagg=${registryPath}${dockerOrg}/mobileshoppingagg:$imageTag' -ExecKube -cmd 'set image deployments/webshoppingagg webshoppingagg=${registryPath}${dockerOrg}/webshoppingagg:$imageTag' - -ExecKube -cmd 'set image deployments/apigwmm apigwmm=${registryPath}${dockerOrg}/ocelotapigw:$imageTag' -ExecKube -cmd 'set image deployments/apigwms apigwms=${registryPath}${dockerOrg}/ocelotapigw:$imageTag' -ExecKube -cmd 'set image deployments/apigwwm apigwwm=${registryPath}${dockerOrg}/ocelotapigw:$imageTag' -ExecKube -cmd 'set image deployments/apigwws apigwws=${registryPath}${dockerOrg}/ocelotapigw:$imageTag' - -Write-Host "Execute rollout..." -ForegroundColor Yellow -ExecKube -cmd 'rollout resume deployments/basket' -ExecKube -cmd 'rollout resume deployments/catalog' -ExecKube -cmd 'rollout resume deployments/identity' -ExecKube -cmd 'rollout resume deployments/ordering' -ExecKube -cmd 'rollout resume deployments/ordering-backgroundtasks' -ExecKube -cmd 'rollout resume deployments/marketing' -ExecKube -cmd 'rollout resume deployments/locations' -ExecKube -cmd 'rollout resume deployments/payment' -ExecKube -cmd 'rollout resume deployments/webmvc' -ExecKube -cmd 'rollout resume deployments/webstatus' -ExecKube -cmd 'rollout resume deployments/webspa' -ExecKube -cmd 'rollout resume deployments/mobileshoppingagg' -ExecKube -cmd 'rollout resume deployments/webshoppingagg' -ExecKube -cmd 'rollout resume deployments/apigwmm' -ExecKube -cmd 'rollout resume deployments/apigwms' -ExecKube -cmd 'rollout resume deployments/apigwwm' -ExecKube -cmd 'rollout resume deployments/apigwws' -ExecKube -cmd 'rollout resume deployments/ordering-signalrhub' - -Write-Host "Adding/Updating ingress resource..." -ForegroundColor Yellow -ExecKube -cmd 'apply -f ingress.yaml' - -Write-Host "WebSPA is exposed at http://$externalDns, WebMVC at http://$externalDns/webmvc, WebStatus at http://$externalDns/webstatus" -ForegroundColor Yellow - diff --git a/deploy/k8s/deploy.sh b/deploy/k8s/deploy.sh deleted file mode 100644 index 0689c19c1..000000000 --- a/deploy/k8s/deploy.sh +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env bash - -# http://redsymbol.net/articles/unofficial-bash-strict-mode/ -set -euo pipefail - -# This script is comparable to the PowerShell script deploy.ps1 but to be used from a Mac bash environment. -# There are, however, the following few differences/limitations: - -# It assumes docker/container registry login was already performed -# It assumes K8s was given access to the registry—does not create any K8s secrets -# It does not support explicit kubectl config file (relies on kubectl config use-context to point kubectl at the right cluster/namespace) -# It always deploys infrastructure bits (redis, SQL Server etc) -# The script was tested only with Azure Container Registry (not Docker Hub, although it is expected to work with Docker Hub too) - -# Feel free to submit a PR in order to improve it. - -usage() -{ - cat < - Specifies container registry (ACR) to use (required), e.g. myregistry.azurecr.io - -t | --tag - Default: newly created, date-based timestamp, with 1-minute resolution - -b | --build-solution - Force solution build before deployment (default: false) - --skip-image-build - Do not build images (default is to build all images) - --skip-image-push - Do not upload images to the container registry (just run the Kubernetes deployment portion) - Default is to push images to container registry - -h | --help - Displays this help text and exits the script - -It is assumed that the Kubernetes AKS cluster has been granted access to ACR registry. -For more info see -https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-aks - -WARNING! THE SCRIPT WILL COMPLETELY DESTROY ALL DEPLOYMENTS AND SERVICES VISIBLE -FROM THE CURRENT CONFIGURATION CONTEXT. -It is recommended that you create a separate namespace and confguration context -for the eShopOnContainers application, to isolate it from other applications on the cluster. -For more information see https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ -You can use eshop-namespace.yaml file (in the same directory) to create the namespace. - -END -} - -image_tag=$(date '+%Y%m%d%H%M') -build_solution='' -container_registry='' -build_images='yes' -push_images='yes' - -while [[ $# -gt 0 ]]; do - case "$1" in - -r | --registry ) - container_registry="$2"; shift 2 ;; - -t | --tag ) - image_tag="$2"; shift 2 ;; - -b | --build-solution ) - build_solution='yes'; shift ;; - --skip-image-build ) - build_images=''; shift ;; - --skip-image-push ) - push_images=''; shift ;; - -h | --help ) - usage; exit 1 ;; - *) - echo "Unknown option $1" - usage; exit 2 ;; - esac -done - -if [[ ! $container_registry ]]; then - echo 'Container registry must be specified (e.g. myregistry.azurecr.io)' - echo '' - usage - exit 3 -fi - -if [[ $build_solution ]]; then - echo "#################### Building eShopOnContainers solution ####################" - dotnet publish -o obj/Docker/publish ../eShopOnContainers-ServicesAndWebApps.sln -fi - -export TAG=$image_tag - -if [[ $build_images ]]; then - echo "#################### Building eShopOnContainers Docker images ####################" - docker-compose -p .. -f ../docker-compose.yml build - - # Remove temporary images - docker rmi $(docker images -qf "dangling=true") -fi - -if [[ $push_images ]]; then - echo "#################### Pushing images to registry ####################" - services=(basket.api catalog.api identity.api ordering.api marketing.api payment.api locations.api webmvc webspa webstatus) - - for service in "${services[@]}" - do - echo "Pushing image for service $service..." - docker tag "eshop/$service:$image_tag" "$container_registry/$service:$image_tag" - docker push "$container_registry/$service:$image_tag" - done -fi - -echo "#################### Cleaning up old deployment ####################" -kubectl delete deployments --all -kubectl delete services --all -kubectl delete configmap config-files || true -kubectl delete configmap urls || true -kubectl delete configmap externalcfg || true - -echo "#################### Deploying infrastructure components ####################" -kubectl create configmap config-files --from-file=nginx-conf=nginx.conf -kubectl label configmap config-files app=eshop -kubectl create -f sql-data.yaml -f basket-data.yaml -f keystore-data.yaml -f rabbitmq.yaml -f nosql-data.yaml - -echo "#################### Creating application service definitions ####################" -kubectl create -f services.yaml -f frontend.yaml - -echo "#################### Waiting for Azure to provision external IP ####################" - -ip_regex='([0-9]{1,3}\.){3}[0-9]{1,3}' -while true; do - printf "." - frontendUrl=$(kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}") - if [[ $frontendUrl =~ $ip_regex ]]; then - break - fi - sleep 5s -done - -printf "\n" -externalDns=$frontendUrl -echo "Using $externalDns as the external DNS/IP of the K8s cluster" - -echo "#################### Creating application configuration ####################" - -# urls configmap -kubectl create configmap urls \ - "--from-literal=BasketUrl=http://basket" \ - "--from-literal=BasketHealthCheckUrl=http://basket/hc" \ - "--from-literal=CatalogUrl=http://$externalDns/catalog-api" \ - "--from-literal=CatalogHealthCheckUrl=http://catalog/hc" \ - "--from-literal=PicBaseUrl=http://$externalDns/catalog-api/api/v1/catalog/items/[0]/pic/" \ - "--from-literal=Marketing_PicBaseUrl=http://$externalDns/marketing-api/api/v1/campaigns/[0]/pic/" \ - "--from-literal=IdentityUrl=http://$externalDns/identity" \ - "--from-literal=IdentityHealthCheckUrl=http://identity/hc" \ - "--from-literal=OrderingUrl=http://ordering" \ - "--from-literal=OrderingHealthCheckUrl=http://ordering/hc" \ - "--from-literal=MvcClientExternalUrl=http://$externalDns/webmvc" \ - "--from-literal=WebMvcHealthCheckUrl=http://webmvc/hc" \ - "--from-literal=MvcClientOrderingUrl=http://ordering" \ - "--from-literal=MvcClientCatalogUrl=http://catalog" \ - "--from-literal=MvcClientBasketUrl=http://basket" \ - "--from-literal=MvcClientMarketingUrl=http://marketing" \ - "--from-literal=MvcClientLocationsUrl=http://locations" \ - "--from-literal=MarketingHealthCheckUrl=http://marketing/hc" \ - "--from-literal=WebSpaHealthCheckUrl=http://webspa/hc" \ - "--from-literal=SpaClientMarketingExternalUrl=http://$externalDns/marketing-api" \ - "--from-literal=SpaClientOrderingExternalUrl=http://$externalDns/ordering-api" \ - "--from-literal=SpaClientCatalogExternalUrl=http://$externalDns/catalog-api" \ - "--from-literal=SpaClientBasketExternalUrl=http://$externalDns/basket-api" \ - "--from-literal=SpaClientIdentityExternalUrl=http://$externalDns/identity" \ - "--from-literal=SpaClientLocationsUrl=http://$externalDns/locations-api" \ - "--from-literal=LocationsHealthCheckUrl=http://locations/hc" \ - "--from-literal=SpaClientExternalUrl=http://$externalDns" \ - "--from-literal=LocationApiClient=http://$externalDns/locations-api" \ - "--from-literal=MarketingApiClient=http://$externalDns/marketing-api" \ - "--from-literal=BasketApiClient=http://$externalDns/basket-api" \ - "--from-literal=OrderingApiClient=http://$externalDns/ordering-api" \ - "--from-literal=PaymentHealthCheckUrl=http://payment/hc" - -kubectl label configmap urls app=eshop - -# externalcfg configmap -- points to local infrastructure components (rabbitmq, SQL Server etc) -kubectl create -f conf_local.yml - -# Create application pod deployments -kubectl create -f deployments.yaml - -echo "#################### Deploying application pods ####################" - -# update deployments with the correct image (with tag and/or registry) -kubectl set image deployments/basket "basket=$container_registry/basket.api:$image_tag" -kubectl set image deployments/catalog "catalog=$container_registry/catalog.api:$image_tag" -kubectl set image deployments/identity "identity=$container_registry/identity.api:$image_tag" -kubectl set image deployments/ordering "ordering=$container_registry/ordering.api:$image_tag" -kubectl set image deployments/marketing "marketing=$container_registry/marketing.api:$image_tag" -kubectl set image deployments/locations "locations=$container_registry/locations.api:$image_tag" -kubectl set image deployments/payment "payment=$container_registry/payment.api:$image_tag" -kubectl set image deployments/webmvc "webmvc=$container_registry/webmvc:$image_tag" -kubectl set image deployments/webstatus "webstatus=$container_registry/webstatus:$image_tag" -kubectl set image deployments/webspa "webspa=$container_registry/webspa:$image_tag" - -kubectl rollout resume deployments/basket -kubectl rollout resume deployments/catalog -kubectl rollout resume deployments/identity -kubectl rollout resume deployments/ordering -kubectl rollout resume deployments/marketing -kubectl rollout resume deployments/locations -kubectl rollout resume deployments/payment -kubectl rollout resume deployments/webmvc -kubectl rollout resume deployments/webstatus -kubectl rollout resume deployments/webspa - -echo "WebSPA is exposed at http://$externalDns, WebMVC at http://$externalDns/webmvc, WebStatus at http://$externalDns/webstatus" -echo "eShopOnContainers deployment is DONE" diff --git a/deploy/k8s/img/blob_creation.png b/deploy/k8s/img/blob_creation.png deleted file mode 100644 index a9e386eadca24830e9ec9d985fc7820108a4f5a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26340 zcmbTd1yr2P(k@B_4cP9jg02$l~&fxBHC*R)t zp7Wo3|GUmTti@uzO~2jM)z#JYJXLSFiV_F|jTj990Rcl+Mp6v{;k7XW!V3|Um+%%c z@ckJ4&kJ`okT^o+7zqsi@Y-5TQ49g0CILR1-j(~vK^Y{0~fOD}00)myd ztfZL6N29}Kf3U_@2k*m^Yt?1>{q4T)xUu2>Rl273cs(9veSWTq5VmpZln-|B=#841 zlytCUeLi`*$qSHsaU6p(*)15hCgq_fs5r8yC`1nHQ{rDkfp0g< zy#r=PR_d&+#x0Dl6l#aA>#ja`TpwHyt+@N|v|eR88zRF+L_lr3KWeiyo-v))<>A&A z>iYnA0dJ*x5pv1YQ~Dt-7V@`KyopB5WwO3gNm-eI_u1xjnRakD`J?@T zzK{K1|CQP|qwmy0-8!?oUc|b3f9L_)d?zs}$y+0#G+0~GvPX{zLxGP`m~1;)sHv%$ z!RIQz`L1eK-`F^CzoKb4WgtPk<`P-tM$FOCQCoXqQI#sZ35+TFnnFEaqezPT{&ZY#b>{Q z+kVFHa$1|>0i_2L5>sxwsLjg?1Y`($tFefiR{jJ6#wkINVo(xhvnQKtNyWmNOYw_u zJ~l2dwI6RbVn$MMcs?EfM^EY@VbTo^4Q@KY!$%s)iuni`8Z}9|(7{2Jtz5E)KgecL zM?Hk0t58`GSHU+a?oZU)`C5v|36Q#hjT{MoxQMnS(YDUcMFw*CECzJ6ilS;|h18R0 zwgri@QwRz|Tr!k()pkA`yT(2PwyUU@#gv>)c5Lq^u;A)bz|$})QmZ8iqZq!};Hi;s zp99*@FkwY+vJC_)Q!RrfHw7akwG>~(h-Z_qDXE2c$RXl>krcTkSzB^yB9ssU7fS_F zU>kD-?0`1)o@nN7iAd4;DK?+)?tJ*|1cxe9Jr%G2Ovd zi`JtsY;sG%o>yvcNmL^#?&uvSRH^L_@>Aj$+Fxrcg3?x2iKTWQR>cDgCdHF;-5e zCf(R{d0WorSh8AAefa;HDh(b(Qhx~_c5#sJdM_&fJBjr^tqAF=&bv|)m2^Sxc@LM5Gh8orG?BZIpG#U*9{$O8oM| zzgT*7T8(zIA(^c@NjkVtrTN8}_3P3cE~R?P;$dNJ2}zh(V%nDIn{WbskhJvncor)% zu7`(5eFO?z#x3iaem7oz_i@Fk}AoeAl;1Grx>x*?UP*_m2bim({iX0pmlb2ng@wlP6VGRj~>v z@3b))!GXtgKme2r_OKGS_QG~alhv>_afa@$p+TA}GgrKKa&M|4H=WH%N{*szrty3J zTOU31-bZuzk(eeXP5oxYZZUmfW&4(+A`DaDa8{qBgIKj9(PUI}{g|7Ou@9_K-T0M4 z<&<%8O9n$Lves)inP4;tGV{>P9}U)+bI+QapXglI$#Lb-n>;LjF8d7F1*q|o^2b1CR#kF?&oh_q%zP7m7zTxUGabY6`@8i-mqf>%O zc{{W4Z=KVD0};%tSgfeCRjn}U)sBh-%{{axFa1q)iz_eEy=HUYAZ8cmlTX*LM3$#c zAIXMhZwiN7KJGl9ihDb27BAw`GXJvrDy~6vy4-afLVWsiz+Jm{!sfka#G}vk)$Ui( zFJz2F69M&G1J1AKI?MFW@|Zb!Z;w}dQm#5hj&GS)Wm_jACgQs85ofejYJ7L?vaMf{ z`6?Ds#w&?V2=H+W<#p$*GBY+;noNI{=!TLWE@tsxu%s_g-@ia0$7)*fVZ?(_mf}*V z)Oaktm%(Og?3V?7`5AMxL4*=L8!b&Wk6ni%^L#TPqE)W*0aReOq#21u;#e>${^Wqf zO{?-2qm)}Fm*cCI>Oe0CT=irP$HbRSO--P7DBPkbY2=?tIrX@y?fA35(u662xFSC_ zHGQg4QwHVk6fyox6@Ik8{r$@KRUMktcVSOpYrtrX7m~c5zevEBaVOoY$1RB_!C~Wd z^_At_@%u{#;a|{;Mea%C=RaNq7tn>{)r(5(*yNf**W;_@kNPj(r>eS7mI=uzbrKR^1+tnc5c(exM<@odOt+V?*3XKB}R01=2576*}h#N}MYD!Lm$% zXUm4iZCf8kaVP^Wjt(oj@An0mCT;lZo*SAsScu;MqF;whU>(1`a@_JyMNp~EF_)QQ zHNyIeZI-}(`g->c?M{@ED=1B{v}7i>WqroAkno@zst{fNaZ)97+)%yX$AD z0|ET<&=4+EE73EGA>Vsp)=?@~Jx448h=a!w1(lUYOD*mXKS#x(LkYCD3gBR%CK~m2 z+fi#I{?qF7<0_~1SYn=9{9q~Uw<@+u55lFS#vc`i>?YBRNcsVx1&bxkNlcm>K_q4g zJ=FAJv0fi{Lvuy-A@7 zZIb&>0khgFO6d3+rSB6=fDtk|Z)@MD|Aahvtll=T9t6=!DuU{=Ru(qSJ*sX|$;$fU z5i4^{va7s_sK-7>9Qr3(1q@{Ji*0#C2ra)SOZPYIuANc;ROY{U8x>I`;MbiqQ^fr> zyU?18?P9I;Wn->zV74>5;`s1|#!;22>($ya6RFThk^dZbF9G2~)YnxZymxhV4}W}u zm6eAq7%M(&&c0S_6{2qlqH3~xv6!#kCK;eRvxbvaH2M{-$}4p1`iT@xuYS1<$~Fuqet)S@Ss;^N8U07~V-uP5pW z6y|QT{brbqj0?wyd2CL^igA(WbkEz)`=f+BwIujnvDpRAhJ986pYu2ZbHl6Fz*Naq zi=Q!JHXQP_fbc~JE@j(|U<$%sc~E<;)O99xXi=U(=2T&%ViVtIYJG#an8A$^??0MG zPa83xKblxKNlm6JRhMtcGUX!v@u<`NffACHIEfXQE-{xt*tm2R5QThqDp6Elf`hF9 zN_?|L-jhWd;4Hbafj;g_Q$o9KTS{Juqy#9&3i0Po7WDrC6511BZ}Xtr^?;%k8<6s~ z%0i|!fb^vK;_c7M`k7jkI8q@hK{>EjLhmh?L?q#m;H@Lzf?UXByeS7Be0=ME%k0k%fe4tO#k1O#IFTa1g`dAv&%X`hhAuE4J5XyNXAcepQ9 z`Uu2^+Q5I{C&f*JxZjW)U<8Z;J52wOFkf#f&kK^Qlhm$|B=nlbV&2D=tot41Mji^k zYRW7#iX#$Vt=S}BXk!q?8v(I%#I0TxFobu#V+HiF4xH2X{6vU(7h*rX-W*ZoZ_R6b z5BFGa@Xqvo(0Dvnzme(j$%|pOXzID4ALB}t6jDBoD0yjrd6bI}AjOGBy}k<|y!sXT zdJ_6uG4+NTll;&YOwdy7TI>Ou9c`?1^|quph^C&x@eIUD`suwUP~IM}>@X}I$NPh6 zZsHK*OX}A{V4t}dN}907M)xnLgALO^Fif&>C08Dac3f#kvTr14Qn=A{$)j(x=* z)n=!Mj`fJ^y1&0K70BgNHT|YMgE1MdPuiDQ{O=%EvVqgFA8ZTren(5s*6cK@D#dcY z-YCpFS@;lr;_#ye1xr`+r_Cf5uj8m9>l?iGaX0a`vNIZzWXMnR7!w&_Z993uylfG= zGdgct@)g3!ms}s|BoiRoYShgs2Wk$umoCH>AK|0&M?A%-g{Xa=%c#4y*`XH|^IQ5B z=hfTlX8mkyu-(=yhvPQjrcX{!k>IrGa+IcFz@gPU;=Gb}IaM@h*hz)ksi((r#I@Sg z?TJw+CgeCMHQ8La=z~uYHgMr|5(}{N`%r(D`Ci2IJrV+2l9Xf~*I&*208`~cTikb| zBBcL1)-_G{&yDzyc-jz(T%o7+IMm5PMb7-Auw>B@tR#*4O}Hw zl0^gcP-lQ>xqXIrWub3mc>yJFOWITgqeW#IPA8xh0I&U7L{}h;&S<1{{W-qL^os#J zxS2oi4Q^W0QRRfU{@%b*lLxW$L_I&m=|%T1jbNrWQ!=J2HOzT2{5&F`n2)+aW}_@lu&!l%Kaee}iK1xK;mb`&pkm9{7Mr*h+kYO0Op2x_7`1fC@GruXzg2{@e^ObqJ?L|lqv*TiFfmuHEF@7_nZsJDUypx}#>wxY`64TBT?S$dHpftLs-#k&qBTomEB`qrbV4Su(75keQN z)LDE}LpJ#Q?hfJQskvB(tn6&Wad5B(+Z~LfOa$5-y6#EuQl|#d2)M3GmPZg&ywR#SU@o;$Dz2JOWrZOlFEH*BCLhb(H)c&}o9ZXALa?r0fj-^$ zWLW@M0pUB19U@@$Uqu{}`IM?sIF}lsv|l5xk(_)btG@i=Rpa@%k))@pY&qvYaNm6| zF~pz+JbPptGZ*P|)b{b<^9%M)B5ny7WzuVYdOGvN^IVKSQ)%OaTbLzh)8tF#WkRCc z_&z71_)4UQzy+2gT(myyg;d_wt-Q6$JLQI9<5|LK#_!oS$^E;|{kyS|11-kfS2dpYUm72ZmF~hQw`?TE_4`PF z{cuAMp_mDSh^Vm;sz4@`A{6|h?xH&BfC6~?HniU$z1TO&uiKaPg(XLT2nZW_ShD$Z ztyZJN!-BFox|_dhqTBWYZ&L#KJtDYmczNJDzglo=Qs2vdEpGFkE_slEYbq6IF9%iv z>U^h9QHF1yZyC}3@ZcBMt-(cS7cKL-ftTu36SR8M+oQTkmidu1ShXxvfsGsxPD>%V zq>94}7(!MPIXNmx>%|aHw&WEgyOKN(1LNMlcG(JF$r)`f+JI<#>IX2Tcy2JZcghrE zK}(s>!dDJpC^;%{&t!3P>oF%JMf@Pln4w1xA)|iU44-d5V{mCx>P#>vKdR~4+T-iYnW!Nf4!S}fyMyh z<7T2Je5-+4c~{Z2a(4e{CyH%zD2eI9^+FMUACip%hv=SrN!mtnJ?vpN76+x>F4Fmw zPn069<9{IEA%jd;=7k{-q&e|IpM3Z4op9IWcmZ+y+RHaTWADtXuAN0LH$dDXVc`9? zCdU+!tKsA;>G9|$dqyrR<7XRXBhF`TO*FiUCjmNo+dcb>NvKCx>l*b_WIdPs1~4+Nvsz4>vW$M@A{DtEacZ_ z*(w^EnjRIPyw8@=LQmNb-o^+)CG--|uzW2CyarhfVVbG)CHL_mg7`S4@b73_6a~8x zVeg>vdJW4?tML1Fx9A%cX-9Tr!(`)UdCB!ME%gYe20S=xf;~=4HLp1t7Zqmx68^|h zZ^x!}1}C{_N|_#k;EY!~+#Om{5XU7(R^Y}$T*J9?CzIeaK|%+uTBo$E zYp5FbLeL4+UQ;B-?M7$oh!=l-8J{I0C{)r!6QVh(XJh!6nfOx-GW4J+t$1ByclWL^ z5Pk{GyWbgkhxkmzeb?tEMEQqYBS*#2ap0aUrGMG7?8J>Sf9Of9!0-WuzC3kC+;wo{ z^rY%dFx-XAK9qL9`x{#zAjq<5OR}SBWmw`g|A(O?N2M#bCep%~|MG8A5O=2TOv^`d zv_JB>G$&Q}$r(%OUJ@W>XnLPfpBLuct^Cl*ZZg8`PUH@J^1CZj;v~nz#}9Zo9l)*M ztp10kd&yr;yAK#l5)Q$(qEje<2$!eW5047ZE!R2J>cw23-5_ zTht^1$3wGLaUv(6R13uLfx?hsGTCn0F4f#zLEzU`xLDDz^Il@h!tcrQ!o2EXqR@=- zBHB^!@V}O6LMj7VT2{u#JkDS&TXif_cI>Shp`Z{snUKF3Z zG79*MRh_f%MTXf)T`iMlwXW^$9aY-6_&%aKFe?OvgoLCud+g6ZyB-uVyifZGcE+4j>twX~s1OZ9h7e**|G2sa{-JJNl%Yy@)2VAEfbWK-@+|A>RMV|tHw-`Vm zAFg!WZGN+kL$d?taQutRr1JCyeLnDQUwdktr|2q7n&25=r4Y#1Ec5?K(SF<26up8Q5JylAn2V3^z|mM; za;q+aLw-d`+2z+HxzU!L@5}BdnoeOyAcN!Xd0nlEBE4_8*0q%*^?PUcbj;UdjoNik z?}D_F6Zmq=n;J~8p*b=-HD)2{6hd~Q6sXda@$+D?S3_E^YGA^hP)LObn@diUEp-M> z!8CGvqFw3MFkI{4%GvPA$tyPr!*($4bvcn|-PZZ3177Nz9-d!2=Zr;~Qsy^OE&-@Kc}}=fTL>``o0S}hA+M;!5N9XT&x^ED!XWuO9emRdN>8!9~1%R<85O`nWvSM z>B;X(5np^ z92LJiF-JTk5nIm4*88y1$e5gMjzOM2XMMyi*Le4-8{f>9ilEz?(q0q()2BrX!xTb~C zlC8OVg}%Cu5oes14{Oh?*A|rMhMAjBz0Wc$%$vA67psyl`I;Ob4o{pRm~hpXC)Bf3 zYWSJ1Nz(4{DV4d~m)dKvZ=2l+A!!hwXB}-Sli}m+qd1D*cyb&_=ZPT;P#rMZDUNE| zm~-h9hW77=*T4;E9k!UlVux_k1tgDI_ zT~HP_{5Lm(N{V={^?cURV;@ItD^Ug2%wS=P1;THnKmDWRxL62ot0f>K0+9RIpAx~L znj|0H4uFvSRyUZR+CWD_0&s1l{`T?MEu@4JIy;wau@|MtMdUQtPe4VZ+>D}5O^nt% zDbZx$`omK^u!-_x#z+jThsprHn}`mp0MFXq6GLu;1C$eJ$YJ>@W<|W~_1L`VC5~E` zy+8r5ox#xdN|0Ns{mYnMxA7a;;8ADx6!us0zj-?as(i|D|M~JLD6a8M%+mgnSHAEc zNCXEKPW4^7sId;`d!h21-Y%YPUd)hX-Ta&^2vdP?2mG`q`F6Z02nP_zfgC;$3Q!aB ztjrR5rs00mH8nMrB*_i3kO5*}sxH`26~C}u55Sn&CPcA$g)NYhyASzEW<=3j3cy~^ z;Evn4^#={l7qytlI3)BdgUXr76!9CkqDc?WN#VOmJ`xLAU-6Pe%rgxB^qX`4OisJT zdInl1M`LPyapy05+si)_`jvSI%fpwD zDC2Sf9`x_9`U_{>2_k(+gv==!poBU#(KSvVc~*x?4|CRTb|`ZNXgm7~?ITX+WQ${k zyo@K&>aCiVeaD=PU)ffyvp+p-0i-zi;MR@afw3;h=zgLuv*e{=;oFiSq*|%3F#lU= z++4a&!?ABl6?OK~4D_&JQ_L%j>VGbYp6&ZYed5lZpO~Y`%%A z-;})33#e*izo-+zvIHE)U?DyVk2?vlQlJXPR+DL{22|{}!{5VoZ0W(#gUlLM&G2n$ za$Sc8n1xh{vruROvETNg3B`#0E~Et7d0J;FKUG3?egrPir>Gk&2I$@T7qX2tf+}3IaLBm;dJw=-+`8JVX9BWbEe@1EwbX-XFG1Zo-E} zKnMoou615IA~y*#BV*%p&(^OKthlm|_3!NDARwtLNl!r2L9@>8t(b1df`M5iX{EKy z$Qf0_6#pc-3G?$%`t$Pyv^%_91|syCCrK+jNd3;~`SDGL*@OX#b&gMeOcs&!1Kci! z8ns0}I{W94{GBw+*{(28-|_vT0a>#_WutahHj4Vg15eTZt0H%=jfkw;^z*Czs>T*f zQU~Y76E?=LifPw=c?p4rhd$0dRZe)i#Wi;!*K;XzV@=w4%IXu)dhh+kg~gfiG#hX`!Ng7O6*$gB_#O zh;~I+E?4$j+q#WZjPtY#f4o!`j;^~>O*LQWd7qBl#Pq#?5*o-dfA-0K zWYR%y?t7xj7T-V-j|X2{#!+Cm%*cn^!@d77&4@i8Ox(|&4o<72uw!u6ob zG%2s;V2jm6q^e{#Uao#D;MUM?mnM-QS(LX_WMpl9oXj!ee|2pDo@sJe!4?5P5zRF7 z>K@6vMB5pQ^9V9z)d@XW0rG8fbhBxr(;pr)WAAs-;e*%kAyJtvMT@CzQ zp%WpNDnE~F&0?w1@qH3E>gAwnEW2l0##8^UG5?zyq3b30^~9;%cB+2$m~>181$5ZI zCuLY?Wam%bKRynG1B)#LQ3DweEbTLG-sVn`N}oPc+j=aW z{_U4_h``Z1)(ZV52$GZt!Z(8dTa=5hxqcrA1>v~T$%!R8r>u(v@!k8kpyp#b5A}14 z2ROIbH`XtXGbr1wve25h+tq;r_j1_oii&4+HotG_-0oQeZ{>+`6J7*)e*mz%ai^1T zlLmJ6JpE25iKO1~)bC-Z>>9f`WFB8$VnnVDV>!wlyd--*C40}~5GG7)=l=5XrJQoZ z$0T9;a!pA0h+92m?P~ZZ$w<_Kg;#A;zuGe8y=nZ$8r=pg?1@Gjp2|h;hw3|)%sdR; zlAt?6O!?n2XNd3^myOQsCA^}Sy|$n#6e7F7zqb@pO>Fi8|9;QlHOEnwU0+(lJ0`$( zP|Xa^zr?guab7NW+p$<~=Gz@N;(yZe-8T`1jIm|a`Dqy@i?D7vNq-mcs@#p6lsXg0 zs?ka7aI=|EsnW*Lyh8Z)B^E;1LaYRdVEnCac%f2p&(!sV+@3LdIOLyb4qFxA^N2Ny$ASHB&v}tm)KF`pWqFS%Ovr2mJoD1hOM&MAMmP2GB%goQM6~#KOd|X3gbJlzF#3JtL67A0d zC*EY7fz8iNhti-$;gJ=howhmG62z1tNnE+&Uiz=z-xaRti`&Zr6~a7=){jhvL*Nh| zX9x^b%Zn3zA^SRf?te(R;3Y0pZ%-EZP&21^ctc3B`nx-0CO0G4jaQ%2#QZ7x zcA*UIV7b;bf6a+FFGRB*9jd1aU(*dp_N#BP)N)N2Dfyt#N<=r(BckEyedlL+>nzzu^VV) zCtXN2dI0}3=OF#+2tGcc%iKKFWVB*`Y5i@`<1{}^X2PPb+(QT)OQE%PY@q&Q8x1$AOipWu58$4p$VAQS%_|(5Y25fY+tLQ+Hra$Juw9x2!Mj z+RD&x#Kp^GV&-%oJzRXJ3Y^x265VV~26U0PGZdc&7xA1$bScJg*c)qIhUty3r!`J#l$ z^2QDH{t)xN*Rt64(@=lsC~!!eLkd4@xf5|}PBZiSe5|%9d0riw-f0zx!yn98>a~B> z@++OMKe`kNtuBC*?{=$Ln%a{dO@CvbSww@T3b7kstP_?77WvE(rgxPoIsXatVpUu7-cz}-f+IjQzF-M$3 z^F@m?R=3KHoMei#DsA?V53Acuy=_(5pCjaD1#AalRz=%K^+LFFm7$DR*>c1$@RwdWNku zgi-2|k!e1VLZXyG>rXi1mbk9Gm^q{kgW@k_m561T!Dyy1x{IcK4ZguRFa-f`NUC*) z69e`%7FLntjm0p*PKiAH`T_1x8s_zq#Lw9;pR4ZtDkyeoYiMnlEi>5S01KDWhiQ%U zsFuRQR>~P#srC;WnAG-3V}HAWtD4ZN^6GO96MAjU93_N-L5<4?$1>;IMOR-PORL&) z)@yPpj6VI~70pnvHtJwx@Rhx1R z+!tf7#F6wXG`zjH1(dD3bE$WJ0fC}`5~V_Bm#~1lpm0p918ckZSI>{}8_UbA7(VC$asT#A)#s=J^c`AP6J_qeL= z6C6MjYoN3E{j>px+I3y#i|M{Zx!2F7;C{YIp`@I^vZTGTo3h<^uKKOeFBbsIh=*lH zN$&W)Ijl`Sx-ItIMjChs24HN3NO=s*C9z2C8ZWAF{XDRh<_fQ7@e;YcL+7*N-QG+Ofw!l9jq4K>sXCN%e>YOQ z_$7AaC9num#a4&dKdEeVCe>>>JKMu=7B`8^PdP@WW-S{K0UP3sJ$pHVGh0tJNcqrE z9ofVKMu@Sr3`LRYW;Vq^*pP%Ah~9`^3KssbNVBr7CI?rxVbu+aYvo*g040F|Sg^3L^~l|r{xKD(fdvy=bDQ{6_*qv$d#R^z=5j7&1m!T94m{0j zqyy!5>`EJsPnIagH_tM?Kl zq0WM^_%6S%Xt8Xc&N?z;^ey!gwc(e-c-783CME0JO+cXs!P7dS-G)(-95U>hY**}{ zn?{fJvTM*zrfKi^LzQ^qE`-Cm7V*z-Hs{}l;S?=rvP$1&jBgGmC}B0a_}oXlN9rp( zU6Bi4DVfR~E~c(z#@e*s*ek(zoTI`|{+OKSKyu||SIHy(vMA>ryUcEwE)ENSJH6aqa;iAA()K%K zn4k*SNpo23G=!+7iv$`i9kaV{E9|A1H*giOFVGGAY`61#&n}{Ju&p$+^s{>*aeyuw zcA)2+L6XS3ZB@*L^gT8QoR9Ge3JdF1K$jGfU~WN-l;EAO>nboDL%TDd6!iLVfsEhU z)Rx`8(xdE=G0F3>Gh@{?Q@y@)xnm?qoueWlZZ|V#4~J$BD>i!9EImfm`ltpNuq!@J zJNWxn21{m1M4B$yht{>maZt6fe@=+QruIhh zz9Y)ByV?2JH}y3$bo2}EFo6TzNsfS_+*f%CF7;(7g9D#_XGNQL@P+PKw4O^Ft2X@W zBvm^`diasFG43kMpBEzqEZuS{&3%Q997Kklgxsf(R|jkPGOg&t+%?0*E;slrp-`F5 zSic&g>TByj4^U zJY{mCrv}I7JvDk;WJHO~ypH`K1Bx=hpam()YEY;i?|&2UVo8!O4!VE3Kd#cL5s#wU z5C)+Kow!)|0VlAxti*-fH00he&A+!9&WytSw0R^Io(3UjhKba%P$y6?^wB;&)Ni6E zd^6HfL@uCo9MKH2C;1QT!b=*OVy&S3mCnyOxni{`oS0nV&5F z8@pFhl$jg%`1t5X!It{avz`@nQACYw7B>Bd(|cPUQ2%P~A5*m4YQ(=N9wGKaF}yHl zBYZ#dAAXJv^}o%i{-00y-_Q*I9Se|X0BkMEX9`goOGkoB<1Y4>2S(tOV*!k=xKaH- znyCRv$3iu8L#@7z{%2(~BH;m!Aj)YQ$&7UVzxm|t&wo=42v&)5!1y|(VB7?s=k=6V z#9V68(o;jZ`uL`vm8R#O!LN9>_Q2KlM=X8bh5b3N zM+wK(0JGKYggiHc!ka5caKL>|qX(^0*TdXXW276L0YsqsOH)Mg!Y1Ron&yo%jb}&h zq=2QK$Ty575lWy{zX@0WXjFyZRVe zBLVO+WTvMSL5(xNXt4r|3tNYQ@(;w|tk=>fOCY03KT^HLN| zCaxL!?L2VI$HMxpuU~ICovX5`(`M`qPojI<^wAjuRHpRklpnwLxvymJu()wKQ=-RV zeMU?xi|e2odh%25Uc!AhWGTLNWuzWoS;ACF$+U+&E0Rvv=HS_f3p#hwsW|ptZn0DIt}R75;`XPX`(45+)AMo@nce-2d3&YpfiuYS$b3>{ z%JaBT`Odb(ObW8$+|f(ZwpNhmaElvlgFoXBrn* zp+;w0tL+gtVQKmnUp^qin(232%?~sBKjuBr-nwY1raR2L^&X%cFz#-n`cnbN1aZpuiVU2?iQ~MpIdj{cjh{?-tG<-)cl!Caei!cTz2iO zRauUUhp><`209p@r)YofW+aFS09(_;9S6dXn>S?wK4k;)8N0l;%W-!Zu1>NEbf=Or zs79nlcYVY*(^G?6yL*SF;q|DN9r|xhw`-*oi*79nFumEaLxsk+ z7Z#$g)I9a(Ny@Q7B7oD7MBrFmjoYne#tUfAnAui4{^J^5{gSR!26nVgqpNVO^X_}% z_KUvlQh&#K7(q;m$eKaJ^LUSTuVm-;Y6OrBjlcU(4TOw4YkMOkrzyZcJNPX2Wb|}3 zF+h@0i=pJ3N+1}BroZ5Fj`r6@2AwJ{gY&!PWrT|q{ZNJQPduA-@gqoaE}B?J;SlJi z#AM@|i|JR5SDjz)1ho9DFu;@U;b`wOQPSah@t0|U?F6)@aKXtrh`HBLNSlQ!5dxXs zW^y>2C^HWj&spgm;j|MK=lYDA(gDtYo%9W6GiRG-I^nKNqvEVXnzgqzwo zQQZIzn9WKWnNV$h-i9;9ZF<0MI0O^QXoSaZbzt_q)`OnHXDpnvO$sxceG*s<-9*62 zg!Bs=_mLgO!V5}`iJ8&<-T@|l#R6(7_^GBisGtZ^iIDsj57L5W96k$z5UONIB5QSU zcX#1>J5V(QhY?`=rBN~sa(0-J>z7Q075gsQ(Th)@bErB)>@>6eyTb*XOh79dX9~(EI&ra8?c7KJM3}71B(R`fL zsIm-o4!k~--C7Vsh2_1f0~il}NU}la#T}M_mo6V|dWfMG=KV=I@+I&(IIl_e==mz} zyA~6kvcf9Kr$m#=#pyy~yxZw;PXt0mZUZs2XaTCXrK_f_L!&Lrg-c5SZfV@8`s7+Y zij`U=RIvqITt>jH(3p>}x2r0ab0fibh|Rg_^$7 z{^c1QzugoMADp~%a{{VJZAt&vxe{hV5XkfXom_wyOW?q-z#j(xeun?~o4SO*^WP>L z{<|pPpPc2ta{>Q5QO$o7WW>P_xDh;a@$YbI>i=IRgnl84C{Ql zvuFRfHH;@Gm*s!;o$zn)BlG&77;^*`R{KuspAY`%$T2W5hW-j1bgIw?rW$rccqf+m zL3*(FrDawoXFAF6X209BI7-l_Xd+Zh`>^i3qOWfTG)wv*2T_S;LlN>6;H3N}_W zO`dCKj-2(p-4aE5EGWCOwLe`?79p#wadL?nuBnM4T~({OtUE1C70o+J{c2C)CE;c9 z#%LgZA%?PtAD-Wb;wpk_-y-0KekJN5pu4|#^X5&l;~vGqa+~&*6yaQBaqZTo)QkYI zxyU{!MqzOXfZo{eG+K0ThgR3Sd92s=lbZsWV@JV#epqN{>qoQnRfSOp>-l@jC{E^) zMgUpDD_O!hp67uX2oIJcDaYM!H zHA2*yY5xi0u&|JE;NxYD`M_q7bouG#F9G!OBxdWM!2^AHi(10NsSBgV``Czg36KcH zw*)w4hEYU^dTq5Wc`fUvq?OX+B<1=;#5;KU_LwnerD@xh{tfar$zQeGo_;33`)Rc7 zULV|LXLxZp(7qz4zQ}nt)HscPQ%h<%zcj87hK+If^lP?#X+kmZXKVj?un9q|@*;Jv z++<~0bPwgZ+1>Bchm53vmK!V=mFzyt-CQu!cCDEsH!^>89Ph@6EO+RU9uHflZ)C9* zR9Xa|_9Pv+#P%^8wVY}%y|2hMoZq$9XKW+^OjqW*iWLvd&w|osSxtR)+Kac|per?4 zuK!_XhDj3XD%_PwDidloi6yXuR+gB zrf=@Ff`>ZB@SxPYwV#_jrg6qb8zaVLMQD76WU8I?7+^~AHe}_(flT{&n-V#V0MEH# z+Tga?Q+87J($M@EmPZj4;;9Iby|<~@Id%KBsHVD48eOAFuMK>G@Pi6|zr2b;3Z);j_J?)8Q><#&5rZbn7)H_G&8EPDha#jo_GE4rkc4(6+h0jVDTkf#fcyA(Y7@&eru z&eC48QYxs!im`z`ferx|gS>jwfqu)GM4Si2xuG*aBOybFv7y0NDS#X3W67mq&dIZP zxS(}<@_Acq*-H|%tFo(DwLDP$__%kI2|wJdHI#%t%G{SCIdK%~{#$yFY6Ocoj};Rd za0>|Z#2CoWYE9o@Hqo`;>aAXiCCMlRyzLM zSO2ulQ~jxQRFdL2SDC(8r?wQqS?&0gS4B3>5*pDLnKoY`@WknRpk>5Kek`?C-1TwG z$+`Gbayu$*sc|;@jFkSoA|trPMpw5nX}LE~sekrpn}2=%N9MFLW0mxHF5hJSHWv); z#k2&fI*8uG7Mf*BhO=>-JQpFUyU2F?%4DT7Yk1s@6lKA597FWe(br_ltvOp!&o?t) zrAX2FJEa>wVdNdnzKL`} z9iHp_LUdTFiyHvqqZ<47@sgHv*(p{PF9_-++Ra1 zTjeKxDjKu5MtCIMnnlwBYN+_7~LciCCccd6GoKi zJ$kfgVGLq|Ai-etD5H)!SKtEX5?`k zA`o@lfAo;NN@OKwjDuoyD7)C|Zpj%#@5ugSdT-&x5m@M3njOUJH!@c-!w!7YmM4o{ z=3?NS{w_RMzpoE24vXi~&ALiZidr!+Gdj)+P2uzr&_iJL9FO_4!c>6k{3sg1o;-*7 zX!n+y*eNh}oFZazc!fODaLC*%>9*g?3XK?h(G>GfjRFa!5F3v4@nWh$msC$DO;$^Q zSB53eK`GCBi3%GAY&|9FIJh#o+@IIWa5Qu@(wd;#(yZ|}+?RSidB?T95Eip1re{}$ z(%oGA{HU4U;%g$#JnpOIz^l7fjgy)q!(Lo9LNOX#qcXR|y-MDh7dzIrm2*@s#JxHS z_g>DvXyjMl-TvUP4_j?{&EXF8*<|^6yWX7f<4f^s{(BlbC^Fi_-}iZEmO{wo$WOP$ zeBz0lsPU1Q#qr{Zdo4C^j1I5XI}Bjgu;Nv(mjJPvkHFBOszk^cla==do3W3oa2CxH z&DD-p;a=J$CwnzEoy<*`s0u3!P&l{jhB2MtIqC=YTv1bvCUy44;~dv6!$vpqzJ>J+ zY*-7#Xw2&T^v8Hdmme`9%VVSy%*K?jC#R?fKtfIym!p(Gg5%TE&eFUr+7D8@GS}Yu zR_^sE(Z{LoJUOQQ^rscFat5cHQwtTWj-2%AwNQ{;JprkN8?m+}A_c4$Rr|0qN8*t(v*!0f-pAql zukFhjXQxMCWFo~m9S;>WxagUJb)EELBiL7(pX1CPyHYb?4ue#5-_*id+hbZPPS;aW ziv$ZjCXhyKNj0PyD#py^$j)-H$a_yHFZsAv8SC&!k?)REU-DyFuEL!eh!(CD{r4i(eG)tNuPFfqszPA;&AL@G!?*0F0aN5Z4a3 z+n3xcmRwq))O9&jzop9(-LhFVY(G>gZ*CxY&nFqv4V6tMfGf`Qk3u9OP zjdNa^7)Lx~1KP;Zvw?1Vi9WB1^xpmI!SY1C%^4iXe@E;y2{$JN7dL_MV@zqk>tL~W zK49{EPE*VIir%kVfgv1ew!ptl?*Nh6M@C;`pgk=q9#SO-A|yr&G$jk-c{Z>}FM3E! zYl{`{)^-|oQJ{fvG5~{;v86~UM40aV3aTnhd2@lHAkp7J9Psk1ln6L({>K5@e?U|d zngCEAGZf#0hr{0)Syu{b^c@jqQ>;`zsm0so1I(UsRN-#~kbfkaL~JxBcLg(m{aQ_3 zF2W-V*Jw)5kjahD82i4m2+$~;1cwK^&r4Z)QiW31pv$Ax+CKAg7rRjzTU(3;J^kES zLI_JSF8>3D*B$Ltd^Tb8ndj-V1#1z7SW(E`+K#D!j7Z8RhPEVh)0mhId1{WF^gvcE zkBz#)tB{sAY4gW)_QXZwIE!Sn1=gp7>p0dX4?g3XPfum$|uNElaU37`mTb$*;RiolNi`c z8nLbXoNwDAH@qP)+?io2{JeQMgViJJ(utsIk-QpY+~tFO<+BaZ1RQ{)?)D0OW;0vT z1Z{~9UhA4p+@S84v(Z6twT!E|Y$TO7@uFi*7MO+`)rbU@B?q0GiSp}r+-rL5%j4H~ zwlc2!iZ^LwU69&&5MMfR{G*cb;xADB20q`---E>njt+qv6TXzk_z$>+cLs#Q88_do zI;=>n{BeznfW`F}7aP&;WKoilk%xJ%t`?`8@r+Aw=TSk&t(d??m#^RJP#Uh5E`}{NnEJ*f92kO0rDmmT!0`M8K>|B1EmUS#81Y!nx`$_CPzuksmaL zIVA-*H4NOmz~<8)>>$9VlKNlgpq5x*5BquCy(Y8JkI>ex-Z(w2pF!`E_M#_bUftaQ zj3Tjitj8FqX9mkk6wUkq0R6f5u*SsLT$QXu!I{RDYsTlTgI3bUEokt{=9Pt=o>Lq@ z$J+n+Y3|YZociJ5^)C`!)#*ojK_Go1?6rB`L5=-XZXoWGS|9iZ@6tAwuFP(0(ITCC z>%xa`N1MSG+Yeco75GG@INv29oSXNp$GZGaa+yYYP6?U^ijw-=clI61bi*yrUkOnh zVH9mpbD=ECEYfWuXt1N{t_1S^(o!8jXEWZv0CLR&Ze>(Q9RX3kUd6tQ(D%8(Cw{n# z+|t!ap{#z&b0a_VoP8Ag%J{(e)wwS_;ir_7e6+ic8qXP>X)-gTAT**x->-!ZIW9Ue zUvuOxpDVhm#;2o+=U%j;bI|@P`1gV|VBWtT8(E9FmDnUH1jTb6WHM#RenpVra*@qy}KO6#tk}#XNzV*5VmfQDM2igq9?%B9V zWW&Tu{iBq^^x(v;%;65va7I;%A(|I;s;1!V@Z8FXO&X(6{2eEnL>K3>hu?_T>YFPm z#O9oGu?h_4uq-{rNeMs*uOQ5K6^91%30+1P@fEH~@y-9BJzrTwx8uwjC3+#3jt@;}QYBN>0# zd;<_gnd6Ib&%p1CiW+}@x>m4oSXT)@@_Qx5VAt>smuh!9CE{kT!CsMFk3IOxx-`p0 zs_0nXU{`VVSym8XcQ@|-a8 zyh($5%PnamlY5mEc4dyo4r*QK+Dm@^(-z?)21D`3(ASVNXL8Pvz;UwA+&fUtdI}iv z$NY@ePu|X~Pa5h^1h1s`4AYQC0RHoaKmmaKVt~1!ZVmD7T?Qi#{P`$ya%EDY6}U2D zZsQjbd4(Cr(-S34(5oG&m#2WF?5`Z*zcEJ@F3_Y`pVJnMcq0I8f3&?_?72`_nFCbF z{*7(|Fx(8*v`53SuSlQ?gU{dJOSD=xp&d@z#G0P^Ri{eAJ$v4vva_>seTmb)>rLhx z!FbsNJDqefP_eD;@sIx6&|l^wWLOhnP4fy5kgESm{i5cEXzEsLCNjKc-gJgD^qCQ7 z%S3>gYwn_dlL@D@B`qMb{TE#LJ6Vj%8IF0r)i2)H%=jstjpyIVPjhhZ9n${!olE_1 z0aZZUg;ZSh;xh?-odu9h;1{wAGSVUZry${<^(6lbZ1%}*P*2y+DY<*z!HlGWUSJ(< zd2>-wg3lg=Trz^*LSN?iRc%FLssrw}I&72b_US)Y3%KCH&_zp96U$qmbDxO5Ki4(% zh(8?D)*{itxDis{X77XLLoTJS%rTk2E_#PLnB}k`64la5HmMhgyO@@45?oI~=T@I5(jH&2z&6$R}2iqpc*gHpC3wM?ajopJ|cBe;8xGDx`My8-ZywxAJ~w zLy1%-y?IZ6sV(#QZap-Z19|=4vg@dxz71w4IoPML^9o&!ZvT!C|98n%*vQxU&-rUs zuVi-THvh_eZ$ zsYpXyf_oQKEEhTN9=bD#AQ4Baj|9AzCyBQSX~=#+C|Nw$17zdgm?>4L4D5qib=mJkq*i|)&#a7!O1n63-d*KVdV zo#6LqD%J7g`>6vJNG2NIx-e$fSFT+(tOMs~L#n2GdIniJd$`zk1-1^WJ)rl^OOtCB z_WJmv?lP4zOHOe$zg3^`1tdbn)5q3?+>@sv3M#4@jTp@8lmBH@5}?QltDB&5KDV!= zdaKLf=mMmxf3aAfe2C8u6?DQ~CB;kaEFXM1;T1rvk{~!|2#$1js0>M=x3w4a-%tAa zeUF~JgVIIDdxVXj+GVE6WG`2{@@QDGVk#xyy!L>XuL8oKCN^XaWO8`_@Zi`{ydLr} zs!4M5iBQ#{GKBUlunzV7P{88lk;52FDe=B^{p1G^h`q?0Z?R9sPsq_Es*)JBMD4_q zqJu<0le2Ac$yZ$BSnk&@n>e zaY!-h-urLhABsGy^b8ChwYK%@tF7z18Gaq9D@?oD=U>!1yIef$L>aDIZNu*j$fAM# z{-}Dj0>Zqe9p%OVUhTxBgjMg_djUGUw3CjE^#1k~Kq(IJD6Lt|-m99N_$V8Mw-{+h zWQl={SfCpm3Z+jAuQyIwWJCB}l_86RS#jw=&=8G-iaIlhfQ)QQlVU6;@ITL;o|*^b z87^Kg6ezo@?Rj|G;*?8Blbj!-V)<_BXV#5f=NeuU)lH3q!CKp+@qVAp6^cej!WjZd ziGb`2p1hFztF$(@a6YV3O_zx`pHslF;Adaym1M6V4MkvbjrvQzNITY)K|2K7ZV$)Q zj`gN4;6qg*76G1WFCXwUKyp!)m#+E4$|{<}oGhoTY4%0&+-&0`KVdJBZVTs#^=@aV zxtLtM=Hjf5>j;Fcm!=;lj1z2Ps_kQdswgv31^3ra`rOt~q@YWZ!$GFNBBO{cPb}_Fi`oDtjWe@$kOdVPQ&Ar6I?OY%q6+Az78u( zzrB0+D}Q5~a6H0qpdu~p4ojGzSBfQ{ifadNT3(lg`5T3Q&Po0}6tVPV%yn(O9@KR8 z7HHpyu3`+#w6*WoIu$vt`@QI#RG;j4l>R8Iy(1_F;n#rkOnz2$lN|uc&}GA7sJAIt zjBl!wJMAIpW*q{QbLpw~2&5!njsO3m8wQ!&Yyd?t7VaKC4y6Kwcb>^cr+Y z>RLv07(3YXEG}F!{P1DD8;e!kkFNEIw+k@_B7lPDJRymb&mT}^g4{iFT#{-MHChHg z5gENcT%;u+c~~p#!RC=73S&{#*_ITLNisnK&7)^e@%iTckNTM5yB`N+rH)$3Ja(NN z>uh$GflFAU+3|V~2XwJwkaTSrs6!wv2VI6;5NJcYiE&sQLO+Sec}UE`6rcb8NuB8y zv`P{TdJ}+aQyYOQW|l6U_NJvF*;ZRgt$n#p@eeb!#h}yDryd zw?~%siVLm?Y*pl3OGbpHsE6x)*?szZ9>Va8pA4N*{M$d0DHBVNc6&=I*+B&$K#8^c zVPte96uK#`;t?+U2kSoW<9Gs>2tU%UR-i~qikYBw6CAbNGn2gC)l8TR3O)e2q=luB zf$CLB_dDsd`(RWA?T}5j>;uD1Y)XX~7Yhc4Yl>3M+=r~dKcH8y+j5s({VLh`QtpN9 z5Cz~jyqHbwT5^Uz|GaKjW#Hui?%!g(XX0X$DfHYx)Nx?egED2|ws51Md8wZ0M-)OD zi;!MPm90d`o)d&Zo_K*b*LWlMz^Z)lh=b)#e!77zxBUQF!|I_5g!KEW@BLF{)$VIM z^!?%vSxAp&i}Z{ia^EYw+A_S-Cg1w5zm4+g=spVGP@AzjKC<6EH!f5oDZw{!+}ax4 z_KcvD{>clkY=f+NFbdLPc^jV}94F_ZmQiD6q@Elnqdn>11`LvUOzn_2&qiQ5z9#0z ziU95E*Uo9V`|U60X_4qcCxb5PihJgSfvuM>Y@NFh`cMD#uM?}T)7@Vzl4UzRBm%N| zW+OQGR)1|V;dY@@dD;yp+5`lwF~x>w>R`a6v}Q!8O10F-f^$U&)j(MqZ)jb*Hnoc_ zWQ~LhHG9toN;72V-VYIc_4|;7ZWqF}Vd+LYA&(&zS5zR|H(*8giO^sm6|io+lgQ1R za)91oDGDq0j+k5MSyS{Re$7i~vDB_i~(I0d%HPJ3* z`Sna&;KCw5xO;J5>YT>Y0uGPN-pj7bG`@W*h0{g+v8<@0=wKN${0o9uC<^kZ5I?tG zy+-rs(GY&|=cMy+{5)pH-P-=GvWgmT$8*~vXZcxIiI4A*Ti&n|PHHbhJyv1^@2f#HCy4e|bqck(B63*+ zEZXI7`>)NWT3OUZjXs$w{Z=P&VjXVf^CJ)`q$sLYYJIebg&9{%&K}^l z)4W|+rbX_IYqbQd_F#e&HwAW!;Iku(5DpW^rwJ}RQyBTUa%jiR330b9Gle%+2YnYE zVQP~xDF}Uyskn8x>-SQWz`9<)5?DU5N1a4bcnW@cbU2&GZ6{y{Gn~&G= zTsnRasNTp?0Zx@r9dvv6Jvb)xDMd3ZJqE3t^Gq?z*6fgHhlLYRxCGS4?0~mP+1+ci z+bwe0(~7uWVwRwMr1W-Ha^65im$l^p(`C4xlHsnmKdRO=ll%5@IyDaIFYrjmQI{VI?PyD?|45lB_)ovpfp7{y zH+9_rniz1S47(}~^lGwer4DIopu1(c*)#*Q_c+b9Fi2|LukQJj`QfYZlvtm=q$dql z=Psqn(Had?4TeUCJW| z@gbV}h<^oBnr`^ep#gP`ud_mzypP$L3qa>Me_rY2q)8)9h+7{xyhw&Qzp;yb2|)l& zfzh#BbHqV~rfZ}9HB!yKQQ(F}#CrFF+B_j5VomZJ=6M(rndf96uJ$?hIrw04xcJ1m z2kwSupiokpwtIFDfbEQKO8yh_aRVD7Yv`@|;>kg#z2Ft2<;)gj>A6=9lPh>q`Jv@W z0oCRxhep>-*BA#qzj&flo%;*vyeumo-^W>8w{{tHN<(>bH=IqdqZI4O51(*rSnXvi z$#j}o6GbFpp<=#o@=%nh^${Vf%3<=V#*lgrD9t27Eoj);_!$QgnSX5`x{r3Z=Kljn zIAfH$o+9&P_X0bHvR zWTUPiHiVg5AE*nk>+!DPvzMwbnDDPZvW5kAKUM=#PAK+FF_efkeuOAu-IqN6iDET} zG_2kpam=p(L!U`RJkvadPezE$V5TIcn`>ncv=ma*1i5;vL&hMsnuu<1LltkJyk#VkpI^rcKH% zAB~~4@M?{@z8b%%(rKvFj1F`$f)pH|{f&+Qz`{OyR6#VAKw&n$=cupE9us=YXS%jr zX8_4kRiqFiNcrz+fr5SBZkPAzed?H{9}%3n51T8J-M}Zp^ME)RfFI=lOLO*?0AkR> zrGOGO2<3#v4*VDmOrsD;^LaMhP^w)t8MwDd-nvy5Dfs*c7McUxj0P8rLNPYGhD_Zr zn6qwL04$KDkQhYT_QF!29a21Ze6x!Y90JN*^ZkvM6< zPX${sH2&^?`6yC5gl<)SR zBt*1SA=8IbyGS9EsgV(=^`h==?k*E>C50%Sy;gKHg-C#fpL*_e<4rd#OvKw-;gKqsA*{m zez@c77FZGvqBpX) z&x$?<08Z22-{>KtA`OxztQEAtMU+lpmk!o_+7(=FyYiZ`MBxaaL%%JoAP-enn)#vS zC+7nW--bjtP0iVb1xgp#9O&E}VE6WpW&se-F@;`KTTI=L}ftgS8Z5#)0;# z2ERX_Nfmq0XWQmc zNqI7zDRcs?m)0&^$iBMBzE*0XO1tVP)gytcR8igX^1n?&8e~OF0@we>3IA7$7XQhv r0FH#eIjqyMCuc|}3z@1_>-Q6CE?=AqMbC~G=`Rl-s4JGpn+E z>Ae$50_5BHJf3sjfBuV+0Fp>ufuv_J7gJ{|M^`Hcdm_qf_nCoolJj&~2S+bwD+^0k zq9XEc2_Tj1cd9e&)p^!?u2yz1B9TM#YrvIj=U22G%w0WRIm3vI9SP^zum3LG%Ei?7 z6_C}LsQODq6p(!NJX!aZv%QtQ1<@C}#dkm&@qg}jb2fz$VF_>7{$!JNu(N~NyAmCA zCo}Tqad=9( ze!93<<=Fs119klS2%s^6sH>}Inf{#u{P+Umm6DR$th!_F`PaYFzo-bZ_5VA8h{*KG zx9k7PL1ccL0`l*3{_GFi7ygwHKob;rZVi7Q-R!Re5$Wma&szT?O1vaF@lWyHa^3&8 zTUh`r`{#HmcYo&cKc_@QLL}Gt{(YXPq3}Q36aMu7Q~Nlt5VC*YaYRZ^&L$BU784g2 zw|vtvAx_bM1@Z{Fzfb!ykM zH@YrMdcq!LHTi$v`$aDrXyupNHd{2>Bk=lcbkXN0hefBpS}3Q2}@t*BqeHZ&O|EISereYV_ayMmo+ zvxs*-1=m^>8<)U+WTPba%6N^oS8d?#<%>PJ^|$^m=Vp`@-rVl9L&m{r6TSlN@UTCV zh{#cc*RugPGDR55Cg4ID?bpB~YmBEYopj)R>gwf5nN*EKx_q~VJ z!m5k5-f$mV^PaQWw9*M_&|$9JEG{q1f$he+1RE-u@mbxmdQ8MG^?JG8O}_D zIZMx_f13H(_Yi!?rJlpFLhepj%h7z7h_L3IJx0%ZND5r~m)7!til?~09=^OR4&&+h zoh2be_@^cX{LKxbmpVuLKfR;~6V=!kh8fk{f!%NmXW50OtE(|1JmZ{ z7gOVXTD@2QTZ@35GKq@T)!|Y^7E7fk&b8ZgFd1BRjjp%qD>C>>zH<@fFzh7QsIzYw zJjj8rhoI{xtvDf~N>965Z|ACjeZSnUWtlF)o;f!uHSIAM_l={Q+b9`;+KA%TPcAnc zB^$aGH>`T~WbaYem+7&fb!&aUN`jysxd}#2`dQ7F{#%WgcRqELwz3|UN(bfFe}+o1 zR=Y*ehbX8eU7D2PNif1|$Jui0`D7%E>a5JXof+(LEo?Q>ID5hY%N6$IhbBBl%qGPx z_7P6{RE63v$sGQ4>ASRb!_kTNYajx`V9$-gVH9hH*p%@EX(g|F>g7u7?qk5fZh)*K z1uttmq`^-ubEAVXMkczrDm7&3V|SlV`x**N2NWVH8N6*as%z`0i0DM2pPD8HTXbBX z7;>YC?%hAPs%qUSO=D%WxBpuIWwh8Q`zfQaVPF~%`bHXaeu~U%UHotR_;1-34!19g z=QVx^C#%Lq*1!zsKJ*;!xK^KyVRRzdgE@Q_8tX80PbMTruX1|O9n1hCB5j!NGno9 zPV&vwE7-r#;`!0l``Y7FDh=uYJ0wX>`@iR-T*JZ!Z~o#u>8qDnE!+McW~Bz zr}?DU#}|s}=JB@=3QKIhP$Tlitp_3^M>zdbE^K(O4S=1L!>*7W;nwY}81a9F4(2vS>$^T5YmnubM#idniqssORw)~ycL2*LPYd_TTBa59-U-hO(^jIyjRd1w(Q}?C2 zS9SrW5663ZZ5~v6to;z`Uy@(3;nq4etZ^2dzZ)XrhvIYTE2z%lGiSG@(Wa#tTWHXt?$++&;Cqd48aG_6t*?))p7Q4U zv|cxTTGDv3z}LpW!B0gY)7*7D=#5>_WtKkOqFI|>i>f`_Ki(k~Em|UTL+$f2uYC8; zAGUB?-M;?S>xDNV^J!X&fp*P!6N_R{rCaAN94ovQ-O7!@(01^~RMcwnq_om1Cv#rx z;L{w~Sc}Jup|xIvkV;q?yP_aYBZjJ)e0@+59z5=QFR_T3gUe0dG4O&`IHm1Zp6Q`% zySg|kP-c)BH4&oh!1OH+Dnp2fY&eVTO(R!zS0rc^a*_<}Q$y=DT(}c1$({Qs=f@XY zO8w#X(*c1R-387zP9)lRqZ6FO@mGtJM~N*THqqSLiG8F35>upnI&IfEb`vDh;-av@ zHx`GtgO`P&Gj^TjpM`)XCSi?wEMubco%f@D?hM@xZR>g)y$~8HT{0VQ2zK3acPr)| zo|B*3+C0N=k)QZ<#DK<2P1^zkuc_pG@7vxzekyW0n06}+db(tSVT_5>LgqC!@|gGy zEVT(FEQvF0a$^=RzJ|D3s3mZcN#)PHc?z=9J9SXd7wv8W@?W25!GV~k- zdje*aKU$&rw30-0dyN+Z?@%5p*1+O zvTnZN?lpotOWOIUOJllRQck$64 z=+wOM2{u+Y)1#o~RqcF<4LtL3QWtIRlw@Z;yFQZkK8UqZ&p_$I!h5p2urMV-d_-lV zphD0pxLC^gz)l~vCfGASz`>zBPUwPwOGFt`F!8i^3-+;g)ygRbDxf&lcj7C#kKO|I zc17!(V$LUvaqfYgP{Xd0hNsWrPGMw{ctc<#%ju%-9!#bZTgD$gbZyJv1&#f2n*usa zcx@_B>TQx_3(0ISn)^;I46r1-w^}#o!UyDG8)cIW23hQ*TdI^X<$|@hb8T%0e|^ZA z?_gMIrE?gnZp8AOE{ZkvdoxK9VQhD2W zZAYLS9!@*oXFZf6mxr(VD)RBL)DgYc%I6f^C>y~>PPqnKd6h!@2nTkPP7|8(Ckq*z zBFEOb@UN(?sZ(g&X|7p}@qcUs@TauDmdW|?F~s_SYfp}Ot8#TZ5}ja0^eMDMpSX0r zYbUkO+NXC^%e*3yeD$V)Ij~9IYDLAxYi@n?;*XL@x7NbemUd55WDE>wZv3oq`G&vD z+L^nzxN&5PS_U>tb{NmVCTBb?d7;?0gG-hI+PbIww%*nduBi9JrMQ`dCavcd^aAz$ zd{A#CPm`Wc$y}(7?)pI;Y;_&%8yx>aeoFy z03)ms#6s(i;pl35AU80ja*($qdwMFww+1KR;szXQo*3>8>~Em`HK3|^%HJ*%~|__cx~u3 zTib|f+>_d?G;1h~&VGQAZ0noss6su}T8Cm5w{t(Dr$2;dE%MRkkCCP`Y{&{};-wHi zE8*wf@EYj&P*%ZZe;u?glEn4MGj~8o*ZO0P&VfoDCyQdP^$JQ0u27T7h-5K#uX9iY z76*7fx(y008fz-%@pYhGCQMg(3P`0>nw9Uv zFvz9HnZ7}bfX5QEsm$Mv((3cT#oJpO0()~OyJEzQ_u4wAr7)j>44G?&oqi;=V3^p)wYk5BH`w8c;QviN^JwID0Mbw`sNy?EJy?6 zsVojot}hq|ENYnfv0yEc>oL(BG8|34Zr3{v6Zrx58N4B9kn}6NHuU z4ow4S2rk|qJMD?QN>tucHpD##O?|NfJWC z%y?y}#e*vdTYj*a7<(wwGMb>8Js$(?5C;xE)G~-a4wSzI#rjV4FEwAPr@p#S)jmv^bTNm$Y^i53o?p6Qzwd06`;>}-kQsD=ml&o^;7 z`$FMK!iQ3)rB_l*(PlhDi>j?zvVB&1i$_Y8(vf9~e?O6kb!1-^fPCGWdGoOk-3~HH zj2)FxZ(?Ua9N2`%vO$&f;DH|Gt*(Jh!9_oTn3rl;52ctg##(6i)<2+?Wvc!eF#w{z zCw5-suxZ$=NY*t+maGMk6i26YNP2Y9ozm(gNAC+3or#^KviIb=0nsk1p#Z76+v47X?i|ZFsKB54mOTErPH%YeSi-c9{>+vicD+k!l7#26w zER(k?9cf`riFlbxbkoTP76!NqRU=t^yi0yoeh$k@Zz{Lx1c{XU&!&3aD7!reTeZe( zRa-xGX1I!PN2mUAnE~=aBN0Hw{Ky09aldQKuar_$g=+M!S9)m$Nzj2r?zB%?S|@_@ z)87|A0!LfvKDUe-H@fL_B_Zcc59j1C@>Ii=gmwDT_;e#ge^offMNTR2Z(N$F*W7#y zPDXl<6oAvOY8T!UpBEZZU8{NVV!Y`TH}Y4&6_Qz- zI@_Eo=I{(1fse043ktuH77}jEWyA^nGg^7^;^z=Pz-r}u8Qwn?TICk{Q#8Ol1=9dX znt$a6pH~I)d3+(|oqynd06Wl8_Xh?CDH$#hsW7D&2)~F>i$MXJR-zoX&GPOgLQ(^A-r-df2HC)Gg z0878bi95|c%aZ-mt&h79eCn=Oza*+Eee1G-pFC!2Je;{(UHcSX&rj12-^PJJFFX)I=P=S*_mg&8VQtq=!g;?vC+Hso18i%|RFeX-$cIb4lYyh& zK%OGlZK!Q_C=~P0p8NQ(8t!@)=YW(eoqH{%;Orw))nG~b+6o*USH)>n7#ZE4#+`o) zeaT^|H}Y75k3?;yhNt^Ir7#M97uR&?hWW5B$eJEWS>`3p=FpD~A-nv=7Nd(U!!<6i z71cOzc1GJ-GyhX3eq|M}&z?(@KDL3nirK^pH=* zH?5O@!eW(K>+e}EXyW!z zGUw#6p&}RhTAJMgMhxaP8@>a}tZlpxyK?X~e*#-82-W!%0k6L`Cx8g@)=gllr>p%R zjNRZ*U~GI>3~@VRx^mq9#}?BgGN-KoY%rAZeu`T>w3FC9WuBv3!idEm?>=>-ir{&b zy&B>%Q~?XBSCkX%qIBSVB=<(Cdd&^yT@r_XcV-qlh&ui{(TPwAd0-KDT+X#{HbYWL zs|ZRe85B^y;sue;KjGmTN}k`^GRD+h@F1sgF$bQF%4~ON%Y~n#xp4f zHnWLGW=iiv7}Wa{S~~M`ZUtOg1t4xiC+1VfEu&>|mZjdy(7q$=T`V>JPI6vr30G$K zqI9v>T~w}PVB-!1X;;#&We?jOqA%LcCrPrXEsYHN-TY7I?9w61NSvhxRFmP3%CCQN zBZUR-tgN3cv(j>SI!c>QD|)19grn`6x2*^QwftlCi4m-znT1doS+V{ZzF@7yuu*P= zhuohqi|{4bKz-8e4Q@jTuXkn9jT~K+Ozk4R4IJVu(pF-DeOFx|Z}UMxhc39(abc)o zGXg53?$x{`%nrZM;hX!6r7Lkno`gq{WkDab5`N`fb_+G*AWh}zJ;BTZTm=DY8bwT$ z7tU-#qc8s&ydSoJ)0YhnMIqszvrMwG}+mWz&AB}}$^?y!AI6a?Ff1xsP< z#5(d~V^|I+7&`{pEcAW!nnY`)V%~O3|LMbkYpxKBDKDroo3zgK1a;2kz5O7=I~*>@ zBDLPTtDQv5$#Kekr(N&neaEF*i)}k67qoltLN#$p$MuD6(Dlf~-SEAU(`%9BlMn3;(&<YnKKDY}0AJkEI5L$9eyG?nUb|Z# z3KwNje>r1?k#v&7z(soXVJeEkF*&-^!ttU8MeBTh;E8AtKRomEP1&JD>9{V~86$Du zSZO73K!}-}Wke*hZ!kX{VQWxs9XCV;V83Fq4$h9MAxFMe#(wuojAg4up-R zbL-j^rF6pc1gXhvhd+dHqHBhCFxKj%SY$n<$<1~NdxoCYUYt5yICGAfns6&L=vv1? zW_oatOk+HkZhHePWI(MkpHI?R6P=b6aR0SHVtpV23@p`_?~mfpg2mJETqyuC5$r53 zw{B}Tyxxa2u!vic-~oYbrfX|Z-m`A{{@bOLke%0QVnU7(ru9U(;E6fNU)7t9X9o z@$$~-C`-9jRuk@Lv;f?7&y( z;+u|_a0fC6ZPEL?NE~5j0=MU|sk_y(SfA>v+|sjD;kCDfbv&qSCFNamTbz?w?H14O zsT5oGnQl>Hug{dGr3iGfj@PR`vqg!Eper5*nSs}lp=!$BSM(O?~*TI4` zUL9b))<}S&H)QG|6A=!>>kGT)@2a+^?u?6$A24^Y8{Bs&im#sJ-XfpVGpC@L!&)=E zY5=x8Gh;I)%N>TWET=X~?{1=d=X|t+dUcluqkeL`yGO~sWm2c)*_N94#j$A7g>}x6 zjxz7~_{)feO=q>|qhCM|WGCth!SVf>o5VuGUy&mJZGC_zkHX-^Vq)zSf{34?%t$uD z19j(_-LkU#@i-+?;s-8ZAWJNC(8v2EgHRB6ql2?7X^=!($FO;V_JnKj(k+)e9CPSc z?bB^5sR0iiOk@|Y`OACufG1>9XOrUZ+g8(07aZh#93OkDhx=umFzT$eT~VBf-%h*} zbJK;B@7+LlNjay5?ptRQ57cgO@U^RCi6N5CRO3V5QHI5bt%=ii?YSqg7VACu^rXlE z&8rx#xO|-(WQsH$jb-vlkKPm()-{Yb>J0SL>I!E zFnY%KZS&pRWiO-eK((tzb9>Gm6y_yW!jYTaS7$G2s9 z7x-+zXB=pQSP=Y8IIQn(EF|~}CQsN-^#D5-y_zs$!-AqOjs`J9Ir0s_74CKQQ??jA zK@glGoaKh1W=bd`7umIj?Md*ckV^;%qLPd zE|N>Q{<6E_zn~-KXtSIgguEU>m= z6^xG;$M~Dp(27QHUiiLmR%&}EjQdPIldA-m{~xtR1si5g<82Y>xoHU@h*kS9DdI9GP6kXSFyn*Vx+UlM5)`Hb) zvIa7jtF+cyTgm5HM<(APtI>A(A=JyL6<4OQ%0OyA-N2>=&aU{g|98KrV)1i0)(2On z4kvw}x?}8D`CPZ}x((s$1g_({rrWTa!9zEVSqk}cVfl+~Ibd6p7*yw{b`t?4ok7)~ zSODp+EAf74w^Rne{Hhf>%P!;A^r#^N?WimsjJ42sAj`ym+dyQV*cE>|GGf{MrLK0X z-6wBBmm_~3u(Lv|ex@mnocH zUe@CD&AR`mM(5vFAz%!ZE<1s`8Rc!OK-a5ClTp6Bt6snQkjrl-ILP~GLX3mWOCyW9 z1@u1fUm%0%=45K&{Lw1dd$I6*4Oe$teB-e5t&7^~J`J(LJzklAJ%m5B#=x`XLFb)U zf-(BcBXA1s% zdZb* zX@4!*!`UHOgf%ACw!9HuvKZqEb~Q)xnu!w;-9^vL%se{}O8I>R#KgorZ9LrHXJL=o zQ3m2UT(2gYu+(>7Z9r90Tf%kHyswb8pA@VVb7?fmD}{0W)q<#SewZ&$OcEpKz$mCz z%PGNjzh=>d0Uh7)VvrA*#!K(X<@b_T=?A{ zF-btKiSVfFKF=Sj;Q{zxV-Sy1oW?^);l7=wv94uVm!q=cr>zgA%0uhdwsLeU^AaDl z-7t3Gv(oVln@NcI`2QjfDrrjO5M?=xZl zb~b^^1nj&FMm&_nub1NhwOhR>?UC+MU&ctrNk_&qA7Pg--)wyfx``02{4Q1=3dnm& z?P;Ay1`a<21ApghC$KflS z(K1({HLN1!mM<$E!T@=9KshJh{K!zHlmx| z+Z69!zy9lV)1zt72HlW14g8|LdpB`lr(6>e|!2oLbf2-O%(7c5->N$VHZX~ zc9t5rJN#}yTVLR8Rw+BuioUwnE()pJfa3Xy9$4&rT-IYckyC2`-3^0hh&sd^5C%Nr zeEy@gK8*>DA>riPeRx4g?_8AcRLSthM&vW~-52lbocC>&>c53T_rJGWx_`Pzli%5y zDls3;Qcbpznkw*T6(%AIXA-La{;EIgxxr`0OkShUAH`i3ErC-l34aR$hvMRV$VFQA z4;O^u6=H%hgy5mEL|%N=HltFTfOW!Z^2nOwtJg}JbE&sjQQEn|Aa9n*R8F^pwKx`l z0FFp26O)T_yI%-R8_xhJ)1$={ z7J?W1Y3~uGbHLd5({Qcc{9;ZA%MZ+-iXeWB9RkDn@nmKT+1}AMIG65?6nf?=B=Dm* zn0|~!QQUfzzjgHYB>w%O!a)I<{q*wd1!J#;_+9UY*IQaJed`3*0%)_6mLvyT?pc`x z<^7r$#I?6|-dN7Uq=cVN%f<@Mx0})?HSeyFjMpiDtmHz4|-oTN#y?G<`CFF8xXTmO3sx(%<6?MS@ujzC#QVASH#)Q^37}^t1T>2|9+O}+xy=Hn>fjKAk z$o%!S1XAZXv4Wrd`M5G~WW5mzt(!s5>7byiuHT?N_0joV>13&hv;S#MD)#JwB3Zmx zT-SZTMqE*o%!+{85^L-6XyNBgT6w5x(khh1ro6(q@l_|48{{rvWgb;sOrcu zD&@lqUj_Wy*gX(h;yQ{X(@Ve3^m^JX!CuSZBFx|a;nBNwv=B7{&HCI49|&m@Rw!Fu z%-PdAB?Gy1DVB{AO(5Q-vQ726R1fNg?UHiqcDw@ZTTJ|_7rQe4`o`8UZ9VidsOPJfIw1Ic)ZlF3;>pQqx;|D7!3<+@XIAH$MjEQU2<%XS?Lc;F zHsPdpwt5RpQM#2$R0FbyT&h;JgiP)YzWt~S0PL9IHi593LUZQeiYBC%j_H&3V?i`A zFDSCk1?Gc< z`p%YLhPSqTsIE0!cz^WL;TY1$CS$d$(-)Q$K4m`oJ2;nK!+u z;@N%Dc$F9jQH0AX1R(?@8pb^e-t<50-xtQnFo$B^DhVUYa z?Dp+dd2$9F@0UfIm97}1%%0jC(sJgICZ}gLEQemrG}fvYHu@R7?gCMD5AW{Zp%f;pNj_k zPYL>Ns~k5SS4tP#$A10DOj8r@8gDjdThYP~YHsps35JQZC2o9gbN8^{e}*7>*Qr{b zHVTAk?6@{~<5=3-=^~Y<2R8;L)wIIN7N+cC_ojO;CYuTl6PwpK75Hj>l9@n>lu7w% zE{Z$SFPzQ2(&`;yutw{ClCg<&)~zf&wX2^0)I#%j&<+tl{=+uK;#`!>@J#bN>>89{ zkl}Zbbcb8-=215gMR>mTefbjLe=^6kHmELx0eT#p%jc)KHi90RZ3$x&C}W{wy!&Ft zvIo#@Uw#xk@V3b$BMl!=4i~kex=35V|6JSgUgG?#t7G=S2!+?jg+*}quHPC-YGuGD z_D8zRmqpLg)WCmf&ZpRc+Stdmbj;%zR@XE#ijw7%JK&dP^XnQp1qliXx%G&QDD3tu&RUe}T>wR#bRoF) zv(UZ^T(!HMT=~*^M2Q;ooMN5(6?o;7?<$LljleQ;5fpME!&ux2g!r7{gz7eWW2w9O zoGsT#MKW%aMMW4iYH+;!J+&~ED*DK=b z#CnpPnAfKjekKGndN_SPg#s=epYvrt>dU+G{%AimtvFFeI(R}W9~+d0F8sW}&;Y+* zdf#MS!SkAsMKArNWAhE%s%{f1R~fMy%2o0M7+_eb-aOVD_!Nep`5HU5P#M&^BAuO` zU7K%+sX)Y;i4wuUdb~_n`W^n@@RZPGAEoAPTWh6RCgodNH%;sC#U9Jx(xtIU$}ti5 z*^}Sz7;Ps^YAwjK|hGYR1kk+j{; zH9N4zZXhvz(3Ye@7D)KJ?|mjOh(+WzX$v6*OA19&0L7(wWa~$l@exdq-p!h^ZRE;U~J@@bXdnc zOLV)_}N~vSk!R@(Y+Xe0@K7H@3L*hAO*PmmMdQs}sG)Qs;qY!)lMfL6Bcm2jb(v;nrE}Ini;NWl{%p zxs=yDX9W_=SpBm^671o#Ace_^`=m4JBM7dnQ!YL(c+8q1>wYO%+V};3ar=t zf0jUCk<4B;pPEz+k|@F*Bu6^OH!?%)`qNEg{ccE$?_xhFm^MHJ>b%ILi%^q>`Run` z&3D)+CPK$47=A~6{W3}WA6#LrcO*;NNKzD`KzIrVTdXmLkw_f(_9SPB3oN5&v z5Duerr;OV}*D;t9AWGuJ5<2vU?F}+02{(t07En)Mu+1+XOT6-q6*p>}C5`zk^y_}R zBaYEpO?oc#+%m{AoZ#hy&Sb8ok|R+MTTVoF5u{PpM9bc*#1_j&d51hNGn1@RTEDos zM`z_@DR&L~`g84S3HN#Aind(4sBupwnpKGLr!>_q_2SBj1*!O~6Ic>TUu^6eC3T;- zeB*AY0Y<<~`rYK}==}w|ZmkI|hTWfZD$?7M)2OP5<8iSRh-B|47g6bReo4ovb#ArM z!zYgAuW6|icqiiH@Q!v0s=A_+Q`ZsiBdhhIHcFeLZ-Mdt%stt|nq6&-47+Nx*NdXV zs?HQmX64q4&XWS*a!yrhFKg#q%A|}ANt{3m)~fqPDw6!rKou|*z2ZO*FNf$o5VouY=HRFfAS%Q`*TZd8;JtIn(@0&< z@UNaH_`BgP^mT;MyQV?t!?s&h+)%07Jl zhCbX*JYCA<`cZ-_-FAUhxGp4_L^KfWbs_6(<{lMw_jYmD8MrzHL~u8lWPIxqM;twy z7V*Nf1|lJ!r=H41t;;NyGp{p7x=FRUG$hYP9Mgx83YJ+(zL zDtjaB7@!e7>UK?}=^o%C8qwKMbU!ZCO*P#4M9!AdtN5smwDm4toC(_)vBSL^Y)82^ z`i_2jJHutFeaT_l;Od4L4tq<~J#OiX5O<_S{s`SM{@M4>XBi9qn?V}>#CM&T zvSoba#+TYN@TK@`R!qBl_f8%@Bb>6CL(g|O{;uaIa13PnQ68{?btkG1d6+oVued#& z-akl>BIx-J;2)u}(f7A}sGTGQ+<3=gd(F=!GEa|qRlY0(oM9(WcU zr|p9L2)v#k2-4z6D~WF@qpF<`sbZ27M{H)0Sr?8}kaH&3rS2ScW`D+1Xmq;NEMUDO zoV92=r+6x{noVl{wOyxTYdKt31>CN*S#d^;Y=% zr+xb2cO%X4xWkNWsaLtRwS(IA+|ZKyEf3}FMT+Az2J)0KBnf)EJ=}xEw93oaO<*UQ zVn0+f>~9``m`)6AyDU7aVovcPb5HWoFBnWhYK^N8LSIKBu3` z)j(8Dq}#sTsEKpv&_+8EuAr;8%k=CxA;X#Lk5jBGsibaxW|eK*)WllmMg$wJDu_hs z7o);YKAou?29J#7_n1T%!)@9H_a0_XKH7nzogkDu^iAw`Co&G-yvP>m%54(2CP(|c znm*v&zmMf)NnWollsy>Ji8D76%Cix%mE7AK@!%OXD;*X749i)|R&D8Gy!w5GPu={C zMgn&LbvhFKVzG|o1D(0@QP3tL-vXSb{!9CQs0Q_}r$Rt-n9VFD9V&RskPjlMPZpJ%S* z=H;yp8#+XcRTUO0%MgzHFvG)n2M6v_z>TrD0I@kSzKGNMpdk)9-hXESR3iVDk2vvYj;yw7<}RohnB8mw_4bsEr$)ISx6Rm-+ZaT88}b??Df1;Rf6_2T9{c zou+|}?>n^yA#fz4sb2+bh7Ub!rh2V0ZkOIy4_sIG6k>0FVi&vn?Lge9_3a|{bR$b( zG^JoG+de2Qnk72<0bEc8b8GHuV$6pednw3J-sKv7P`<1jWV0vVzl`6|CMW6no^gvp~&Q@z}kMX&T zoDP+g-tF=)QA@v?QR8>rCBp+t-{*XqG*msMU3eRrSfT?zE`6*ir|0}`y1xxv^uy)$ zXQ+oZ(oWu7?`hCH&3e2}-m}ej(aSGO^~^f9r<*A)+jHM}1VXMW@oE-w+yd~X=H3ND zBjd77H84ZB z_K-g^Zaw$Oj<5)|+VE?%F!^5AzQ(*?vrwmY;qZy%9QnCNrxbFq9=3KuJaIYW)tLp# z>nEw53?}E7F+IUga#lJx%pzlCDnBnG^RR~RwQHaYqkClW;ieG7yHdj0Z$cz7NwRq< z-WhwsZd30~@Iz0@P{T0bJ+r~fUebx{%lx-^#{v=0!|tq*A?i z?tQd16iUS<4EL`{`DOulUdb|W|Bur^Zq>&X09`!+BR`HS@XDHQ|4ylxW?b3E);K+r zKmoizW*TWlK0z3tYZV0;^yG0>Ia{JUwuvkG0He{Ku>3ec@nu6b7+A%2MGrU!DeM*# z*ki(mth@CxAEd1CeHDspm^jHQ1XQ9E_^k~ejRkz+{<08D;BLb`Yat37?mWa+wz5z| zYTd*1ufMiP-=5kvHqDB*m2dqe&Md*k;3BBs-vo~5ui}H6n*pXEBMnxOpD~BZ>m4bztbC5*!=X3 z!p%q6tyfN9D(h5R4CNlG1GtJfQZa8<;sKpj9EHuK!4Rq|Bx1mzg)q1ujnfx*8JKZ}NWN!7i}pI@7hzjJie zroGmVpz?eXhf_M?y@j4p-;n3loW_BGkx|=EL?W%qV2b-Jjoc%wP)1;e2a_a*FA@J;+|UMgs_@i31Zi=$ATIYH%B~M zgkm*Jp0kRx;Krh_GRKRqPMJo7awNmiw@04S^)*oTVI?|z)k~HYL8kt_U5Tn4KmFe* z2Y@tN-{zIcBz*dg(CC9#GxCMb(cF>E+MN6Fy%|6doWrCRPPA=Xzg4w>BsSQJWM#u? z$EYZ+bm5fvUcB?h{P)0+^WCC5MU0QXybFdf&Z}`*imZ)jF`=pK0bXj5#ifZkOg(Rt zIQjO<&E5e0!S%y`SxrKtelxYy(^N@74MJ(Moe(ZE+}Cf}OC|G2us&UV)^dgDv5Edx z`^c!4fM#4-zc6L{IDUv_I&5c?8LUBgFn(yluhfzHLq|!UMt{~+iJ@2{Zzb1O$vVzi zIQutH*>=8j>l?Hd2bqeJS3;qUVz_({F3q7w4B_HI7F`T*|uM{y)WG^qH&0teio zu-09d!{rU+*YotfCpV;NDy?!px!gfK7JRXe?T^y1EiIv%#`1p)r-?Z!|LceXAu)t% zAG`XdJSh=(BjqwHYTkAsDpPVu;i)+xgkrEDi+-=)VkxB8W&1BJuT-n;_4gd^wv+NG zlisY`O)ssoBR>$b_9pvga=UoP&nMC5n%mItNi==jS7(u7a31OL>KX@DBz@^bL2jLI zct^;5IeBy}$k(^;-dvJk-i{yaX2YWMlbuvTHUlbD!bLsKV)e&IE7r7~>9+g$yS!6= zYPI_K=G#YXtF>5Xao#bN z(4?TjoFfYT*750Q2VSTqEq!Fyg9NroAci~bR08IE7=N^bINd?ufEP;?msR*1+zvkM zK6&l@w9N*_XEpo@kekl@yJ5k>I9W=E?v3@C@}6f2uQ;t}$QXn^l|06qf(l8og+g55 zXrJjq0~h^#0bsPh2#d^Xs*Z9K0nrPh4dI6kwj^Fi1{fWKpHa)=B@+F3zo;Qxy)wh2 zZqRi}=M9?7A-On;OTf&_Wk|Zu$DG~D&pL?;$#&H`WDMh`X|R@{I#G6piYIT6QPzSf zA&XzXC&%28z;}F5CJ&4g7Bq*A(MgJ?za@Vb7kG6Iqs@8Wwuj-k)29qv%=eD1@JLCx zVxxe>=T>4S-pC8p*^cOPU9USdLs^@i!28p8K6+e;f%t|n&MejYsQc#XW~G&XzT5G5 zCii9S;n5*zTtE=o_ev2OQ*>w##>TdkC82N3{nT{`$=)9vw*_x4f8bgT8{XFUHtG3z zb0J-5Q=!~%?k4h+FKks{)Kkq^VQm0Fl4rbRg%M2ABuq1?|2g&mh@5 zQ@YHw*s18*M#x+(>+B={{&7#T;XuhbUsHR8821WHvhO(hncp4y;++U;cIw;S^+txF z81r-nyPw~1qLCK&Xav)D#X!+3;DwDlTC(cpj8>#$no)MKt7ojL z%?=03)%$CuN-Offp0JG4(wSp^of88{x8$r-^yql0y-&j)G_c^>)gh=Q%SX>-unFIX z3$XXz+KBjEY&F~S2;h|=ZIXVS_Kv2JPVqHuDOHW zD4H9D=-e|B7eQ>fg^H-whw&?P98KjYf@kiE*FAAknH#-Anu>25V_F*71W-UzMpP2R zkImy9aT)21y*0n7jK`I?-CeOaPiz~8eiVG&B;I&Uj27XHqpy|=y*nO#wLn2Suq+2x zEg7!T>#!nToE~V;Z@Z`9{$##A_*2f4hNU`|35n7CG8J;9?#6rKH{ajEpLq}U=W1lp z#eA>zQs`r^=W_9)BzL{o8xU}GvE5X@=&M}b%OtNW^S(Fl);H<)+qaA~z>a-`XKgUH{<>aYxF(-gRH zH$oG;AjJ%FdUiW@W}9{99)gd2FW&;&U`y_Zh;kpc>zJC?D_#-K1*YB5YAD1dDM55~ zw3pVyPZhE8>%E`x!^3yKPWxD@-R|9d@hcZ2?v7a~?PZEi4>4OaTS~N(xpC>~>Z#_? zWJ||wAdm^Nk=Vvx;{H9GA?^KYTiPVmWz2SkUpm`Xk32$dY)y?9Ux@bm)`#1>%ewEI zE=#OrT+MdX{8tvl5V}MDF6Lz91~#Y8>kF z)TXHUyLUy6xgL3xE#e@-2Hp}tX2*{CHRYUEFj_b>H!wnOr@4|O#Yvc=jj%N=`P#5B z?)Wk+GSW7RID^z${rFlj%~;6-tybS6=MBQ~`>JWvGs1TRm*l*mEt^I}az;6KS201I zdj`_BJ)ApjSVEb>)bDPAkV|mx%C=o3Xbp~j%-(tR`WV(&x$(tTNK`a$0C*>Jcyz{F zN_Tk8|44AW7?<0ClF68RJGv7|>=}ymi9LQSI4Ij)!&>%;(Q?-Jst;;%_s5u#*b-yM z?zU@%A$FQq3%zz9cVbkX_;hXzD&Qpa>mmIZ17M(vwuY>JG|bkAw^C!OiqHR{4N=a5 z8`}Hj%f}gK`}z6EXEpd4a(Lod(&&Uh<;li#H$H=$Q#xr>WtY9msrv%MjWkBBE`s0l zOqr9!1Ncm{nMcy|R7LN__{aA?de%ox!3lm1*kQwt0K|8PVK~U^OlHRc7#1ZZr3y<8 z#=lJ)m*~QHs)g zke&dc_o^rX={1l*Pyz%90U`8I?&N&mDc`Sq@BHB*$;|B8v-a9+z59LFW@9}`uPwaI z^!E8+%LBV)01Nj%y#qRxmG0`ycEC`LIs|`S3dcNNQcFD$=wLX)w#n;dcN=& z=gNatRF{gcC6nEz?JoLVh2;`RB-5|5!Vy%C&RdEqjpOm)!Tx27E4nv7Y%qiZP4I4jN zucukrA+1h_J#gRUFoaPRo;=G|l_~=@sFr=qbzorIOly$Y=fh?Xvk@TGQn&q{Fe$*F zWmg`{7Ueh_IkIxBn}NQeL~syo%wfZFiDNs=aXU>vG^73otJ!p!1wcPc%YMDL=cbV{ z2j^xe6?u{$Jm=-Av2EQYQTHg=ca@&{18=sQ*>MxK2-)%>QJWp?VP@V&y7N-dKM-mu z>o2exILtQ9X_()9O}7jR_@@q~9uKXEU~YX92F^*dK~v&nl%6N=Z-3E2a{ZX8W-fth zhmCH`=G|rQ3+{hHN*_vJXBr>8$=sf2My!msq=HwP4|ehrzFA6FdyyIA1^!_0Bn5M>H&AaW~s}F1&G-DHga-DB5(9|tQerrD9 zC#hBTt;u@H*;!bmKi1a1&G8{Y>;C;$fDi6oJ747JB)Ovcq;LxH(=#Z?eA$3hf*1ht(G0Vfs3C8dW6+V-RB=^h$ba9-U7pNl=*OlxUXl})Y$%Su$oa965 zmw(i_rl{EXvx}HK0(I0+c%*!Zs_iwX*A3ZSeHiPQ4U*}gKJ!!s9yasgqv-n!KagcZ zG~)M3kb|=e$WRw;epl9ry}j>^bEm(6PPz5sKb%35TIbt6q?EXLE*uVD5oI`YBi;q` zDjnqEp;K76KCDOaqLicP9ja{=;H*Io$DlbyR~Of#RF7^BeO>w#gem-+eMtGC)9rH< z{_x+2cAC*G!h*sBp%cxPins?V~aj3YMH;`SzNYBV~i-$q9K1Cl5;x zpD#WA1Rk&qYF6_)axKmf8W2rTNMf112B|VB_d>{Z`0AOx(^quK^mMF|Z*#Csy1GuoTF#E48JwJK@2Kl|BU}_jNTKtMmQd@`hptfy3UzC}dSEI}oEOm; z4>aP$)xvFm>P4OZ*V>a_J*m#y{?^EqjlaY{fDwr|O9L8W`117FJ4DGlYWN?tWcDi16>1~Z%r^&wS{Wvr?j{#bV(Je$?(;TO?B%Fl|0Ft`CMnI?f;L(KmF1JjEA&`26WkR@GX6j`@BM? zg4Ap=Cox5Ll|7Jp7$6Kw>$=~JMzeNp~yB4uQ)C}lg`LJG`oPa^v50RUwcrWv? zhRYeOAcc&KYnCYZBsuFJl5#&4%5No=ndxLNKxX?rVf4!_$m;Gl_<<4ESTfCYZ*)CTJr^|W0ytO)? z%4Qj3Q&}~~n)OygZq6E>C#h|{p4rlxDU0Sr?7jHthNY#K;V{w$t8oA7cl^DMdbDCs zKn7hNjE{Y1M5MXkHtthk@JU+E{dp9DD0f$wVgD*Leb0MP)%Rcq2n#jU5ByWSSVv zztW?GDr*gp{*wjeVuS3H>&>z)Uc4dM)Ul^5*A2*{>LT$hlC)}yri*QjSYO?}CpST4 z@s{)Vw^|0Aez#-ryyX_pfHT44dBRaro?|}ivc)e3?!uIY}x*y|yQj1ubkGC}&7-MES_Jd)=w&-_clL-~Fvqc?fV?+dI z!+87S+{Bg~cCvW4;}g_6V}0v+JH1+rg5~_&TMp6 zSdCi2YJ+3zx53;Ze{W$AKAA=-C~)^%_0gbBc10le+J46>=dZ$li`Qcpx8V;z7B(i;H8GP#%@=nf5hDG6dw4R}MuKTtRCV}H;D?TE=4%Uv~2A*m#=JCh9|UYULiS%dOX zp_fgTTcIa@2nlhBcbnx>*FC4Q=&K~USpKo>Uq>2%n_B3 zb18l*$AtGZnqJrSWmn9sU`>@S37|R8f)ueGd>AstkF4XrZ*?FQtcR>s0+&I1ROS^@ zzExBpA%iPs4~ehX1fB!1NLUUVEP$5LXpbk>Fksxee#CPEiIm_VqaW%{gA;F)gPMap z6-zQ+To}z^SK*&Ek?nmY8n+wT>o(z)gj8;QtGAxy2dIKMQ5;pi5u@F~P z1Ns~ne4}BmmfFRr=z% zR-MP%XvCyKBm8ri3NYU+?L3_Neafhu(^ouAFfhC#Ml&-`MoIcgb?$|_Lv1kN{##&OgX~pn6vrm1ORPL6gI3z;d5$%yrL`P?@>4l^mf2XXq-X26MPc$F@?@zvrGn;q z>0w7IoH(k8R`qj)UwL=X|5g#angrBMwOTU8sJI*vCvV3v=a1RY-v|dJ5g*2W{j`xR z_*y)0Ndw&0y@<>*k_ZV^?}FNC&nwv$C28o15!e!uD})iF2a_%OC|WXWLtmnbWmX;9oI-f?H3 z9b4Y#HrUlJ($%uo!hX+Bq~;R z2;?<5r=W`uuG%bNL^$fMQAZCUDnkx9cW#ZTd@!dXh%Ytnf}Kl&0+09w1LWxX6|TOI z`vVrLWdv!o4IaH=L#ivo_<;w6Q$th{1bTKGc1}WPUAbhfRLUIV*yE%1vYKdcVp{6) zo=Y`Hz2h(Qy=gSYx;{OCb*=9s+fbDkI~1RWFRZNNSxKF1 z0S%+AW)+J7Kg zU@wR`M+N%eRK-F2%wolp#@*h9z(L=$0g9QMp`G>gV|8Mi8=$`5=fVadqweXxo~eeU zZ3WrPKHR>t1+!1tX*8~>u=S+DB17`wRdC-6+TO;Yz^t+C!B9j(Rkq{|UI{w#vXG&kvr@h13?L3>Jj2CBqA zz|$OH`PtSZj)vRD&caS4nS5Vv-*QIhpfS!wDb6c87DECFB>g#rIo{E3C@3R5BgoO6 zeH3&>6;I#PJ8Zk(Uau8yGmkct^Jg^}^1lN`O2&7@auA+Iu0#a{dD-K4N>E@&^p+*E zH!z%s1Wv37ah(ii=0?fp43RCk+&kO2i^{_Xj|cG*w~7h3d5)`iMwi@hS206%(5952 zP}C6ulw&Tpxv169;oRciixW?Pqj%|DN5s|3#tmq3vArq=0vn3vo zS(er%`FF*8)TdpS*12V{yQ(zeHytRoqG*6gTl$(c?0XaARr&?qYQ+z$P?Wesme^SP z>UE5G@A^66*;d--=5kj9-5&*}R*?p3chnBY-=fc_s4R+%m8){RFO~*($a4k3_^>8g zTyx8Bhe}_#w&k$(C-W89Qhbg%YrTti*yh*5!Ek5F0i?cMuIj!%0&NwHxMf43G&&V^0r6I=M z+1!0x+aj9$eWL!v(wOviTgN8{oZh1FqNKe+7j2Q>xt@qU|8;J=x}C}PIM5t$WK3I+ z7c*AMNn+)u!;{p_d?H&EWXJ#vN?M&Kh<^;~L8(;MsNdeu1v7)oZWi3TQQ#YI-ocJ% zx6=MzJ2PtXq#N?tUjC}UCw+|-{ z=^IHC5@0X5K_8+r-)4^oBO&IC5&qUP;cCt`ha#?w`&uGb(BJ)bCY!F)qZGeymJFK6 zt)|8Aq^=6`n5aR{ur(2t`DxQQD<05A3sSqa(cgy$)&qF5ss-trCF2p>il`p zM)3z}NCpl5k0Xhz%7(>EbejkkA zxa(3=&_5aJq;PU!VOwYuqbmX ztTYS%W*1@EjS_7d!T^!_0I48mR)NC^XQ+J~!1;av{Zc_-htJx?_EPM>a=wbm{eP@J(GX{P=SJr3H;{!iF^h zG-{XHxN9;5kz_zt3;Q4<^fukMGw!vtRvgZ6V&yP09eiDt<&f__vkL@U z%dND8#@oL?xic-=QXzDF1->S_GUa`wByWFQI!WIJ#1{#(#s~813&J)b>#N`I)*V}e z`zQI#au5eNjM?l+KhZD6Jr<w5JdkzlWA0RtaI6wB5?laTRtuZVXa)_YRp>5bP!^ z@9qR@AQ_I0hmOXT2lL)Nf^)YO+)rqI3TJuYD|F?I(;sG-*y?J3+*)XQMe4FD8$(hu ztD~c%I=PfNCOkB^{|=eJY9QIqSknOFmOk+(nA(@_jLF}feRFPWFd&kd+l#R%q!hbb z6oJfSiTt_4AA_Tt_w(W~mvWkltV;Pt7P&7b@Az7a6d8%fsO0n!?IGE~r^HV$GAR5C5yTWL2OnqEEAQC#}o)@#$zi`!sww-%<0^a=(GzAr-Padn=f9lB8eCfYsOt+s*CvAin`dS@1l-6!N4Rnz8x?nm~Eaj^DS4+`!2Yb) zUt9oO3x{Mw^LI!2NXOFf>4sNG39(dKG24!i0mZH+TQo@x@8b+(M)YT|tY0=i9rPng zUPc||V2~2)UlGc)q+gc)LmR$#vFwq1ZL8iW{g~$P1O501$HgN%a;g&O6T6CYr=u>I zU8#JbhJ~fh#*aT8ud^yPTP!Xv#tm`NErqC8ae+kV%DAkaE~W*`rk2j^D37v_=VXB3 z%d8_kJ-}L>)a>F}r$hjx^M{WePFuQEe{Su9v9~t)$I+4fCnql;P4+eGI_t5ccl58}f3Y{h@v1hZsYol}D+6npelg zejTb_Ig4sfD-zL_z;0mM-!ME7f6%R2Q9ifU<4M?<_N7YeuCld(*L7Vg1=(kh|7O@J z(3Y?M5pW`$iueAn;u3 zEhbQoVs-h}mZb9`P;9+i4$cdc!=5a1C1Rl_JDOx&Q2`WF1;0n%I>Fu=Yy=(EHdt8H zr&ma(fv5Uu9j5D32Qk5OtFpKg9%m7|@;04;N^9q^Pcnz4z`cqK;3 zzBi-^6X<7CEvGfgYb*e(0=)A1VVl)xuC4ZCFI9$@#SlAh?84x|zP-vqW#K}+j-@-4 z#@nwx2nbr0uoExq$X`Rnt=2m2T|b_9bs1bz0Zc ztt~LWUet!vbbYPg@n~_%YCPh+(jDNbkc_;=U{U{uICImz({dgyvC~`r9?^8Gg9thv za|%%EB?NE-eyqENKL&-1K^;Y>+Rx9PIiL~DT(_@L^uCEYlqmw*4lZQ->oQ=6lf{bM22mKc}lUgm+JH&Ll_RVh~ZZ~;|MIPg6>uVi-q+qbMwH$j#1Yk|1;~gEWU-YE$^FV>4(|+ zwq*+Ka&z;VZ3BkK_fofyw7y*%>CN7KuR@{2^n<1gmur<=UP#Ve`kt(;ZSaIHzV_RB zAw9U6t(?R_%-NB3VGLh9xpV*P`0-o5w@8p(;bZeheA^}28+i|_PudkR z8uPl9{u-IMhHNdNlV8?!H=$k|P9MwL270OnLVInaAayrQUH6!L!+SD5KA(tKO=#k} zC05rs$L8xO^Q-5a)H5(Vyjd>iTQ3hOQR+8-_o9o5J87xlHYd09{LOK`OA-}XtFZL5 zg$P9jDXvLji}J%PuP=(PUH%;SOTp0q4z(5B6*LjIPZ#b!d8;9dV2*t>ZVL+XR>{E) zQGlAvFBa#DvOm9q$-VPUyt|v@=SUWhUlb9m!(i72G_qmjQK{8fAO}LvW&WIQY-qw+ zi}L{CxV_}y$|zB2)5C3=OWIK(O0F2^;vDKIot{>PahyRZ?=}n&M=QuZ+9LIx_Xy8m- z|8{cFvCcl4UxQIG#qndY!m=@BL+lq8s5#OC2LK0}qO@|u<-kCxnQuX(riS9;Zg zZigScfveCV`>%H^pflf%>kZhHP{d{`oz^p?nT8P1{m+aQ%zZm9`o=bH#yw^!J;Fst z8R4%{IXOqrmcXH*7b3~7dI7@2XlQF`qS;Z3u0p^Pxj2+dmZgCkf&w-Qbf{>F3I558{@~M(!e65JX5lw_cG?DqqGOY|I0S$IIJt@-^>h%%>LXKCkl7+nPfZDxor+CA;@wW z;doNsHv<^C1HqsF#QPKa~Z&cFKMoW0j-5mAiA=wsDfE~06R{Zvl_JCPY#pLrwwD=KxdJa6h})S7@D z4)y~?urYLK=nxGk>wkZuuIwNb{*c&Ww338LpJxbNTFTUWe zOy2i~>>@IOV1@erm`EKWv-@b@}z^b)H;w} z(Zhzxrmq`}Hb{8@^wqEd&uJ*vy=ZuWz+np<9f7I50oT0^z7(mx5toxqWp5v*25F6`&t#}@k2lba9lW(182v0!zlCs<-r84$0qAEjC9E1_2Q!Vb?`MUK1h56+z z-ads)j%myptSe7I*^w_MUG)3O6aGjq*Y+9-ysOY@ zDX~|w5zlNFkC3!T?P@|OPevgR14P}Q9|I-ne{h2o#cOODKP;wsFv>K`e*Z8JjkQsi z9(B?LsZU872c|l*^bU*mRYd>f0o6Z4-%7ch1!UUB&VJbqgNh!t7R4)v%C=wDn`=7? zi->oig-0Xn3cgK8i1YZZrpf!EXf8spd(&!j{!(MTYct*gmEHaaYg3A96=I%LDbhl2 ziNQ>|ANIZ&SgZv(<1?llxy9Dd*Hd;r>|=e~oS><(_I7?7s_QFFlWG~D=k)kHP~Wh@ zDUx3g=D9bc5OC}y*b|-_N8XUgCG;EHh4~Q9n?O@QCB837G_wmBvJ)kh}hMiwNRE+7hDD8M3Po8N?|!u(&xT8Vz1~ zkt5r#fD<+IQE2(HKBr80u#3w_HRYaymWpXzi&n^4gPOjG1PFAm3|S9e!Lj(a_m%X0 z!p3LD6BC53GIr8fuoIq^w|~@CG@;LKEb2B4TH~+bl&Au|D*8czgG5_2MA}O6nGLn; z5`LoFNzqfkV9-G@JmaVHf=oUX*K8&)l~Wwdc_lQcqV@UvAJ8T?b!?770ye*5m82mUK#>r#N8 zDkwYiM_n;qIn9F{+Pyn5%T?57c6=fhTR*ER!FB?*3pvgCm6s?dz1N&)ZEY>f+`(W#kq6fK6wR4S8FQQWu9EEO#=S4rOubh1xf~d+ zuc})ad-{?&ptJuC4+C$6QnenENqSy9?j2tQD148bd^#2)N zi`Rc8P|K@ieK*;CnS3-TRKZ{-G4Ms*Dg$yGH_)VG#DNcdS*+!$>Rceq@FhX+77xg1 za<}XAP}isQrO;FZ{Ism|C91wV$a~s1-X8>>d^q92a(2qBcWwyCPGepOR)mO$SxYTF zZ5|RR3OVuZ*HKP+6L4_l`Y+YC^roz|!X=zc2eQt%J7l6Gj!h9A{ygb;KpyuE+F^f6 z-13U~ym1;;YmS)4MuEIQUUp4Z2bj()EHr5IrP7$( zl?+M7n%>-DAhhz*?P*gVnuK*KpUNaiE0mp}We$V6e2=ra*UgCNiay`y(E+i2`EuB7 z(N6<`bUWfM&4%l~%;i2nJF^|V$9h!g%rEjyeyMnsy4kqF58BMVJn*R{iLx?`zGal? zz~yVVP3j5!oLADUX}x$`uo9>nz$p z0b${+>L9W5lH@oBcbz`SMKg~T){)(iEol;8rr#Z55CS&pq|3X^SA#B=)CswD%zF;l zR>D5yjKTqhA&X4vzigCmsTe#uV+zC#&dniAmS}`z*PPlD%z3sOw*lNgSkF-z1`+XZ z#IBtuAB8sWFpc=qA;+(;)T#Ef1EdiOD5D;Fd|_hPzT}zZ_q!br{ZWK0nO_^gYJ@Gu zr3lC)vBocvP(G0%c92!=?y}Oe}9}mYeABAVvA% ze*yd=w-3#ONWwg21*LX3q3EcY8i$n0Z&*<&PFp`15~x`-H$4vY%J8kvWy@JN+!+0U z?xQ9CGVn(nNQ7CFGP{FBOuQ2XJG>KZkG@dW^{Yi~bFNP3ogm@0NQ+1)oqPY`-g4z3M91e> z2z6n(d#$z8J^jPnmV(&e?`a(su1`j9Vax%2s~fMoqHZy6o4V(;pm& zjJ~4V?MyO{-{nP0MLh2pP4Mv^@~2ZWDUHbdo;W6Y+$96AyEsovVHI=naF0h0D8qgv zNQKn?d|A6l>I01(WPqlr>YTllyl*#ZF?bPC^%=@++lLUXH*PXzKRM1lzk2_nNr=ej z`_8**eM|Bk5<4DqMJMG9?nWv@x$6h;-N{{djDO!@^v<$-{0{yF|Cux9W$2$`E;nui zmV)5k7>n5P@NK=z zZiJa_wC&|w7qKk(_MX}O=a)Bv!ouTq?kK;5EyuP!Y)G@;N&-ca;W?`?3)!2cOdEd8 z+`gXyoy#0A^t0kUr&?lXzbr+JG8#&4{1>VB2lpOa!s_GCZ_j{B9v;t~LXHnn9h2!& z&VD=a_^2TZf?t=ckL(0=`o*#U%uV0@7w!wQCfDI}ZwP`MR z&n(6tPR^b?;G7M@XIoY~T>dPY_F)mDE?o_3*8W#>I@ct<&f6kvTKK!f6T+FVT`S4$ zob4LhIL2$mhoYQ3H8dE5&&0hV*MZjw&Dv6CtEH7=b^P~DrTSV2{*>ucO34AVO`wCnef!25wa4CQXl-2v3>eIk z)H49ScBiPkP+MOE01&6O$hu3J2OT!_)%oX8t{z8;$v3kt)kQ!Fg5Ek%)@#?V!%Ir;90=U$8G_%rbEi_bp|aBZ%NPgw^W_~c zn?xG_j|G29B`i5Z>ox2db0YL92>Ju2&!PHvxyq`)y61=y9s+8o-s|I1uK)W$1Fdv{ z60|(&vyTk7=Ax_hZcD^RE2z#?px+fDHndN@W8KJ6V3m`G>2LaZ80bSYRr}RxkBwDl zZ?7hR;^PqT0C>Pq-}r6-#L7yGtIPZ}@+{;>EV$9fIpD#%XBvR=*9=J=V5m5Cn9C$7 zp&(6DYS@#IvRQ>iW1tSf--meS0OlpLP?z}jXKLPjC--DSy|x`U>xgDxg&V_~K2y>B+E$u z_k#c-gYhGZZ~8$Q6OzuX7z>hoilO-pXE8ee5-JqU#rNbD$uJgL*Cb1}Llr2Wg+(x^qZD}VIIUcDCZ zSx6px-c+B$h~1~Ch8p3Y%%aOxguEX*t?^CJEow>(Pp>Y-A|Lt5!0^Aq|DP> zO&7M2>qj{Ez@!bx^ByuV;~o^;d7 zF4YRA1d4^gGjBUj7er(l&ax6KScZFKD~=@o^@5(tW}sLBF`U4~ix&k&MNPG|qJily z=}6?aOAFF%U;TVI#TaWcKgq1G@%EO9_Q~u<93!52Sm=6|ey~-o$RXaYbs7Rl{7+W7 zCl92$(EcsyvwW=5K6eIMai7KPk`rbxmse3uWyybvfDaqc5&j^`NwMqX2}e+*U;E9D ztzNEHr`I{_`sM0kxJc3ZQpqFVN<_5v)6f< zj-TpojRr8`bxSp*{jDn_)%>X|gZ8iA(vW4|YaRHJN~3M2K@FbQdERrMIPC{m5X7V} zf(brc8EGF~9j1#pEEIvt;cII1OplRvlWC4h@=KWxy|g%U0NIz^x`V;j7VYNl0xNs1 z&;LD-mB|2J>fqAgtv$74soCg&Ea z7WSV`e{lhF&}Hzgt$k*oix!>;cJ(IEOzbka4{*5;CIUM&h8aiAPaDmoJIvcKz8Ua( z>{a>!&~*85PW03-qPei812T(`2dkVPMy-D=Fof&~z~DvJ7~TmLuyKexS%!lf;n&rL z-kPE^N%oTJo34384b`pLUa7{ozy#gMb>&Vq*Hj90pQxJ}W6i91`owvJR7-~RfdPNm88Q>%`g>ZgD9 z2kZYeG~f)+)8bT1`B^^pkDSZrAw>g5y0`sJ zg|58BFpnp1`HEKwyv8WoN@(Cm62Qlvo`ww$>eV5X$_JVAX=WR2lbxv(UWts<6c;8Z z?}~n;+^oUSD0F7f35M(ZaLux4IMd(}pMY$^7>&U0>JvAG2C8C@>A$T~eD9hrCG`6x z2FK~w!o{#+`i{PUG)pS}nG@fNk@3y)@M;rxXPc}?f|>6s7QwL?hZDI*+j9LPb^3BE zC{5VGBOL|Ir?0sQ1xylJ$#Bb&Pp@vmswLr{#_pGgOY&MMs=sUh=Ot_y)}yzaY3 zXX;j{Aal)1C|kMw2NaQdA^cjkzx{4LB9C6eke{QVx&w3bINoe?kW=3Ki~Ba~Ibdr{4)K_O+`Up(xS z)$4cd!}vB)A(Z=Z=K0k?nW7zn(re2Heb*E)#W;z0sA*Xec5UosKO#v`m2rHfgJ{%0 zEpqkmYk%O81Z=EmoSHi{_v6RkXI~&W6MTC2uTBiFl<>l~^fPPMpq3NN?C$~^>^Vgz zE`H!OL0D}ZWXk0C4!`0DXC+S)hoD;7`rGNRWPk$b{Jqc2q)T@uRqEP*1Jm(njWAmo zb;yTvuRbwCe%SMh^UQoem~nNk#bXYRmk}oJBzCvp zJgsQG*aU*CIV{<0cO_O86sKSN_;Z|!h}Hc@!2bSw@H-ivvjqZKe*5Y(;$HuWWBCUF ztZaK!TMPzd0nnp`+f0`(99?YVZIOZ-n>cC)n;7;_mm3%(q05zyf~>)xhPKQK;ij5u z&V_*1?a{^+fr64euZ)gJQ&Yif;0rC9qtoYtE<80Gd)`k(^Q{ zQDyhAaQMUF{AW>^up}_3C7e#k`f9s#l!5pVn&(U{eeFFzQrF3Rljg(UqwdU-JVm`a zHV*{k3cyw@?Z4iLxvY#9TD-Oe=IS?|v3sRPe=3JGVV<#oPOn(~GQ!v~v~n0iFgbY5 zN6_|ZEy2EhJYvUt&UMlq^u)(MI?43bukH+)rGYfRKK9KR;bcoF?T5=i#kZSUYQa3V zUze|xy9Iw%_?(ufYTz>ie|RhD`;H|yN3|p5U#$YDDgagByEyG^C~4r&0=PUHam!z$ z87(`)+8%s*a`-V}mNn?&yMkt!cWtag3qJ0ey|8b2)yQ`R=Zqt5ISoy2eO-`Bt`3NH zaPq#aAom>_zVHovBS{6JWIcnFMpS|ogMVLsCCKd?%YY{ zA(;#Ya&O4yd%LW4V8Z4AvTpzgDcK0yYiR}wG1NH?utC=Bx%ZObG; z?Wyu#MI*e9qOE*=5HQE6>r{VDEZQ^n`AA@Zdh~jU)+Y3O^YytLM@ftL;}4Rci@0Xqx-_gH!*pZxQic+5ga^y&FCPDPns z?H2BnWh0}7+9u}aXKR&RW^Eg)g zyf%5~z|5yP*{yz8sy5G}oFM5}m!!TpsV7rW8P421A?&i;ZVFZ)OBxnV&M_P2vGWls zk_QHS=;{7y$C>_svpig^lK&BJx9a$LcnFJ)^?s`eKX%tzIzJ91@{bc#j(#%e2g#qg z!3}8INs`&2^~8g%rA)8Y13Z*c9DBQ0KgApd7-gKBrD>wNfK63~7yDAdtK$M~ z0MB8}roe(w=Vc08&8*N3_;<*CMrk0ORt!kR4S@#I(9jqg8s-5(tzN*#tpyoKzT5j| z>p7GQGT=0I65_%3?jK(UL@KdMI-Pyas$`3c=gx|lSKb3sd)F4}!vU|beBcuB+}x)# zvu?aaAeKl%tFmsZQ`ViIV#Nbj}$7 zMjE`(`bXC@CT3>$#qY@qfRu;=Pyi5MOJoaB?;#8*9AgH&Y||URX;M`LUW5lioLM6O zipwb(4`uTl*2qslL|dBslqTeDGg(af*DPi`)ov!w>*ym7%b(R!{(H}-^qF5S#rEz1 z$jT}JTz!1TLP0vVF>@!AzKsCtGC%)Z#J1I(f?MQ0dJpu}b8`4RZfEwtAVx_+!9%$j z?+Bn5Dd(7Obex`C6RRqSFCSYH)3!N1%vkJ0ZO6g|P54y84_;#*pX{dC?)M2EFRFGF zHk=%Y8Fd*$)GC^aJ?**MADhhS#BQSHh~bL(f5NddXFliyhENEHKZYLkJJ$kr2?5m0 z73dq+C>dHc05e4a7?UGQBoVihO=A2H+y)>qKnM1T(^9a+R8boWgj(zkE42FVR`Ahx zGdG3OC;)jrOGldqjaVdFx?c(Y_@xB}*A;<1Yo93;VSR0DOLj`0To)bt{OYS;ygRZd z#X)?)CVc$P@p0eordVrUYM0F6%=dVm!PoypOlMvOxdZR-h=L{pF92v2HjE6iX$>6l zZG1TVj*Iw*v`O{vWxx<+QEA;jo zApn0`4!BBBa_h5JOz_<7Gbl%$hkSwx`h-#lgRN7}{R9kV( z&E#R+3ViX(&D`(W5#9s%ZR)|!eh2r{%Z(%mu0 zfG7>pDIp*Z3?(@rV@%_E)v(|4f)&hoy=h@GW>%Q;nzV_bgKL;Wq;Z~W4 z%`vDRzu#m=gxo=3=G(T2FXc5#F%gAFNw#i{g`;5BA(xxky!1qdT-K2i{wV5 zM72s{qrIEm_Q+CPmc+>gW%$@{%m@4p5w5oyPnH{5sje@B!_5HD9eg12eFIBUGNSOj zW_|4U*Pl52#DSP99HXIMWg7zyl`Eb(J)Rk*cAreg?H+|=QvpO+b={8QDuGuhXc_d{ z0DO~t86F^BzUi8eUsJG}T13lLvP3!K(<9*Mfz^l4%f4)!9w79aTAOl+BqoC57aYHu zQL|;;a7Mk?TV|i1+>w2aIT$6|?rdxq@c@_-M+@WQ&tutN>Qgh$naZCpd#?<*UR>Eb z{ZfDUwH6~Xvz6*7rb{F+M!)j(i%c2$c{0ZEjwP>-6#*^&)QG|I!9=x7p@SuKgk8~;=P!^C9gg{aGq^ut|NHkzPo3v|UH za0<$O_3Es(tx~`30DZ`Ehn#KIk*^l4?l5U)e+Ns|l-(D+4lGCEjb*D$bqkAk&p(*j z6!!bD1{#K@NAEYYv~bI}Y{26^nO&yNGKx}@9J6x-Gnyy+f(q|1c4n?yjW35-- zJut-te|hHr{6iWA1%<+FqRS|$Tb-h6=Af5(Sy#=@q8ifrne>-oSLUKR?Wr9P{UwFA zJ0^zs-s_Eav(in%^QUVeobX*I;=PEO{#I|Nq^(qU^dha%iHWS%X_1ueR9!yf`Kk{g z?Q)qhk+HPDw|(*7v7HLz6ZYE94X2SPHsrk9Rn8|WDvF*kkGK4OxXHVaob=vMMTPTj&0eR~!uQR#21D(Xs3=2O*rpcR+l8rEq4-@IT0VuXuK0Y)UC)%t z^Y6m*F?(HJ#@;(kQ^TBp=sM)U7VJ(F-`DtZU}t6d9F?^V7j%Q4?$4HV`Yn4dpmxP9 zb?OwrHe|9&39^?q=_9U_U82@|nYSU^aG{)VSpm(+!uwZ+`-5tB#!guV%S+JDRLM}r z&f+TmK1z*dRs%ne{Y&g;=xMrNn0TFwjLSHhp{}@~tgOs)RGXlVn54cQTA^nN?rmfRN6>ydVs$B8`zV3ShO4&Swo)2{ zp`sDPg4rid;w8mgL?I`fwI^T~Y#oz6k7FqpJ;w4BM_~9e+2Zwkj|D- z#vQP|OU|j`Ypnt@-TD=J7Cmb9mMow6EI-YDD8!kCMn#B1orj#OkUvJ$ynXUk%nijZ z1g#W8Oq2oEN~~>VJKyc!U7}b9<(U!6{`0B)ZY7(~KrDyUY*-d;VAi`>=ZReavE1z*ls>jw$*K~|mLU640(qbPHu*g7^C+TvUS zP40@>G;a|;BQw$K)ftI$Nhy)<)%m>j?Qy_+(`1+MZyqUzZCanVNS?SLrK7w~uPwj( z*fpkjdFXgMZF}50<^*a`)paia-Hw2R&%wplc5aK7Zex}u0+rhJU-d2R(nd8|d5?2% zsIoe0=44z1J-3?;Wh;D~nzzxdc9o7!m|exy6EMR*h~DE zs9zg(E*XCAb@z29ERnp|3S$`ESr9@Qjz&do4e6s7gZy($=`Sez!>p|q7YZ6b)7)Jt zPxJi9nQ$&4tF$ZZ$%_~@b0NYGU5ZZj_xAf^6nkFWD-d5NjVb%WN0K8qg&W2`N>zO1 zO?OP_ShFlZQZ#>&D!;{|=glfgNT0v>iiI&+y)vgcilBx~G-=>LYdncLf%{X1W0owE zjtCW`VCK-MMqn9;L;h2AU*QHk5G6tG-PVM|8=7ZJ4M&ZBP|RR+E*kmF#GOYhBf%z@ zMprLI?_?z{D=&ZLSvo)>wyG?ok|zu(_ym?P?m#WK{!Nxjxi-Zmg{#eZK{!QpG;+Dt zg<9uaZP3%QAc}uem6n?X6vrP{9-g`5Dx+S#XlAYhbTUAwS`^ssY z3nxf^5auDC`4`K~4MtkKiKVJ&u4=r` zKb<$W57p;Li0;;9^(+3Ee}CZd^hD0*`*`(rm+etsz}2+?KIDd~Xky zDP#K+)NLP!7qf%L-%xMyvS7W=&kB2mPmU2y7+4GlY>WyEk$f3FArkUC7A(}ljV9pD zs39~>OiDnK&Gkg(+{KvlT<0!EyHXi#pGPi&rWLhJp7Y4?8Dm`Dr*JoH5LsG`aI_tv z7UTmA_~NSjUA{GiVsuxB=cb`f@qD|h(SA5v+s4qJKQu?bVp@Y*rH8Mi?c!k5_nX>y ztXYb{>x3m9Av2yZ<1P}yK_3xq2`9URAho68P5=T=VkMi zsKLfh3h{%_#oQY6KJ8}G5zaL84>__8iyWggOlaQpk8<=}t!Gb2_bA^q8UArc!z$3C zLoCMqE!?qnTE?&=v?9D2v&JUD?XLW5JmTq6J|E^ZtvmWCaTIXr^5vKws~w=>Uj*^! zc#@s`o}JOv0E>hA-lpq z2F3`Bj>wrO#kDuR~_LBMIxJpCz4}~#4!mv(ya6kvnVLF-ozk$>dtu?@u6NBq`)) zja%9cX1g>(w6|ang)m>t+GeGSLN7r+59@K|z7kR;a|!2!8YTDE3CC?cH)Mh6RuQE@1slz>W=`qIx;pEkHKKR>rz9!J(;uU z40bz?MCL!_l?L`}TrGh@<4h4Nja|J1+L*w2HJO`cQ)Hvsa36ug>8$X z+?;H+jUJS%M09l;4vn=GK1bb^KzDWtArdwEU<<;GTvUvUg3~oOo6$JXZWc}vay6o93GV#61Lxq_zjfVy!zm$3zcQeIfBY>`L)bE{5Z96Z+Q*2;N9&F6USp?g zU#O^7(I=}YBIqLPf|m{7d#E=a43}(wq&ZOoDRlLF_f1ZC3V&ReCzt_VBiE^g z^{DfX%E+jmU>X~$BnfTPyaOBFcv|;ESa4}^AoHDHRi3&ZvOz2HISO^!8t?18iICy4 zTw8HuT;g53p!U}0PH9W_%a(}vmA{32#AxSi+`qKrcT5Aob9}o7G zJ%aX6?yuzhes(>s>+J%YM!MOp zR3suu_7aHEN0w{QFrOT7y8OfaVrIf_ejYj=Xa@qyc(YsqYsI2|HL_g|D&zG@SYN44 zSAhr}(IdENBW=q?0P9k6Q%o@b!8mhl$(Z8F&#_}t{u@#5k8VobDM?JNLV*YkbRAB0 zW&g!E&A{L4g%N`Z>O86hzfFsYtnZ=;a>WaYsio-kr08AnYlz-qn98X4k zj+jB^>hR7Bdo$*E$%ij@x*J|Jly#x*fGvoGQ(yun25$FNe{VIv0WnQ)R}`NtKRn4x zVYJ|aOJBZ>#f(ci?Dut^+yK2$dEG&S_Q>VIvBdq%LpS%BRaePg2{C4vnA$|mX=1P4 zx=A*nSzO%C1LuhOUgpgn-&L`pcN+8o12va+HfJjbBFN6)a}v*cw!O{CY9YmCr#7I2 zI`B_XP+j$$+o*r4L%Wjk(I#u1b7b$miq9s#1C5tnK+Ou<3QUsAuRyV0yrGHy+(^-`NiJ*e&pN|a$hsF3F`-Ju40?D+n2X3A#Bq( zG|Y87gN@C3Rncu^*K(lNVD{uKp$RQQNQVa*h_zAZ&>~GIr99y5&QQ?@gym+?D&{Gf zIqcWX<)&Q}>Af9_l_q=`IgVutBv~!!#z(yj}+@3{;Z(zZ@IU^4!~lYjJ3GY@#at*tUZe@BBrd%6}Ulen?G z$HGnG%EMO*`M!H2qqq1|T=`PAp0;c}9p0#9VLpzSC7p8Dh&nk8#6RAhB;o(#!a?eU zlcvQ3VQ)`}1dUjMs}A)=xa>K>nS~aZ5kKD_Rduv!9Lg{R>F5-r#HOs5?>z`6JfqnB zD+7)G(!r*`7XdY-a#dWc52ofcJ^)8tl2wtn9UN2awfWYiYP&w@v=p6LJy@~`B-lA? zcQj6)1x%@lA>P?Mv^wf5s7-Vz$USB5aj6JUvepSJ%eC~ewEx(;y8NgLY1&ZPD z)^zlOmjW+xH0e%%h}-hBxdtjfnaJbbxYZ%ReITOO`JzhPz0kMiG2v9*64_it-4f^V zb+rZa_h%ajx$GJgDQS%NZAbEvNa59qDn;+z74Imq6si{x;oXQjNVVevQcthE0H!=q-jp?oU{BPV&miWh2yTx--+C zksmS>$Bf4jEqCYh+=;vSQj#c^JU!m#TslcH+|6>?CFytkIuh$|BIlhsxMXQJ?DxGp z!E)T11xL?b40zbE4qwNKyy$1JRp7{Dz2(oT5+yiJky6kx8tnJ?@q$lF$|iTC#}C`fREkMxK#v9{luwkF_<_)8^pUi&ANDYf2irchR9my9PAR+8SM4~3WItp_udjA(B!|yG2Iu~m%f@AAGYyZHBvO4R=!ke) z&OpAAIhU#M8}P0hcJ=a)_NbCZP>V3h9{``Ecy{*abikP92c0s^V?&hdv|yd>uZ|tj zWF!V-sJ(eyNMUHQ3Fr4f8TLlqRV8bM!;h;5kx!i^dy2Q~UE_9E_FoYoi$&Yi9eHvl zwPe3wd^(&LE{k3aNO5^+;s8TA+7|1$&R?o~^}eL6MmE#nPA=8g`0*Rki15Zjbd^D` zV^pRQ27>w+dOZgg*UFc1<2BX#XcqvnoI6}=Wjei|uT(|vVkWW@#Mp35-S%-WbNOk4 z&+YHqY+jyEN_MI9HL)xW{JPVTU?VS`?ai-_t8B~c;Oy2L)I4}Yg$D;-k{oC6k2hTb z+tO&GbgX^2v$I2RDZtjwE^7Wh$ta0PKJiCR4WmmwmSU=8uEi%kv1tM$^_xB&JMewf zx5IP$zG}s(>$?NQj_O7aTtrpF6KC#zJtXMVk$SL6rL!q|kyuSiP1uh=CkoAF*A?Vd z_aW`5T>m?-!?#|gFK%`<*D(w8s*A<-j7u+4##3pWH3>@I?YVxp{<#egCM;vln`=sGG_ENo@O@1eL!)DaO)#EOo^WUHKUdQw| zilnC`BpYNK31&wMW=&xS6MrKj*t6Mb>JQ_!2COm2h4Bjrbl&@(x}kQ*jpdT@k^fUh zbjKDP{=P_EaA-k_#kWc4!C(N(xr^WSQ<#{TzIj0&?8kA*Kl2BC!EiybkI6*eP^N={ zV_$nUHNM%ajrEjs6>|OFUA|I5ECF({S|F;G0MXhI zm+uB4U<@UW2PKlL)_{!L*1#08^W@LbCpO)-Xj#*}PKnG_^>Kf>~+K4Z{Yj72S{ z`ZXm1<-q`*%)fWXM#64+>@UhnW$)RYsXL*C?H7Y8TZr(HBqj{*T3<+mio!*b`+O z6Eu{k;bNpiv)6Qad-sbI+n-mu$vrmUjeI9^D6Y1s=jWC__w*1rU1{GrI{HK_k2;!@ z)_83k>J)0N*aIbS5;ggN6i#mRcv!?isWm#58yl1+z~BE)(IJ z!&CbLdY`Ob^2Ik4PNlmlkn)!veZ+wwZB zb7fh3Paj2xOOt@ig5i3VzG)f2@TW(6&dK6%uW49OQ4w;r`b#BnoV4<<{;GoM(iI@P zvyJ6eWxm+-v@M)E3hjwRr+5=z{XF$;ePz5t*li^q48n|&krA!J|6~fm+K`RgIECsH z>ie$W!zR9b86FzS1o}4{z@2V`h3(2t?>B-Z)8FVD7?7>}aW*d0l%IlDE#%#ImX%7* z&bX`07_=q(Q7pS#Y}UpuTZWE2w3mX558kuA%;slp)2R0Jp!OX|e@sWO9I1r1g1n^B zc}2jcE!+<;A73eSo!M&@+y;joE`hU&2gw@uq&-t|3^{cIS& zBUZ8eW+)?qV)5QEH6pre7hmue?p_Q)4=(p%a(oN8!^EWSa*V0 zKP)ghTQ}2`!3|WCY88c#l*-12*vw**S3=l~yQ6QbOG{PDtTv<7YUV6Ikbp2)*rtoK zUUc$SSFpt<8}TZB*PZh0q7Jf1h=O`cCwBQIt7uXzV+TgHgR?~XCoOE)VD29?cj&tm zqmYGLY<0X_(>UzjcxWUKQB-^-4i2U*sH>~1JX>mDT9omT5HHP&d;_ZY28#R<-dAXm zpivDa&S27(EZcmclnbAj=-XY2jQ+7ZekhNCv(j6#CzK6!6F{x)mokah3Vk@#uJwvx zlfXoUt&DLufQUJ3KJ{=CJv1_+-O~AMSmBXIfR_J?w4e@W;kIW^QTl$F5M(}#eTXQ7 zGC;1B?WscXxj=B-$RqQ0l5|nrd0=2$}QR9VqzW(D1O9N&=4quiD4O%*jMlOtKO)8A)R~1Y-@b^&biV)#s zZHAk9Zen=;mYT0;zU*)Pp_{0ZbUz)pXpw`1gWwX{aZ^xSyjYDn6D(!S&d&bFgf=WG zUa$_sO;5bq>nk7tOcZn)8LzO`Y8TNNnw%_5bVSNi3fSwmV17LnFE$8=Wlb>C!E9xa ziB~f)`10H?5uAT;5Lkh2+4YWzpR?<6_y%2MJ#{&8dmz;g{8 zEd4HN+5a0J|JOkKzg1vJ2bU6=COiybshHsuxv5>*tLgrju~C)nfVxQ`K0dy0W4;Y` zu)X9tS_QhU`itY>=VTF`Jf2@~;h#khj6<$^^(8OmEWo0#XxDm-DKMKU>c`$wI1!Pd zQDSxc7V!cbudt>U-tcS~H@^U)d9T&Ue)u}6eDXO(tiYlz+@>p*1NfyzEd;+|F5>49 zgi;H{Ox(~ZFJWJylb3lUK1T z;>&@pR@=@6m$yktNw6cZpfS>Sw<1*@;fUI|3Y4V9opA<;hbqN0m7^{n&YQOl2ME1- z#V+LzGa?4UYQbzg{g7d(NLN*NM7_Y?Y@b4^Kc#dfDj|zxNL@gtBZQTroL`^zwnka^ zN%YVyHo~@VcJam*kwwqQI0AEu;=+!d$rEVxEG^?o@Yi2!%zed)Z)%rAN@6o`Gq zwnCOn5}V*=-`^`z_?XDZDE|ZYcz`WNVF?JH4pyD~3UDf5L}qL(Dg0zBRmauU)rR`l z;BV5G4hDVT08CsgxAkI+cub^Z^4oDJ<9jiNYYQbY41p8YMS73d6PiV=YFs*!${8)v zsqM$_GJ20`7W%d3sbx{{Q1r;9ukvEAfB#v#Sd=FQ(3eP-uQyZK+ zlq)8q+5aYMD6$THDX=CubGFjz`X&9L`EtSM~I{qPp|y0{98Fk)UmJ_|&dO>*6y8<$R_TQx6O# zHa3?D+rT#+`gu&vU;~eIO)ys4J~X{7y$u{ZNiLgXXl*qR94Zmj|-_}X5^`Y z+Q!`5F2KE6=1tvK0&AW4gREvGX%4v8DO6*ccIV}_WFpuT=SRl3YM{J>6^YC9+G8qzJX#< zhb3Z~<|~3EtNfO&5RJCE4#w$a7g49eOyFlEi@2+#tDSJQ17nXaPfrg{gI#I%F-WWM zw~uA>({veL7I2uz3<|nbRaM1NTb-9D|LlP&N&Xoo)e8JHIK{WZn9n|2mM)$6S2TgA z`0&4tAO1J9_TSo71$Y(k0=|lM;7o!1PhYZPJ~R-)#N}FMCkVXY>4DCfq2V* zBBqQlQ-z#XD)PEPp08av>;jJkeoSiB^)}*V>NiHtuZx~d$D5bU6+98;{fpPi)>Njn zRhTNulc5pdIeWe1u71p_)15Mc84KILELd*5VlnG6))BR$;ojmmc$v4(+<4ja&bYmH z_&jrB59b~rCxCgHU_1+px?ciED$Ppom?dveO&9Ug>(t`jya^Nv<4Vji=xtp{M<#GP>70adrVf(J!ATDU5?3P0*xBQ{Y+PJi)JyCI*k-T=MrYniQ_|1C zP*bn(5h5()YD}8VMlW53yroHjn~z>z27B}{Hhgg|fKy|b88yS)5V8BhG8Gzoi}d^93Bu$T zqTtz);7ql{TXMe0bU9hQT+5)mzECI;k$kecw8+QKr1F^cJqT$^WaehsLrd47X6j@D z>maBlL&r$dtJtv1^;-|g>FIz$7qa71x16O`RH;`Y8X_iH`yF-H8vpId6$b*@0Z(kV zu5D{VB|ABfm9gm~C{TFKaw^mDn9JY4B;8N<9Lo-?&?BXgIN`+n1gJfJ0Mx3>5Sma_u$M@)01PY zq-VbtOw2+}P;gk58|0cQ(;4VfV9#!m}>w``hA{j~V+N!+^P9zMWLxF|)T<3rGsO$Plm! zRl7{`SC>6$K*pwW4**}-Kdbzv!c}0$Xjh(3l-Z4PI!wRUv+hmNqFpyscXh3BL@qG_ zcFT<9H}|DWfn#vkwXGgl0nJu(=xzcg#gFG|X}0}DrTn#P*MI|J@WcW5Wk>-~Vp{>wg*`%+JtI(c-5zRAavo zXhU82vOksL#MBnBSHJEK8iU{`0x9WE!R29!tU)HY2+26bo*SW{om1OVaWk}GjI*M| zVAgi@cjFA*{x{2=mfZ*Xv2+cmES5?RTw{s7S@wcB0vBA!LwqOI7jeC ziSa+#CIV{`FdEnJRZqj`s(5>?foS!5UImEua%-C*bg>Zc)VwEtN-t-RxPkEWcYaW&S;)}^UD?*Cx2Cu zv1EERAF_#7RwiocZW&9}M1VQ`t2FUjWZnQYis`5MPOKV!!Qn$GM7l>=fkLi9|8*8u z)|s*vjH<|(CT!6e?u#r4pWeHwfC$z7rGq8$vX%GgYv zzQkx~<^=89St)>FOT}O2a^u&jA6O>Ev7p)bZ11JYRX_I^FisXfv69oy_V$V+^VW0& z9x_4i^-oZHONOcvwciAhF4Jcr_~EIqtg4W**X~TC35{LijUwhCvy;JGW537ssDZLP zVVJR~BR3cy7vJNw0BE4h1JkFfbrDCVsWr2TJSGtjMv|Nu)7 z){@Y--!*=8X!>exZ)|<}ZmQF8J7Lb#AE_0?Y*=9#oHuC&G$~;btg#_1+QOtDGwx@% zqRQ%fpNTh?)yVu)R48SO>VJfvl4ZIlu9aMz@7!%0aB>Nam%2)r5VpFRKT9)k^@%u= z>1|vEElDbITIbey+;C+5tLxJ6yGEvG`0c*>`K1cP)%>|17gl|Q_8LF+MQi4q{!lqy zl{!_f_j}WCGTC1|rIm~IBK-lMiOU3O0yzfAsuzHRT#Ck;Ei`_qK$4KFj6sbfhfn9? zms5elb$I6p_D%vt?G9$}9Lz@TBu)a7O!o^max<1rIgAj+kN*v z-Y~2qF3s5XNxAD>sXyxS8%-5;&u{kAn91;VjJY&jTS{;-g9AfCeA7jJ% zrPHUda()sSk(e`}ZJOYT9h4|gF%ZzYkKQ|2@+_INob7pdy#2hQyvmI9f3olY2Cr%X zOp2)r{W|*soen*@4pHD+?R?hmXFrkAtH!nF&VUo&X8lqyFMVU=o#~>f;XH!>)Zd@q zszThQz5wm#>bMaHof(cC#SFpQuCeKmveMz8ymWeXvdDY8xv;6Losw%YT@|jB{*PKy z4CY20JHOiQ;)WkmyC38o_={J2T77Dc*%|OWUcD?}LX0WfB8(N0LSD4n(wdeb}ZEIP!L1#2VnS!_d@s+k)#=SZ~h>dDyk zgXWyWHtV#9p zzPU4Ne$1M0X3d%(z&WS;oLyDBcGXi)?L){%1xd6wL~r2W;LxO{#6Q8oz4`_R_hJM2 zCG5)ff-3>+&kLtdlA>^BBP6@969jXRJO~c1A`0cf@D=R*wY`+46C50R=kw2tUb_Ml zI5=-XX>pK>o8I9P%6FYh!)^D<&v#SRT5qk( zx@Hs!`}VUM?9%cBz&p>8o8Ki>5nQ8!=glbP`}cGE>v^?bw-db%?)2qm&oM@uk1W0Q zWFuT8f|6oS+DG1<4@K$DUw8N@t4>y%1Nwz_q590iPkyZtTbAY7v4mYW`%LBc;kOJU zDbCAvnS7f8H5U@os60NOt@)rmE6}s>?mdl*GtY$28drNt%BsYK2ryZ`B672UgIxvI z?OLnX=A(vF?hU@7mEqWo(p{mVA2E!vSzTYuK<~)f{Bp$Pq#q3Eu1Z>=X->A@4babr z@gTX+2dP}e`E4IPCeR7H5|E&GjkLm^V%IwM?WLoQGksmzVsTPK)zZy2EsTtI5uI)=GJUw&|S=fN6 zU_T0x>org7Y*^=_8X1kQ3sr65G`tdJIPD*vS~RyiTyt9V=A*H&IK?JDZZOyi@+4c~ z;(%^-o{M~ZkW^alO$f!JowoHlhHn~{Kr;b6&jZoe0IH~l>pefdu!e#8#XP)VKlsRXoG<){D+dNZf zAKrXOP}!UNsV6^od}FugFiPKb)xBtCE>jchbGm#}z8wy(`3SfEL{=MwQ){d%!~CB0 zvC3&Qerh}8ey;fF{QA%S(kc}H4tk$@gbk=V74>SpXOe_{+RJm z0^X={pKQf8D2y-1y%d6v%iLhE&;y?_TjkMje%blID6QE2@rbV#>6 zWuotB)5+QkAkl1a)HKk#aRAuu#S*l<9sM}6hBE%5tHvlDo0vT9eidW1$#ywN#Ou)N zennYmm%J!06brr7hlQE{WRF%%ZKlGMTDK#QG&Y4E!(KKTRFopIb*)iv!6#o_E3%1 zPH$_?e0@i6_k0JZ)Y+KRomRmD7ZOIEWQT_%8BV9pOb0XCk>&en9syOfY5<)9_w5GE z4LslO=JTZw3PXbTe*3m{g8_eSayNaM2LyoB^|R3=xLs8ve|v=AB>ZY!w}y#q3j9 zH+d@0jL78j*jd<<)v1-bZ5t!yqlO<{=@r*^9WM&uuVYt&Usl60Mm^v18Oq2$eN2A~ z2HZciX*4>-d!pGbpN-qKw5}$#zH6v@s<{^VwIE0QMevu)dJxoSJGk)e-I>_FnTUgw zewxSD{AthS&yY((CPe8-P1r<_fdmh^JilD=28%DxUlF#>URD{<~25VzT! z)ra0rCCC1IV^(ONBx|G}^6Bp_>Wnumj~Y2MmQXJ0t}r$r;roN*HkauV=~n>JyP!S) zHvIKFb&aClWKQMS^+cScO(P=)mWsga5h@L(=5nKqCDy?L)I<*p*BFHz!7H zv?WuQ9QLad8rpuTWAyza{H0kV4A1>n<7{=P*jUzwYjbzSNQ=LDw54IO`y#HD7~f}? zYkMTadpVhF_=|CIxsb@M$l?qsBQ>7S_PV!|nb{(8jN6_6iKWy`=+df?6GX8bwwh66 z`{17~;uZq&$vAHK^I+X+P(XY8BJq5*`H#!_3#_LBDH)N3KbD1;sIPY=b!E-qlx|#y z+%&^Dy}sLT1dx~9?@&Rju<`@zMq0i1e>JdYc>bB9*`G?@znREeQS=Ggj6t&XJ;Z$c z+WkA|TIBv_Eb&y39kBXky}Z2nh|Ao!$2V7EI6L-2Dp?;n#wVpCpF)>u`u4^vo^|T4XDBWe|wW}Ca{>ZxXmq6Vv^{4>rFLAuBPKa-45>;Og6vOfPK%>vwLSEQci#m9fKiM zY=V`mVA&bia|2SuOsoIn4ymB<%j;Rs-5FNs;04m_G`A=d*WN@K{{d6ug zk@rzyEz!2%o^AQMMfXgb+zQP!;P4r)eJN2h1MCqa9=b4I8(+yZOBOfO4Hn9Ae@T4K z>WbdvUC7!CztS5P5!VDYXoeGuLTf=av|S7qVU;PuAnwv z6R*tHGaffMllHpkTtu+ku||F8+g>73OZU1&Do;x|4HLP(W?ib6dC;{kh_=CiDVt?n zLkmuN%UyrgsOWpJc7pDB8HQ?mxnjm%u|0L)c1~4w9{d~*SsNk-3U!*^-U)YRS@oVZ zkcarN^)%kILNBnIR*Nd=M&h)T>lfsn@FFvpE`%O2zZv{_P&0lM+8**S#m#( z?Y`m*J8)ZaCh#@fC5iKdB(XE-)e{Kb$n``bv87G!`wn+?&gcqmf4=6vxK8sPd4<2S zT{LxVP;k$_p&CJc@PjjWo-L*ejglv${jhuibHkkZ^DNF>%hf55-Ce6)8R`Tl$5{zK zlusu(Mqix@(hsx}6f5jD$Bq!T?=P(zeLM;3*6Lyu7OaYa6P0TD*dmVTum=ewZ*?61 z?cmMoD=V?W`@|C8`$1jgqKC-)NFZbJp|3FtY7q5kikDCO;cEGM{qQcAV9?g5#>#qE1pF?=Aa@oV}N$Yus75$8L;i&Ak@b`)?%kG&iw%x^MvLy2H3wsbKzFfDv z)7GF})|W{%mO9dr$12$+m%8bXuL}c;4{KWpjh@(SClzDeLd!h8?t2VsD%TsGMe1dq zPQG}*l{mt1aU}GQe!}ACslA$398IAyYm;~qKO?KPF#iBR(OvWHHM979Vt5@2;L@$9 z_7Oai%<8G%Q+m9Z83D$Qetb~H>F+jAa`S=`3O!=y)9STerX_QkXT)4GsnF3~o?m?; z>?-72xxwITT(NR++}LEv)GlgGT79BY-|A)&;?gM`9;b~p+y%lg8X|jjfT$lS;4t_g9 z4@HcI6`yc$7F;HP_v`bHO^SbuxU6B=AKs;Nz++u5PwMbS92dW_t-vBsB*SOT>_w3VTd&WB49A$)Q^-p$taW) ztvUPot{;^qkwEbLkkJEh=?g$(xX3M&Y{f~#W36Az)IEE}RCZ|`hf&upf(Nr&RvZr% zI7#Q?5BEeJ?uVns?1254)bGm=Lb{HMxh8m9)&mI~3=M&Sbe26-Hd4t>Jc%0a^`m53 z%M0_p<0YsaWtwFozP}3}bhOT5*(e({9CXbol-=E)=i^e&7;)T8Pv2Jog*}0ORh8?OfNyQ`Z#z+%O`WybLpOdlC5by|*EZQL*%r|&D6$-oh1ejB|Xr&m`*^sC!2J5!8{#wWOkJPc>Vv@Btep?e3q z+90j^GkumtUihPcl$G}?c8mwNG9H@%1%H?auy#zurr&HFd>uvQ1uQ#Od9@!&Cfb|; z*+`bHVI$VvN-5YksBj2i8SoIzWA>o;tDnxjdsFwuA>G5R@MVkmW2Giw`G_(!HyLKl zuOritV{r6>PaLSv+Y=zPW7Ed=oduiF|248-bVmf+s5~OYf{CKxCvXXm|2UW)GWp6d zD20h&4>HL%pPeFh_!Z0CDr(IIe>J10<~0h7dctz5$;bqP525CIBd5cf+IPJMCQQ1r zbV2oWT^n{VgY}Uy=AurhR%H6`5gPJPhV#p_A(t;vJS5BqHgDD&h>RrpwnNDT3M$SE z5gR|IZSlro^ha4WNFWL2DGX=tD*X(vxruxD*%(;+&cZ^md&SV)iBZnoND7{A5F?cRw;c=6e3K|0zbSZq!>BCMVa2`d(}@_6W>e_vr#&uMIBY& z8GURA0Vok7z|oX*OoHO&28{=AJJSZmM4}M`?vZ`T4p}=`!is~hIC3DdHA;5F`2F$< z*t}W^x{{9FX8b-Fn^xd>x@l4o`h|WxL@;BH0`4mzB0M%=qfE(%swgHeuQKVA9ct|@ zq9Tu#(if*WKfdXy0vRth0@GM35Zp7Sm^sW&3{;NozcV;F1&<$?Xj;FPl3%AiL1FcHoCnYL{AfUa4_s?Hz7eMQ55+I~{&`gY*^E2sL?%4sZ|Y3(8r3^fY{3Eldwk|3-MMODWT+xdD?IaA*=ki;Wu zM{S7qv%t6?wGa*c;PJ6H%mBNXDyfC0fGuTQmw-nRIXQe20AUmjk<&n|Hkm{EvXj3y zzWVB$?hqR$#;HPPnFGaG?AL@6%9QGq^|xL1TOH+8X@ez##!KTJx-FLE+_KhN#vJD; zTY#S(R&|1KKTQrbXAK^QA_J!awsBgcvdC_z8_#;FU1CeJL}9=@1aL zC?8vq@XPSHw8s<)<9X;_>Ye)BemOM@nRv zE-DJjZ5X16NDYMkA@E+)(TO1B)n9q{I9$l>L&cFBUkniqKSU>rpf=75aON?#taCI) z){7p=4n0AR8U1X+=qLU3Pj&~^UXIhKPX4l3pibHho%8S(_jvebY(m{i;U1-*i zWLI<$#Ykd0ki!q5cCq40_aw=qZ+b^U`*tQQK|L8`()l&H3>TSNJ&Cl=K8Hg*eIiEV4nN2>ipNa^4d{f7SwOpDqHsm;}v{Md}ebQLtxiH2MCjx{tubebL2Sz zZXqy;os|R2xzxT?-fjZT&HT%K^;|D4ur5W{X<&=+s}<$n)Cvb@3jCjRP!I~ypvy1pQi-wqhW+O0LCz; zJ$}25Do&z^2lef>@{{vU#qrn>cKzAAkC+1I6`)SWf&9tyl9v)!Sk{C78tT0RnmNEY zYB<%szmwLeZ!u4y*=wJFd$DyyN51F61mKzB+a-Yk``y|FFq-E?z8AyJzhyx9$DUaf zu$y58{d#Or?~p`fqMeZEh>-SBH?^E1B1e7WB8*b890gi!p_cXoduEpSw^5z&1D$%( z1ZE;qpQA9`*CGpUFu`7`?mpDpICNnKrWU27o&tqP$Z6lX=TJQ5aRj@HFh$A@9&5Ed z`Kr_ftCba@KRT%uc@1UApCD{#T9@K9^~*eZ+x)rA7AAX|!lS~Ml0G_g!4xA&lXVUq zDu2z%=#NSn*H1EWEf)L+mwmSF6*j1znzAVEyX7E|`C9CaZ^>0q;)Ax-(*+liwB~w% z4k`%l?~PNcQ=>*W{8qktV$s(;vpVfd>jt4ZBkc9_fmnH3vc341@+@Gfq%(7ljfgkA zBmh&2c=9BdN=+%(*D|Wc&WGnAC8t=lyjQyRFJAn0MHLOFwm8noYA-s|h~R8n@Yl9p z3Wpgm8ifuH$CM|z=wvFW;LquW1SbEiVFDhx9*rS$9ztcdwS^xtxm`G;$$3mr)`llTpVZ zE+{;tBjbE7FY#$qpMC~Ua9>#`{ZZE-uuj4DND7Z{_kO>=DXboxTVT8S{Y*7a+hFl< zQ-Q}44HrN1{fLeMV=g{smFgX~T~QDUAUx(Je30`+#Pol~X~nMd&618-v#1Yu=xBHR z8g#Slasc`77~!a*Nza7tEvzu`Rb9bQZ>!!ct<%%Kzj>5}T1^jW;;+p7X46cY$avUj zZBLga8UW@E!@TcVM7Zxc(uDq;&@EY!-6jWUz;?R#m3eFRN$vd%I$27F9RY+xeB1P& zuc~NpaXp7%m|}wexjPH>fBJzlXR!I-*?^-RrAB#i^nWdQy_YrdfoB}sbu)yA$r%9z zznA@`Dn@hK@w_64K#1QG42lC~)&kIAr`&$1FIn2v(BivLh+(G|uyv>9S4zYfg3k*( z9Yf|su13)2QNd#S3_H!jGyzz=uC*$l)|-W$zNhK~j$wVC`Y7G}3nuOS^s=QX-Zzhb zE^7JHxpM%b!35M0GzF;Vzb zts#bQ(F8!6oetwp-jvj6TW@}-Nbmpn@ z3?YLo0iK-(C;rsMZT^ahAN1AhJhKW|0a=U>9oO^NrE!X(Eb7>WSa!T ztI$pD`cUyH@33vR-(njzr;x2w`iZ*>XaYzN+io-Jfa~Z6H0todOm+EV8Dr3O0j+t( z=KVY5=&;oB$;8V9-SVck@^X=Fw8ycru~+yy(S%~bqDnMGN!Faf{T2(TqHT_o<@y!i z$*z5xS&U?M`!fdb~2k*;b`yIfyldPlLbuUVJ{AV<>!k*j##1LY_)S zu>wfUoptbGrznVc;S$q}*d4D-HY!gBJo#r)j!tpd;z)&0J`$I=)X-}w-Dw1{L}fnI z;Ive4Ii@wdTvT%?%S4pd)|)mk5w1zi5nkfJQaKO#xE_+eMegnj1Q&!i!};0eBET6; zU>ye^HZ2ZKo(MS~X`6a)?Rg2fCscqcX_G-0*9Fk6a*_}NO0KVf=Xsq(?P$B{mu_ z&uir=N1Ig8jrlt-vfS;JCvK-uF@6y=r4motK=xOhcb6@nY^(|%yA-ygngyakD)6rF zVJl7t>Rst;PTZzg%aY^TT3FX!3%n&;xQZN@wCkcv2H|WP1vkTq0>SiULLy-?UZyGd z;UdZhrV15w`c9ZU^%mQ7nDRpbyGJMwOuPrH`#he9+OjSzFew`>2;zRu8PkMXJ9$o2 zy5_RL%r+>?bUPWXo{--AeNL7m7zg9Kg|gTZoy)w>#?m*`oR{_Ru;sUfee5u$J@*IA z>1ITu0L85E4K?C0~UhfU*J zW`N=9K$aKJ86~A4(b4`83DuK2U#X>Q#lc+-CX)?8KN*vfPU38wo;_%{X`FW$*cF$Q z<(reU*hY{;F01B1Pmj9a?LMX)-1~h+3~NR<8Jil%-6(%sa+y@?vO}STbH4?!$G+a6 zw0Ps(6JHLZcwGA&xRH|=&^k#G1F}bg1sybHJIA1|%%jXZ2(ghw9T&dZgPJCUb_IXI zVg1aW_op+VKRY+K3YEpPRnfSDFPOSoK6Zx`$8K*?=Fi57<>~F&sz_Jc6To1ap_a!EhckAGiRUZxh0t%I<^5{V>8a_U5 zp`7NU0RPTGPrqwrRj%s-p_MX*LDwaS(^Vl|24y$yX4=;c-*e%?Q0;a(u zXK=}kzngP1r)IH4+fQKrTVT+yFE#Y1Y`z>{+oEl9i%Q7+GN(p&{&9>_r@^PhL^9dT z#t$|{q+G!_w~!6x!oi1gk)MePca}TK?xw!i<|oQLx)Q|aag)w_dBjT{HHF_$jXZcB zZ?DUf|FoH(#unUvVrNTDd*U+)RLz}b*lTOti+Cr!N?BQ!KUn_Q(0B@3LTe|51rY9t zyL{nOj23Tl%3VgKwPnj6D~K~?Q>H#|#@}T`J!gmQYf#pDjWMFqYZJg^@!V+Jt!u+p zhRDtJ3@_>vKmNp$JpAcsvCZDoPoDKTh4G(lC(7baAA-2H)q;;!b7s^T#V&3aGBlLi15{k1UtQi;esL)A}|~*Dru#FvOFtPZJ(3f)W-J8K~XO07v_e< znTSrbw&)|fx_hD1T3rsYd4+LPk9YmN@^VZ&4sk8w_a-r)E%4(NUQJACk^*OM=sZ3o7Aien3F~FhSUIX2;Tz^F z=xLjMMOa`ia8};9>Pv-{3}0Sx21maC3pN%h1uG_t`$yZBWP|Rn?Pcw1A-jj(i_F8v z-AgV@hlAKcxq}-8?KPzIHEp9y*K|y0MAL5H{nFJdbdVPz6wpa zfbI(3W#yNcmdOF;mzRHW1!LVauCQu9w{tytZHAv-RMA|;bqJ-~adx#p5ibU8@GH*kH6!%xX@bp1J z!I=)!=y5TWnIs=8ST1KT{fmbFne)GZ>c5cge?Y1KnK16_hkr0ucI^Ml`0@YVz+FGM zf?IZEwtDpm{)JcRyB=;(QXkZ8vRrL-Tj29J*oFSm>t8>}y#u?Awg~Vyp0JBRJNkeh zrA+|zldveVqqep59#@_QJnOwd8d>&kU;v1P309yH&n}bUgB$pO_>EKb{t?!?>=Q%8 zgdw{Q@I4SN0`;ZoGux0Q5CanL12&$}(||3yvQ1@?6q^RfWLFlA28s=)TEON)UVS3?4}lz z`RFE&Y8%7g&>=xtBAb`@T#A8^kxk>K>Vn#CZ1^eog)Wy|@w5qm)BFUF8RKb~Aq^D# zU^7=nZ#VDv4@KSp@&D^6OS*)C*J`6N$JxxV4`>J>cl(7{)>J6~@X-X(=OEC5W zwL|^Z#ROmz1>+gM9*O^B(Om2!u>Ca(0-rdf5knL|WB%-9zg-9=6y+5+pOgxjKeDFU zQgL21p8$eV04ZaJ3hK}Kjc`T8aW$Dipw1_NDd4CrHvAyV0+E7v?*+`3WdBlvfl!=E zrxoaW;Nz(e1V;-zeL=*GH!(x->4{ET5~tt=pXjckcJL|(5iy#3aR%3NrW5*$peUyM z5sC}SIBHenbHYM>BQ~M9KWYw2ltMj52hGcN(l^Q@z)C-GBcV6}UhsMNJ@5coo6JXu zN(~6!L0}mK4$10#VmpToWr|983OYpX2q#?v#c&|cqx?%aNmIb8+445#-Za>V(EkAU z=j*Lz1w>4ACdrT6m1F2Mqr=FYsZw9)z&oguZsg*7ZP8u6=rvr(PP9l4kA44DmEl5!tZU<$@ee@;dtDZj zwG;9?O zfrnG|uUOs{6BgC>qZVwGmJoJ174;;9app8^IN4H9A9zxehZ8z|5-Bqi=_zbe%cI^G z`rRL6UfcG>l**>TA^4V)!Z;`-qy^l$Qg3{|tG@z;oJcPfz=}$Hh{!xtI2b)9-8Cx? z*6zuMVi#U!e*L@~^jf=jJxGi$U&1rl5fM|J`%qWeF-r@+?(EQ}sbI|bi^xE~U|wF! zuQ&7#WuJUX;yeT=+bA_H698!*mwT@?Gioa2`rWEu1&*pe&BYljtahtCR=V4_Bc?Wl$>FkSnRMvN@6$kve@+l*A@8<`ysZ!Q-Deet|Ajb=Wdv=WQbS z&iZYG)712}UYm``V-8^QE=tlzTW-l0Uf@Qi89BNi(9_6IHY2E5I<>nsYO!$d<3y zVg(#nb4jjDfsnT5-5sJZGl?ClhG;nn&0Xf*WT%v@#&2R#-X_MwTznQ|v`GW_#aqz)QZudiDgG(G{ncB}CxglX$`Bf4LS0CQ6&hj5 zD4W3g3-bhqoDNjJTU=B0J%QT($k&Or#Z^%m&`F zfDE8+hERr*r)ti$-c*KadJ%2%6AQ9SfrTi4TFWoo)^EbHiVS^>+KtRQmDVgtF;kU( zQ;jIQXVCt_>IqaOL52worHR$;_S!Fpa`|nSUSh|BEik!%iOPK+IJIF zi$9rq(7SGKL&8pn#RcjR_}s^I@PpEABhzb59GR>lzK@G%q}FT*k%=f85lvAO z{C=Q+=>wdzPZlh$v0cz$Sy1ygmRg&?tlM7ATJ`H-5(3Q*q#@<^Z`IB+GwcAWWvb`n>b1muPWrB^@8+gtyb!`$8)e6elDj>VHu$<@%l2mIG(4sF4V%eK zv!;BZmC?I`ZUp%I>{wDi6z8q|DFVX<1AjN&Ek+CMTC8r+s6B!6R&nmrnu#`7T~;2Z zS4f^DDih?F&!k-QUBJ%qK z*#|`UhmxaLuDAydNw~#p$CQMw&`){DQqKo0X{&=N1*3WT?F$tYp4%PTYBm}fI%|}&7 z9+z4122v4S61E(*m3qM=#v({OJzA4lh~y|)5B@d;Y0>SBx-23;);M6$b=#rJgQy~BjXo;K7>_z!Pb@V<| z;6xOXe=s_;?>b>*<@4^A*0JqXte(yh<@*{(k6Ah#Ule`)c5eQF-&&>_Ns0zNKxSTz zfzZFz`;XX)X7TljSz?(s^i+Odg}AN-PoPFl(Ig6B0txv#Ju95a=p_f|$hZnFT1IBnuh(72bJPwQXlPR65 zJ2YfcZSP8PN0EoM4D1p+Cv3mY8@Q-lM+E?iGE{dvT#<*2G@^W8wz7A;O&37Vy( zC@>CD+hEgmsFtD_Z?%Q31_JCF7m1kW)$SFwGYY1>kKD59mM&RtekY99f>d^@r-dI4 zrt78M;`zVtFudu`JnN`Cf$y<)Qa|N}zO!Ymf9Xj{g)9(Hf1Vqh)1{29D)}i_Ym0(9 z6g=oArx|nS&=obT-@Q4m^E&5k#Y-w8$|Z3Xy83A=yqR~NBlGnbl%JTv_K>n=6M!%C z6Sqmja>dhl9bZ_a&vnKC5V|8~b$jQs~EX&Wd(Y*ZR@f)-miJo}{=D&Lwfamj?Y-TU4t>)g9(&UNo9{afcArv;iSqiX{3u%v_?+=&5s~X%+5N#An@$zW=BVlnSD#3 zflYGIQJ**9B8dVafC`|g+V7t15?$7^MOr+}qSUMQ>sL6Heca_?NshLLQX=$y#!*8?Ir<@v#5 zb}k4`q&kIacb+#i*VEDo#Cbz4`dF&t0wo(YqaVR2|{q7_achT0MjRvCh>~>y@5@fR;3mX>4Y0eCQotoaqO4^ zMT|^5!L2_}--0t%=QstT$p!Qh+6G9T5wenb@)~mP1(eG!~ zYJbY7_iTFU9>bHsf=%P22db$%v&z}+xNL|mFu!rTp!a|iG1_~QHW$1Xt$y2v+~((o zx6~!is;HBn6?H^|lB4Am!)0D};rUf;^t0#jr8fE8sxk8Z#)zu+isxhPHx8#IXdWM! zJ=Nv0Fz6yfgbDmBkyiNR8pIt9>ME8Wl0^g|zR+m?rIhCZ!?pEw9|H>c9NIm9Za5dx zwt3kUJx&mj7P>Q8E>=V7o0RT_R&_72=vUi$9YRO$$E(+#>S`vR+R_j;k6*wxiB>&6 z>d$$#hpx8AymlY#?CM%>U$tATxV{u2~a$e{bP|*sjzL zM)k`r`tMEuJ4)t%`%w%C*852B15%m*blqUZp2{UVTkA99L;J5nK5`Iv1iimMx?R5R z#72)C>TJGw18Z8sHg&={Aq5ivCTB3K;5!a5K+>(FJ;pr=U*8bM7-9dbdhay_kdVB> zIA3E5|KAfrJ6-p{8)ihwnE$iqj*++9(~*!Q|5u}sYw~A4DcKcXRUD@7(@s6AA2|1q zp`KU3vqpbgyMGFNzpQx!yzs!eegB6Kj1aR${8km_H*QW7&Hc+Xl0Sdk(Quu)!3d&tZw8D^KE} znr|#`zIzZrd^FwbTiOdE?1J5n;4XeO?vEx=<1UN7L~fe;q@D@u&ZYoF%s1!m=b*!g9pS5U|U_k&B#%J_$5y(?%i!3Qzca z&3Y>N?3KBuVP7RsY-Y8~( zRd2xVDKQN435WyWeb)Av9y;+A1IPzReQGwzV9IG&b0RlTVaUIG(Kk1N&o{Q9VT)PZ zM#33v^zZd}DjfU)_BM*ecus2kmMOr)j@+i|Q9)15^z$H!3BXLFss*E0lc5d1!yEuD zLr4ysHSI&D!X+sXAUbGPeh^0XosDcyF}=Ph#j9*erQBDl+j{mBtpt$2ww*I}`wz;1 zt3lvi_y6~U3oCrOke@L15|Ig%e~Q|N1Eb=!G5V?TCSlmPJc9kyI; z(qUhN7V&&v2k@)-8#W-n?*^oxp$zryak7z|R-sgyQjP#>%;wG}2_uOa-LT~PHzJLj z+V0bJo3H}*W~bU7n}{W`1NNSUlIaKfvtvi!I}abu=Te?GAW2`HE_m|veYHs$*Gzmh zQv~!psxNWoo5|S_7X`2+cIMNTGX6K@{ZQr%4k}AKJzb6n z=};q$(i2*LFtx@Ch|}t18Whgp5ltn5O{Cmv{r&Rsp1wbaFZ2PXRAOWEaYmcsmsN{m z&QD@HQy4$3mMBta__mFR?Yzzs)cqWtJ~wYZ5GD$x(3dzzgSbzh11;^nX1I4y zBulG9|HJLMr-ug~n_lym-HBAYR?W0vS*4qr@)dd_>PGwO8N-P>UU$TRBZ2Uk%#mojR&x|zKix~rx)|leigr&;_As!1HthMPK5-zX* zSEHICR-7g*(_J*o`i$03q~%9O)TL#j5|Qok2-qhZnH===1M|*zx==-Z5jxW$LJALi zOWyZaESi-jr)%A7&o2bY^DX^glZdy7-su>336dolxxLeF>e>uj7%9YkAN(AYna+ig znTynH3?=S2}k4AHaJlTVGOOo^ql|3_b;#<(^luI82Rz0VQsg%goBvmXg+#1E& zugSF&hP7+E)8OI0zUlMCVCN8QTx(|`Z?>JZR7cBjnaaCno^up?+UfHzJj7wSXAYcA z*fs_56m`W^5c{riI)!ziR!xmIT8ie8g)U#+KekzwoQH|0?f}kHWIU0AWbnu;U0v!C zsMqzP>VFao4go9k652!0`nAbuz)4%9M&S`pd+Ns-^Ysq7P+l2ta(}2YPAKCza6BNF z6oXt$r=ms=j^gh$z`6pq-6cVq){j;x)e^ueQ7Ky@FPzj7AvDMG=+kDms%P}EQ{BIWvK z4ULSB|D5n0&3fI<)QRwTed60gE*$`NB?uhX1`w&P_1z=|3g+Ac$r>jS&!|Uu zhM@YiD75)fb+04oSe+aK-{9y>7~)ZlUj87qYnXuTXj2=54`fj_TBF3!C6GHL4=(00 zL?9Hm@_oD6=?(J^9Da22`>CdU1)uAlTcsv$ijho1Ed?;zej;Q6%Bd?6%Ks`1700DyVI!`^A}5je{hKqM$=^ zByr9aNNN>*{I@Bfz0a0Al~deXqLlf2)Xee+ipb{tpF)ueL%<73_C@LT^_`Ho53xDDsV3>mH?Z_$P$8Qz-4`+NjMfaFQx0D?jeoA!DK+A2{LO6&eG3><(m*q*b z0xx%c$EH;oOgG!4RGyrD1j7q%OZLn#%Rv=2D&$Q%e& z#qao;sFzak?zGrdQc|+*veeG|Jat9T{?Ge6YoLzgsd-MQ@m*Bp12bZDDXeHW!cKzy zAA-{Cc_X^3kP!I-Yf42_O_o3hxpQ$8ZEm}G8zx!Z+>K_@dTucc1J;MMMoso?hSzGQ zlA%bK>Mk2uVHpeuz>&>#YFo5%#|d4UDU)QaWD?qOO^kG%0OCG*W`uy^HPFKwZay6& zowhf+=KgU7JeE1Lb^UkQh@?~EgDTcMvcD+jKztX)9O59yUAV6d(#=Ro8dZlErk?1@ z#mvT@tak&os-#$=)d%;$#U+Gs%!3W5s3BeuBIYtEdcJXxyZ!hn6VNgd6J(8@U_wom zOen5lQ57hTxcUKwGZ>i9z8H7Th%ssg3I?suWsl55@Y>-V+rGYK5@16*G zT;c+^3m8(A()-6Ilb!JU#U`CHTAt6t%^(*HH8V522)cKN!_Xyu=y=-sF@a$HQQ5h< z*IBJ|j*K9J_e7awz7HKubg3<(;dT1>2lj>_dA<;>*|1+@J|$FBW07l28_7!}AGrEa zW@fMgPV-dlO%0>63?b%I%~=7NyaW*aSH)3eQnMe@`W=;yQ4S2&AQ;S&$UT?1wx3l$ z(}k$74uB~(3vEbiDqvfOHDT5awXd&_u{IVC#*Qfe;Go_PJcFqIXiN$#5OjVGXYqbb z=(p3#3io|T?v`lCF&GdjY`>5fz?KrmI|D&oi#M&C)yCZr7HKJTNxj-Q?P6hl39zwR zLBjkz!(~=cvnqt#??utFni%q)@g_JW8I^K~ZKD*A6>Lv_ha6aGjjVMiCQRAH?w+CZ zNq{sx3A7VsP#@P-VZYiT5&BkIB}B}ZLwtGWJ>)3W*T2a-UXq(7&;m>zO>H?{^n` zEa9@N4*#7K5jmvanXE}b@*gOx0_(*>ggNKg?@9}QF5DbiRLiOgZAw>W7R#lf7$M9I z<05&^+M}1NY3k7R@ThBgQ>&Blov61@V1>Cxd@@Ebew82Eq=1^oCSjwoBhXvAq-u1L zrE26xldHYROr`)SEbgM#n&se6Y*Y9$oXlrsYW@n28w4vS86D_VCTdeW$;D5y!6l?M zv!VB+%Hl!u{=~4YiKJGU$7in&*VXk(Vg1kXuZE3Hk8N*WnIJ^lVv~A!v8*2ApHaDV3R~W2{zpt3 zm&3wpdZa<<@{6N4-`avYK$dm(qNZoPEtOaDuG z-x<~9_Pxnf1e6v2oU+d@&))la5lC04M%1-Cey1OQw&^;7KTDpE z@2iZhxG5xZlw>JPrm03S{Hf1qbgP1=KS$JiVlL_<Z{KKYd;h zrKdC*L%b}bD%Ul9xRWGXheQIe2uO=+w4D+7z->XZteWW<#e32$s+nq6Hmr2bMGZz< z5F&Ob!%#a%SLZb!;_SoOg<8Yiy9HV0C#v+DkTsnq&RtjdDj@GBgSoyE z+fRHdn?KTdHuve^4F?{guNoIdj($Q?pNoR7ctWBYKDeQ7HFXxr|8)D$+r0x#Nr=2E zP&Yw!taI;OK5 z{G>pR(v<9c^!6ER255sz(iJYB1#?&Z4$eg$orNIVM|s`)#ERr9ltRv;ahLpKLv2aU zMxN)3ETOYrzJGeORQM1dXCL5(2dKb$}p|vm23-`}PM~<6&*Sh%{ zQfd$Gq*Yb8YKPt(er*_Nk{(^vvS_ApZ0txkdjRdRg=d!j4Z%E{V#duMHD$HDR=Ux3 zWZSOE6?QMu;?T4bzO}Us>pOq#%Z6Cct6VnTS^Rso9E){9+WxGjn@T%xS~6|^fmG#$Ew-*-96Vga+4xc(>;cIXFbZ1ay?bt+Li{f#j4?O=_)L`Qp z8QCu`x)&@i9EaOnQl(7I55UMBU^YJ^jq@RLL1(!2$~LA!05q2pjldLU2PhKuw1ZRV zs(yt_)7uM)N$fl{HPft})&})|VY(oyy9PHON$DiOiPoQ!caAn|MYqB{!hH7WUj&on zy*#z_%yczz&-VqRZ43f`v$z;_X)MGMF^V{PQ)AALUEbdzP(||Bj0{QM$St3+w6<6f zmUf*CKE8yjQK&GiR(DH19%t|kB&sl@0QCM<5BBptwzjkXRk-jEloOy@RaNRMKabaMob%IVhT0HHDeNwt6wdE}k*X@x zYju!I_!TFkpx0BEStKrNXY=`YwAYwC(_Jgk6Rcny#Bp__m+b!ycYb#v$(^V(iTk+I z$+Zl_?F>(dJK4Cd;VdQj*V}DebJO{1XUPrrx7c>(8HJ{GRCS%E<6!IWHJC!Ge<@L4 zILG?05w7AutB51#x^;Zuop$zHafoT9XsUjrh7ZyBjTX7kklnW*jk>n7@bg=}7fuL- zP*U&rp#(%EUrD(Q`{6d~>6~gQMK3=4W7+`Z^S<>i7P|Me6TkTbYjFEC>kro%GZd_~ z{nU%Oqz5D?hltfhhey+%{r4bL05PxDnoKj%OS&pfH?Xl*y4Al|Jx?B5vEK1sfX7`> zJ5uZfh)}{Qwf?up0m${u9RqRiQ+JiKPs+^*U|E>eWeF?U8nyGU}OP zy+aZUQl49NvSV*Di}9)X$g+#-k&-8j3D0cGPTtEGzrUndICIJNKPM$91a~p{(a>&C zRIf|oD(mRKMy-dLwS7=B*7;d#R=ihq-i+`RW@T|8vl%~y8;nDm^BBB z^zbatFxWyYe!hizzlS?ivedePx9qQR`BKhjIO@DA+cqS^I7n zHE!e;1I(?-naw@vIH(~R3qn0}mRWS&`yM6Wh2BTgX(F+>E&RxEuVn?G_>DK6A`mBgYuY) zp$z3&a5wQVUzir>`LMdGW5CSF!uAlm6xzPM$FeZOI4)wMG<}H^PBg&wv%{&ijokv2 zVsbgd?5E>UZ#Q#;SeRJL6poPwtZiR<3;iu`FJmhw!UUvHTV=YpRusifMKHfOOuHR) zRVAh~$c_UGiZr#yZ{bX*&6bB5-^u#zi8UczT^uqb2pc5cJG7T-#f+<8< zG|-dtf_y&MS&%+FoJT&`<+2!lBda zcMbC4eeiE=)tT-v)g@zg=g(~S8`T%4{!(saPdxiD5?UZQVovhsFoL6RQmGO04aaUR z#Zx36SG3~(c|possIBAJBd@&|xtc-U!-dTxFReL+CsguM8Mq4#07>L~Ne7NwF}hDQ z78UDcs|FmChU94q3X+n=xGd!Mv+huz5!TEcP#3SvA$6N^BM&E)>ZyJi&Kqfu@@6%) zMthg4SbP@*JDBEu+YI8~`MxC-nG@2+jyQcyj`I6u?^1;~(P-OtYs^;F6Q#nqn5z)ah6j9@XmZ70*qkE8M-}{+Tyz7`JHa zo}FyU2kJ%GM0n`x)~>ksradtYt37`=F9sRHM5@J*R1kr2c{E5|jh-hBkN60kjlO1o z&+qV{e*qJcKFJaT-CIK8md=@sRli6{gKC#MX9chy+&86$h zi=JnrscWi#sPUmN=SyCN%^&vP!x4n)|n047mMCLtNz1kZ8#_`sB)Y zd(~cB!_IwQw2gSK<~KXP@kuS-B0tl=YgnG0b_15zaqBPbU}cwh((c+E^%nNQ7Ys6w z={08;?&kCM76#{9<woL-b`zu31+pFLDpmId1)Ts zS8pD{a@g=$GScz-i@Mh`J&l}Cwi;V7qiXx)LGKh%JUOA+0Ax^thF*~RczS5iEDh9H z8eM85(%`Ceh!A?HibS=2&X*LC5&ei}FByiZSu`uXDN|}e9}BJS^`qIA^s>5ZORH6o zFpbEmGj}~&MszL)`Y|x+rSxfv{(Y}TQ;6_Ug%?N9sxK}i)!)=7dBe!r#y&LueuG1; z$Oe@a#{f3MQEZ)xm(b?X=uudhkM=~n@6tVLiIb87d8T9@{IWCB@f(AJ9>k%#os zWGUVGSQn&UAL@2g6ttFUzeLUX^_aBj#3c!TUVD)J5~b&xPmlbTL+G*9lp%S(28ubr(mluAQ~dt2L}w!dy?<1bc3Vrf zv479>V1=lAS_%r^hB_vszLkBReLIwuIxNju5fH#i9|Mag0Wut9Sj>`6o^ca!=j-Bj zCHG`Psb-plK)fjTKVx~_h>nb*k;XX5K$-IV&P~u0RPou1a;7atT%^H~ z8(iC=4Wipvs#bPi&Nz>|$&i;Ng0#{>2mQtIcL@J#8`iB{Zxi1danGh=UoM?twR>`f zh>&X_iYG)0sjVVfyIOi=5&CZFmruM33GrIcLG4b9AYDhl{&nxPElXWo3Yi{Izu<;T z{uD>1o~*a_{0V`H$mIqHmihp@2whblXZqiw?u((_;S)Ql+M^Iq2>=MI;90)cWM$K9+JF}j6>dq z6F@n+4tO{e60&qX*_9A*%e7&xNL|zi4j$2;Zg8AHh!i%0j-kdF^Pahm<4~2uBARPMw{>h3FBOdFmBEybd zeF%(@-Q^+M8p_>IFYAKnc(wCn9Z%OLGh}6%7xPXKVV{txKN8u%X)Ld`lJdx=Lj>(= z`W3$7ST>wfvlNum%f1PS=izM`W{aFOUD*|9 zZ3(#ANpHHPQIpg0r7mZOrkX8uPF^HV9Fjkt^33g$`064;lFp$2{teGLCdQ$(5GH+) z*n|6pnd^D}{ZQ&?E{#(M?&ZNA)J&gvPsn$J#%Wog8gfc+UN|g-I5^8svj`nL;GYNL z`G4}(o^R{~+dn97$isM1UMB~1_$YsuMh{)&Nw&MEAL?=@W$%1J8(k1zCK&q%UvLo5 z!lf@1T9KSR>U}eM`kJ%31RSEXc^O^86j#Xtet*=qMwpn|Nt%i5O&fgo+tySALR1V- zH4xcICq=ngZGTGVrUPOLROB6tK8nYnyU8Yd8@a3F#_!*Iz{2H``O7EXVq z-JQ-m$3qi*<|sG1yO&= zo1P>mu66F}yHYA>d!fkBokMQ$rfx=fpcANoB9hjkXNrRDPY2y+xot*CBkpA2xIewq z{_$F$30M$NkfC;aDGJ&jlRqe`Xf4jY6LjrzhmM)&g?8l`Lwe^cDnnU1vC(IJQmPuE z@Pw)6sV3>{a;Gj|uGOQ*D67Y&UXPV7n5UD>jrnxhBH{~0H{qp0X%S3Z%r$XkMNPd+ z1V!l0W4l(0w!!WDQEd}FZY}CsW)YrARZ;$eTE+I+z_Nzi&w^pF@{?)Y6*q-cAw>Hr zXBIPSdOJ(Y{ZHsM*iMd~yXwTUZ_FUe)y46lk?M3SO+m;vn&5XiSJ%&;7mNBnDtkil z*+Prv6;rEKW3M`^7lfD2N7Kh{z0c%oXweL(;fk>OP@K}u`x5js9?aP)5-RIHYDoIA zvN+^J!=PE$tuwc}y|v42&R#7_+8K}*%}6g?q7{E_kY<|gFunDbE1>a1ZR0Zk6>7yz z+a}F=S>?xk+LqB?1mV{}1r5Sxiu7wB?KB1zMe0q`^;qMnF5%qQL#5UNlP#IPJZdFq+YxS`Ee#!~bhvf`Fi%n$1vlP4BT zEUg?5BZG4KgD+%unZRpbx6jFzQv+WedaDay?2I8>uU5TOdqCt z^R#2srB#{$FU(D=vS&%Qg7>bT56_D)?wcX?y3o1p<)rma97!Vt*<+U!TKOCpd$Lau zXT{)FvZ8+5>y@FaHL({j2x}sF=Fo5jQ-}u}@fFb5_rBYjfjH#~XzC*(Ok2+z74&?$ z{y-P0(;7n#l#XLX?wg%H8-#h!8^^Y5xkg)ZeKxW9mg5e3X9#Dkl@`z!C0;4xfnTaF z0B>Ni{PS=&UmBkrdjtQhRk4c5rr`E4tr&7=KmYqqf&sU(dc0SNTZ(&_x3lq?L>1K8 zZ7jT$+#J=(ri|DXf>427_z(Sf2N>~_QNtor*==m|(KnJ(QM&QEf9puqLF+6kR*4da znYQ6_XQbxWEWPrLIQdXkT2GYcmfnrV(;Hi|x$waADUmX-p-LS8FfLXiS{xi4Mn*=2 z|7W7b7lOfD5B*bGaNHC>6>gE-WdDoBy1hWq`zOuTDJnO|OH@QJiZ#wPz-zD==KAS+XVy zUtuxp|6Z$`cPvUS?2uLQK>b^lmkyLWqZ4HOM$`eAtiwjZa*OO@pqfgoM7pA|)j)yu za2boZ6Z3U@SqlCaU~uG@vaTu}_mI(Md>_3IQco|`g~#gG!{q49fxQO{erWdF7;5|b z`)g}!S0@@QJ;LSVDw zm&HOZCkmUB{o`5F47C9?oFQCdFCj`~3A6OoCoA;v> z{zsmwvExl6_4KQj5nWMkib=%j_o-A6{ zpQh8&*myFxfff6s-3zlGhxh2o(B!RHsWvw9cO)58w72(>jd(SC_Ig@cZeNOeTSw$U zO%PH1f!EL~;6Kp-h7-zm?-YY?iV+!<^P~?h{0<=2Yp3~XJAUo}RS4Bw)IN;0I?H${5X>3?;AeI_e z`>5HNn8k~hM{^_OLvNJZ?4`dch84{$#Z^3;Y_MVVGH*!07PIVOGmV_B8OlA)HwNKY z8#gP|mT<+hjgH8u6o!9JxNeKqDU#`9w|qP){6i{II-(GT#HsV)H{_Z7qR@ml@ad z0gnE{7~}F7RU3Gt0amuPU6h3Oz_%9Lcuq8C>V#Y!@R%J4HZstc+C}N#ux(Ow=k>DQ zUbh_Cg^@bpHZwA%+)VPLj`k3mnt!qob>bL&Ls)(7HkaPXhcbJ)_BGDK(GsPw@i zUe`SKaKjDZOUy`gYw;F~RO#lD^BGFk3XlCNJYspYj+bqFC?2;-*;S(kC(2NX9M283Q(TGB%y#Br z2+xSU@z`{Y!H6gZ)fc)yL$}2{AiCR|Yj6XBos}nb!k71y&*tDB`{5k@`I}5N!FCsI)M%=}0MJAuN1h^y^OZ-^^Vj|qm zP7s-Hu{F#fXMJcEsuZiELp_}5>CqWpoIUK}f~%K-{42JL#yvz6+Tyd6O zF>FyQ6;V0&6{)|vi`3@Z$VQ`9V%_z3BAgK`yfy|{RU6NFhvv8&&-T)yIKp1BD{VkN z7QIrWvsi7CNtiazro%|1b#1EFzMngP!v+9k6yPHP@%NLIyl$tsPj`R;rjY=$DS~h( zB_%b4u(%J3c}y+^6o&$bA?t;VJR)zWaf*pbFVA`rxo5v2g>)R{jYVyB8oc_r8m0%^ z9BN!ARh1~PdOE#UWq_P1L{(sWPmVRalOzl-+6*!=F(Ln@ zMt+2qO}xMOQC~6>3isX857+$Jh^|6#7cY^I{_^|{Y%{DFw-Z`qQ10cp(kLDwwbh%w zRp~YWSm;(!mAk4Dl^d!yu;pS6qE+P3c0PW;H}1yv-YvfECg;ub42gP(W)9gW8*>zP zRyOi0&KFCv5*yWoGAay0*fWL|%EIQYnipSZ1;-6*Y;JAW-EOkvEKbxZXdoZF2$6K5 ze;}Dmkyy`7xsxaUgSa}JGuuJw3E_)3v%vD32N28#vnaciPr_0E8o#y4-%Cttnq_VGk14mL^B%A7ZDe12hp+Y$*-zvj#I^*xyTE;eFF8h)1lm8(NzN#2 zC7DE(+4P#5?$$0cSe^)cN++VfL@P`4#L2L)_I^F>!xF-WfCzp02LgoMLPxMwsnyrl zhp=9+c+!xC-&C&QjBDFU7r=t zUSwkvb6Hen+n&OEEOg<=nN;`Nl%=o+bW%I*S?-H)l$*T^T9VJD-l>z`zL=fN4apn0 z=QW}~djnDO)|qc(_TIfmV&qv!RVw3Wf*(HfA8kC>Ea=z-kCBOx8;UHY)k~SAD{_&` z)XuNhePCJ~liL|0viWwPJ=zoN6Mxq+gb7P5E#lC3HioKS8rq&7RivJ9IV{F8B9V*C z^muxea#*cGK=0}Rm~n>+0f4lMg#xd}Sn2vTx0Twl+&GG5(TUXZk*%&V{1T_lJ|?ML z1>f0*UnL#Hr}`DeuCDaLx{GlICJXqw%7qcn*Er-_*W`o58MG}= zd~>9`$5Pn(;Q7b%th^=sscza{>YW7bX>LRi*rHZ;%w<0+7O}KNHkKQ9<{RR?m3COJ zK?HsPgVZVBU)Cz#tjt@=GO(^(pAxb5T;43#AF^+6w(*z&4!OJOET%Bpt&ajXoFBcc zpFg&o+K1Zj-bG7RE?ZJdVey#{xNf!KdC1-qeZnk5qoi2o!{VxPZu^Wj({MC~Gst|) zdi1`PwH6fssjfSo=&DQ84KRmyo7GN#$%?^6-xrUCVAiXWQ3K?ia@`ymO>ErS33JtH zf|mlzeYMns4WN&?uhUk&knB0&Wh-F&DWQkHbJ9Q+JPEsnTH6cnd^48h?uRFMA%)rL6#Eax546>i$r%u%UwOiqvbRW)tb*+DRSjwqa6Anz8!g zUD_*vO$*2?5<`5_$s(0qrLAha>MR6ekv7Fu&#x#f&pO-+GJ<=vwFqSLXWSJEp#4-f zJN~iZRIzXmkf2C_S6)(;H-=!TnMH+#0Yz82jprU66N%UEVmk~|AxScnJO3i}er18_ zS60=^0!%txEN;h=_lC%JGhLkL?#x2m&JL_{;!TyFdtKv>0m<`u^JgS)sMv|`ML=xI ztO#GP|U_&pc^laW#} z_m{))0WwKk`h${K(ss`|dCM7`?Gl|=&NO**9IjeM)pM-sIj=;{F8NmWZnfvW!S-^P zLCIDC@6dV}?@;9$xo4=pM_-Zydb^Vj{FyjQVUp2%+ll3|qGDbeuarnSDFNI(8_{tH zHd}FiKB)tS5T8dt9DxaV>E}143;}v_5Q+ba+b?%Q@62(*rCePnRP_hqL;CI`wg<4`|i{~jGm(W#i^EA zSXq8J%zi~I**xXrNQ?&2=5c}tB`tD}fE+tH6gs0vK>LAgQ)A=E*qb+Fk6afSSVt<& zLM2BADhHWumPR&vb#`4G`gl4`YwCmDq$PbiHUAMU6%FgMh&j%J0$DfQ&WwS}*s)bJ zX#26+WEaQmO3Vj_lfwX(11od@lRt8Jap%xkJV1~8bratH{U}yptuzps6IPQDFdc^W z|KHx4@qmP{z@uttJo^yx3ko$M;oGF}rbtvI1oYld07vN>V4->o5&#`1tEFw$ddak{BYn?W&)Jje zeQ8%M9WZ1R`R+4y6tI@Xn<8ut7djdb7=z9K`t?3O24Bk4lcniw4@WE+zde9z`f@pYGd9y_ty49QzJ?Z5?s<%T9e6R*YVb_@BLQ&rP9dZn2sk9*8B7yD_0HJ$bwv(| z+cWLN?=Q)-L=~7c(km1;_>#>nukZL!vlA2Kpu-U;8EOXNE9u+<{>CJbRAOP9j?|DV z%}q4AcKy(k$pOb{BFq)97>Jflms3BDy>=mhz_ADfNLl{ZJVoJT=qEWQcFm5t++@jE zFt!^pyh=~KMt#WLM3`w(uXwxM^`i8ZAw)~RSM8ZK$;mT;=RA4H^?XO~z>5$qVTDDi zfdQ93nxMUl<<}kZ@=JbNdd@iZtgT<_y?mr+)pi`A)hthnk*{_8*V>GBPvX`(;H-B!^fDoL1HfCXiDzf@EWIurA z%9nqx!~v!csDsu>*(4~q(J>w$q)F7R2(LGMNLT`6NZKdRN@nqiw5s(aPoi2YX*e%g z;FKBfRc-d{XV_QuW!;o?dL=t~bdwpDyqrzEybr$m0F>MO@wvi*sf^&P_LzFiH4{Ao zqD-Vj{!7rE09~`5nbqecn`bMT-BdS3MFux)BQL=l&9Al%O^+CC>yM=iluo%I(xo(G zo+@6?VJqzwOwTPp0Hz|({E}VJH{McNh=OrFwpqrY5fTHR${(|xH5NI;>2=5bq|mec z>*~+;ryh7+zB{6exSjB%>;TjI^Zwz&;cOj@m<2lDC#N4hpU)&OLpo8P_+vuyW(T+B z^>E!gvOS#QI|<~=4rIG*-{k$;cr4 z;;NNpG9+&xc&ec_wkpiwLi61iAJ-tI{}@0dRKb41YNxe`H~8D0T+UpCjw^I|dOu4t zJC~`%S^DDu@mGq3ZR-)^aGI52pAwGw$@}r$F)2(3YU8)U8W4mNS^Pb|Uq|6TfBAp# zaQrLP1~4ItjW#_(vMU~xyV7?t0*iS2SMp@g6hipUOAN?~WdUm`Dz|p*PhF`e;QxH2 zw6by>?*jo_3E*qsuKkuqWdSk(V`q2BujPnkZ zJ&#KnWd$kB*6G|%i_6**7aWkh{r!v^0%Xyg{>Xh2l>YVuLvvU35qIlyfBr6+Tf}(^ zq$C-Q7|Nix#xZd{s%P}mgiVQEm!snkI+y=Gu1+oNlUXC@i64=TwZX659LX7N3rp|` zz3?<-w5{5X#^=W|lt_jDKrM^f3Bv5IasQe=lPRQ$646TJVI5y{Oq~`tmv}^dVb<=c zRsWrj%_PeMZ)mM|(}IxxgZ*EQ0xABNJU^;_{(5ALbc-iV4=)XxvSw1Qn4dO1nj!g( zra)9lZ9Fk8wA_D?cs>67pW3CUnY|hUwZrbm-+K91l?Zfu{Tef5$y1n}aWjyEmiAMM z;v_lrsP?0_3E{-sZiWR1)P8?2*f77p-#(U|e>i{#517-u_~ z2lFRtf((fZPW~}0mPqKQ8sAZgYSBEA*Nz9_I=PijrrL>f8#Q0lM7mNda%w}~OS3+3=8+ z_*2P!AWB(`68mKdsyDWKEo+hw+~HqEAo2GIfrFas62AS$??mWxm4l*#gG2IPJIz4w ze?ADD(}sf#?|i@xj(ZY=o5)f%bx=t_=_>qkf1KuhPzl(4G mSHI=(KgY$ZG@O19FO|v=IdN^}u*{qv}KK~6>7+Wa- diff --git a/deploy/k8s/img/get_kubectlconfig_task.png b/deploy/k8s/img/get_kubectlconfig_task.png deleted file mode 100644 index 594e68ba7bd42e82051233847ac468c7b8681a27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31190 zcmdSBWmH^U(>6$y7&Hk15(p521qhHJfdCD`g1dVlSa6p{I)UI8Ah^4`YX^s*jk^VD zXq=|8mT8jvdFOfFAK$lT&Ac;fegH?-sk5t2?b>x+RhuA1c?p7he7hqS9bKbf zv}0FI^VAn;S-#HuE3}XIO}}Qh=s@5#!|86x+qC_6uD$i|4rCxYCZDYw40%w`+R*l> zto=Dn&A0`^|9j)fsD)HMJvZs>X2B-9ps}vVcBzrw8Iq=QLrnoVtTNo9M|FXfS(wX9 zxl#rX@8tvNjlTy(|6d#^-WLN9Q&2Y`nyZEdFINKsoMg5hAP4rg$1Zns$}C-m(-$S? zUat1kn*P>`pdPur8tQA3v2d!3#-X#3;;I_XVS(f3`(^O+nOJ+Tw*hgno~suIvhnDM zq2|4JH3o7q-tKw%L0BWR6!#5Awq193h@hIuaut%AW@FJ7Nqt@vlU{R^iX0nb! z3d*8{1So5@lfYS2#I9jJdJoz$(gF6+qg-lf^I)%Eo+R4=a@fO09{X^Z+~b*XB4bax zdoexml+)CEXS5j`{iyH*z}x5bo5~`1_f%}LP(eh|bI{d@6pI=q072RHdd&<9Ib7(% z=C2d>+sedVdenN&AE;F)MW7v>sd=85>!yD5^b#{BO z$Dcz>^N_NkkdtW?U>&Q3vqH|JZ$aD?OV|S&FU4DbJmrfv2{G^ve2;gtUBclp*DfV+ zP1n0$3~+hbXzFEj$nF3<_-?+Oq@(1u)Y4j7W$UH3&+~paB(9+&z|;$gieQ-OC!qS=U>!kUGdUOGtO@RHWD{?c|jihStbUtjgGlBDj>~;Qr z!2?pRicP;%8SLu3nIiA0{ME;-=^TDzI2L?8A52tKPSMeXusP`4((i zu!9WXX~p>U1T35d(XtEG97f9+U`5ZJAC-Yuw$Ls%vm5$mEbR9h=q)2T#2^o?j4) z>g)T8`mU)d!s^KW%@kWWkNx@#nXYTVU0McYaXdCiN|5f6zVvv5Dg4` z6s!!qgHnb(BGo`CFD_ZIc9 zi*#`W@~$DmZqd(?y_W1@5vb5I7X423ye-%PeL*h++W9H9h_ke0OdRkq1ityoYbJTR zDo>=f97`4=^v1H(BQK?GF$8OR$UJA$di$@vFZds`3zEh0zx1GLvFn!D1ggK$l$OCN zmb?ZLt)mTC7wShBJCXtfz2{;Hdd8uBDPFdo2P+E~m5V=bSibdMqjm|05la|&IW6qu z0SbIohHVp;gbEpXPfB@f?5vN(9}(NSdU+fdnQlZrL@&gW#^1EJwqqc$v;_uF6X*0-N?!2KEO`pD&&xXz7qhRFu#RV)Tck8{QgN{=rX&ty50dn z8EHwHrh*QkKtb&6H_pixTH7yGsQ9VQ;Owk`-~~#6F7JLH9lafUrFPkLr^@k(BW-4L zi{+=$jf7vSMk{8?hxlgYB?b(x=}uz5+P zLAyA<3u24{S#8 zGX`}qzX2cChDJuTP8%g&Rx_)ZAn|c_8c7Wfp>h#&SV{I+XME0a4`e^&`Goe>pidNA zYJGcOeim?m@KHBalNkP!txUU74(Jf8^ppSyt}2LCuh3% z{j#i!S1V*x*T-&cox1q)?DyV{hk5>WL#?0S<$@#no@XcY@Ms{v-EOW>ASCvvx5Ksh zupZQAwAyiL;AU}9bXtl%7@Zo{Ms3@|*rRyuhONsy0Ah57axoKs9LVF!f!4FJ`CqbH z<7wCi3uB!~@Wtx8x-Mq8b4;N8EBM>)n*`eSN`W8W2TnMYnndPTbP36wf$GJkyOV+cW zU5mC$)fmG|l4wy;Ggdb>A)*!QB{!ybmiQOLa`n4m0kwV6_>&J%Tc@|vw0R0SZ(#Xf zF@`sz&in!FdSG9I$A$7S(0_Dh20ekpIRFD?TBxZlh5MR@pVe!!i|jbI%>h-^*Ybx| z0C%wspmT6o8LAwTQm@T!&xWG=YJNvQ;W?zlXfoNuL)$y(>FF;H*DpwoO2x_{}IZQxv6 zJij7JHm@VI_uQCO`hI4BO27pV3JMtH;U%<9(Oc&vTvP#IS9%OR*LU=vczrS2&0Pw^ zcz!sl?!w<&qK7~;W>x){{!xtqB-zR}qN+q9B$9SVrmB!$&o5d@!h;t&b<#KP3fuwj zMBP7OJTCgt9wQc)c-D2YscYMM+8lV<|O|6+|gHL-1mH^UreI{POSUIvnp zLex#7U>QgJbT}1bDHTw45kqI4JZWPJ)w1laM41#5WFG)WO(Zt+#;rS!`*n~Ody|~g zNy2Ay_RzY3aZXAm+rg$8A?KqL>Sh=1ZiBt~r52~((ueyND(A9b+@!|aEm*{*CmCN! zro52EWS0>^jNqtc^;5Z9#2)(K0}r9mTN0Xyx9IhBfoi-BruGLUev1W^EsjE@D8CSA zfG%o=K6j{4`JP6UcC>+UE;hA$*rw6Ii|}Vsy+c_=YpLUgP)^A7p|h)AvvI{a1r2}g z^tIpY>?v8l!~>YX2%0o!$w2wuq;SG!A6PG8h>zrOhEO;Z9j7py$U5)yq$2GdmT9(2jQH^;HY z{!*C%%=?NKhcjY%06hmdrK8Y=QUz&6aKuou{ND3y8&$?&D*2SzgN`Y-ZJ|=+`ce{X zW~0^ZXc|^1v7}pqT=*HCL~U?-NWJq09J@N+*}I7E-K^)eXf!ie=4vaC$?htMrX42G zMIA7pzlKy)l+YIHA(oKm{EPGSt}F^M3xAwRr%)8JESM`~Iaz$n*1UJEteSJ2hlFm3 z-*za+6*Zt9ZYWIt!^!?cb!+Y8epeci4DTsR#4l}bUhWEX0XswDSBPMbH%!C}`lWH&ebWomxLyXA=B-!l($7OeiWQQ1%vw>( zQXUO$`kc%2kos};hKbzZY|>QKnGI+F8d9&0_XiQo?!OPvKlxTMl-V<5rI7)>xIM+@`%kqQp__Sk~h03@? zgq#*pI%Q1<&75XK`J#Kz#|@RP{9lnr4Di!Q7V-;x;^8>dWQW-Wlxp)k{RHb9k^co8 z)sHgqKk{i;{$l)-?T<(YQhnL_oB4l{`kOi9eYyVdPYV72_k)RNzz2g6r*+$zUH=o` zMj(J286)VW>EhdRe}fG+czpZBbuQdUqnD?c$Y=sO(G}HrdEza8)TIuKNmc5#D&{#c zy;!9O?Rys8)9+jp3jEx6l9d|TOj3NEY<@aT&$A==)5+{wKkHe~6&9{8*%Ak+$UH0F z3T18YUEq0KPo~2Mqp79G+@;y<|Jfj$s?157+`Z)D5zA>mylrvM$Uvec z6Tix|0rQJ^^2m{CEq0hzznC}Gn5L##;Ofg8Cq4pJ$FstRnGS05N3$JrerUzZR%kQj z65c0!gSH(19V0J8Tc)NEX5iYA6|l{o5j!P;xN?W;Xuc1CzN#B>rGgR|6`SL$F zo=4FlxH`U|gIM2LaZ32r$sV)jUFJ#dCG1+~#h{m}meNVIz`#Q4y2fBNF`0|3 zRwkN#TsBHO4f`QmUv9A7L}Imwj=htsv5s|*wAt;H4@G9wGx6%-#b6H(6Gry6ej~hJIl0V8n5m>U)Xy7b>8_Fj z+9Tmq^P=-psE+%=P@8`s^K`Dqmdi?~k*=>GIIqW(fFyx~hjtS3|BU`m{aX}VVl#u#J1@I>EIdte77l(B&viiguvs%A}> zOv|;>@e~=7?S|#+IS_~sGMf~4?W*b*?wZScP!5)!)d^|t_p8^zNtKI?-_dY4)h!+{ z>-#>lQkY%urQcRBD>LUVyN%P-+`}2XO+!ei`i8v_P4`?<oG0gid&5R1OmgLcO zcK!oCj~Ow6UrU`Y_Z?=K{1@YrKr~}(aR3{km&_>XuGBlf$e7+@92F*$B<}TS<)w=zXkrr9- zV6HD#8HLt9?~mLu*}ZE|f^L6o`wi3fdE*=86*%^D8OfD?PrD=l7T_6>yZWiEE+YMd zR<_;>{&5U%2DDsGQ0sHRLYK*G9#B- z3#hlYAkNve9MeVa9ZxOGLvlu)!nsrReAljb;6W|+uB9@yW-*VMgKzae&igzV86v1; z)5;mIoNteu2ncKbnR|mID**98Ds46s9}T@*)!s_|A?`RcAav@{fL2xg=);~Z<&HAV zox5`{U1SaHIc8$yl(ZfhNcNf+2I&TUEMwf5z_+2q)F6IwPEx*_Pn|-y*nB?mWWBf$ zu`_0)!R)d_S?6E9XXD(Wp=gL(tmxfu;@UQT8kYq*TJNo?`cd|tWZnpO@g;R8{`2UUcw>FOD4~xk zq?zykUZ%~&|7ow#e>vRT&$wI@y7~MIpOg)k%^Tb!KmH%*MiskYD_2Z09^RLNu|A(R zm8%p1w^Y0r`yV?P3&N46re}>8P99ay+)TSBZ8v5Yy;T6${=B&>5vc+oo=a=oLnVkj z1MVzUnm`s)8p-tCg!koyDI@^gEsN93#G9x|Ziw>`vG2u`tH-{OzHWgT8vSk|^E97C zt?P7OHfF*MFSE$J%_nQTxN`wxfmDS(_uMbIuKi_~(~EP7akM86QUz=X#bniPZ0&{sp`DRX!^(yXn9C9o#)@o2yfg5_i&-*aQ#}v8!yGS zqPkSz<|2*P>sy0CRJYZ+ky`k9TTsynw~Tn0q3430kuBO>QgXKc~-XHV4^qb8J zXiJ@$pc3BooM18ZgMbv&oeSb)O&w<`-vN zsIvwgc=KY0rBKGsMCnQG-ofWHbGPTB$WtxK*UTK65i6nZfE0`frmNSy*CGOnIgNk! zz7S59bhveFE6fOZ`{jBEgj%mVY%&+}EA@%7BXxX#;+X*(M# zqRo@pjt)CULB;1Uh$%eS>c7nYG54=ReFM&f0wx1aEqbl^YTq6plnD6yVY#Mp3$o1Dy+ z$>cHrC6EP#gCU2J4OOOt2Cej%teZGcSpVAxa78v30v{`h12gfRVR;XtO^G=^k2IT6 z{!lBL*Wl~??8{SHOO%O=W^oUDzX?|n;1oBeldCm!(TD?Ww}riR%-i@=196JNWq|FS zscJGqY446vMIi5bi`|hqTS&!50e&26usETL&HE!cn7$%c8MW5>HAN=fwYG zWtab(F($tX;hJ!r{%05gPPg$;*fr-5e*Vg<-B+23#RtR}zAO<@Ci_oUmgA-cy-!if z$oNrTfz#?s;zMBiQ2vOb^!zmL=KH}wDn&C@^Oy8CR=Cr2Q!zk3Co|WNM?7zFr;41J z_~TDW$fbiQC~!ATcCDFP?x>3Y5zlhR*2?h^gL^}DF~cNQ4Djx+;Ct;9bGpq~+|#Tf zu#A)c{Y9ch85mB=2uC25HZ}CdcIds5=gk#^U6&E3iyr&;mv+f0ws7}L{BhDq9s?1B zkc~QTc;dO&1rcTT^1TvATUP0%jaBr%9kb0@yX&RG<<7!t8lx1>)y?U}03~I>tNA+rzPs; zNGFMSX)?=QrX8tPJ0KLNbS!@f5xltz6}`l1ChNWTaSVT=ln-a7Hf0E)f2lU_@N$nU z8xC%$f2s%6f>ahcpPnEPYG;1lc6J9o_t|=7sl~E*>G@!vG6UwdUxO5RtS)Lv{E}YS z5SI}ZkL=L#r0ivAM?F$pG}E^nH7(0CRX)uYOkEhGEz9O>c(?F!LI?36F8+=^IS*5+T=G?YqT%m)zzRx;oH*=Vtai=6l%u+fF zVa>LPCHyf&sfu`y3)5dR3rW3}v5iIYOu3>ClQF8$vbLE|9kossCTfM)ED}C1y(&L9 zatYaZd1}=?BE1k8O&&-bQ24yKb)AK*Yaw#}`ikBvH9b!;hter5@Ngr2Lsle ze_U1$4yJ~dJI=lFfzzI%oC{{6)NQBcrsATTKyRCh8oM3O^@^StxK1T=b{_nE>bR%P zQ_BCiXpuy_e^I-Q%S#WWQERFz{%EY1vsOYqjk&P7LJkw@dOI^fUWLhZ`98xnJiE-L zz(L!FgeJ`XI0;xy-2<5nXFTP&NB1chDr%s?p^q){dFjsrvpq=nyH_ufnS=xxjJnYlaucQ&_cc{Zj6wMLDZiyhPNLR;^D2W zc`LX;X8a+HNmOmNtpx_Ya-t~y+NYG&dEkd>Mu_ima@5T0gx8^>@+HWxA!q*Mr$KWv z@g4UD!<#3r_pN27H3h;l0SLRPWgAuSH~zBtPg6P^mWMi=r{X=|tp-zBEJ}xBGsDxfe`zGe%JL*I&E60uh}miY>UUcv;w{<3`q? zBHH%4OvVA!yW-Atd_7VC7qYz9QZn)>_?^wjukk{ zn(_S*gIa*Y%;2@fku@xT9KQ-kX}iJyC1}|lw}3DcV-HEN6(rbdY=Ht=Bv}!S`1%l2 z_-d#dLYCy-;exdYTFt~aw6iOhZhepVt|B82*rMoIOf%|9jk>%@7pbDnlU-PGQI|rL zL)L`+|=K_9K@vtJhj^4Tc!ORE;1->oo_~^#c z7K{4)>$hw_TSI;A43BtTbqZPU{k-xNRT^+~3MHzR6-$wP0Vv;z#Y9wot}%rK3w;$Sq-M5t1%n@#DziH)&svBBVh3o|HJyUl`AdVbk{A@%c&PvfxOwcd zU^^o-0@GLESo=DPBR7Hw$fdEc1a=*E!+Ma`b!ON3v|2Nxz&Aj%#-xrxefy<-rYSGL z54C#y3Woi>ciE$Ro<*5ayDeVB`_e~`y%mnRwDblg<~91O9%WR zu)0C`YSA>VH=HsW1nfTp0r?h62mdzEcWdxGjU< zF76IyY{#Hs_3oQ_gKE0VMsbrMhF2bsHfMMWw0j^<7OA% znrz(IZPJp!Lq&hlBUhQFrOF5Djenk{HY(GnYv#bF|A`sr4R?go`aj^p==-MUAak!j zi}ae$LHAn?uO+a`d$^In%V4!P&(z`Dk|}rLTbil{_!Hh-9K2jCql~^CcFBTKoJk=G zMTnDpww2Yf9(Cl+#))E1*yGZ%XETQ@em;HyRsP4gApKSXF>>)IBj~-g5@ub>2f-Rr zS_Q+!MopQ2e>d>d$WM?vED=&z{$)o){`6U{sTwhTPutN0``lIOffoZgzdzA>TwmA* zT`pwOKnUB|V zv5pS|T^cYme0%PWyKMg8PokzR?Di=sKw)LDiR_zCI zfKp|8`yFV$d=5We7%ubvzcVe6B}VNFpT&Cj0^f`&mK* z?QnXgUF)=5T{KXOD4|) z>v6pu85totpaT>ro2A9AA=BfkKJhMFIxN(4nX{WElY>lSMrLealR^44alX5A{7WP_)Rl$$t%je<2me5#jI6UVy#_Qt{bY zsv?L;G?_z*!nRc#eN8^ys8V1QMFINv%G2Wf{N~gIRORVHrlZ74u+iDGq2HETH-i<58x9$`$b4B7{^u zwuQM<$w5{jr{6@{O|J!~(3ziB`o3b>mtmu!wmx`tk5kP}>5bZGUOP$*C)E(@OK`^r z)`lsgqvhzO0QQDkh-3!DUeWpgrxuck*OYJ7zxy>7Z99qqDwh=`0Kzh+T+5}fXpO16 zfk9OB-(Q1XFGR5>6#kW(0QH?ab}dPUit@^MYE_e70Zu+*sIM4evK4yvF#|2W{S=6+w_Bcw{vJ6aGH)^{M$U z4DRhDFY}e=HVX2n==jyn$k;lq8W%i8vPV%M?ftF0Tndg^0n*qTlGEY-6wAZ5j6=<@ zwEK;5{dAR8@<~%8*fPWQ<^!L@Lprh3s#R=S6$1%Flx<+FnHI?sIcZAHE(Axc7Q1QmUzmC?D3{lIkLQHW zY6i((QByrh`2M-0vvcw5itSRvIl|T&>~fa9J&s%DrVFiEvE!miz2Wah9E8F zNTF*pV{*Sw2{%vk!r4P6l^qd8srl2^g{wii0u}j@+bT~@|G-Hii_5Qyp`*v1tO)7K*cY?o!!M8XNJ7oeSo)mfasri{ zbxo};@kVa1E?r|lvNn6$^?~B}VP&yn@~s%y@+I}`6e)Fc{wKu27(2tTmzIGi$M)+P zqZYk@4pDB{2$CE#rA9q!QJ{fMqvw)4;P-fIgI?2$$4fmApD5+>wK3W$#^ zbXw+TT_HtWKD6B3`}s(;Jd4IJ%6AzWr8m{WmZ>lGted6`&DVb!OCUMJ`b5T`+iDyz z$Xr}}~VfgL*uCPuon|Jim^g=t<^xRssKei7zV;l$9V{ZrsuB1sJ zI}*C+Ft7KY&m7;TvqW4Lx-?kkmW@l4!z0WPglnm;jqUt91d|$-jzwNo@!qNQx|c_JE4lu`6+=ZEn_-g(9AcUQ(2HT!guzy$V23G*@+b9;-j4m_IQZB9$! z3i{3jc(Wo1{+}TL>qIm{$?N-_G!Rj^pyy?-Um46-UHufcGAi*KscgkeTJRX?x#qz` zf9)pJ_x&G2>I3aME=p6MNsuUX=IK_vn6oDNA&fW1a2WIKb9}Xv_IS)TAWvO$X*T}#32UPp=WVj@mxUhVOuj-x zfn_!k9Yc#sp3XJYgT&#ajJv{~!ZbU&?&_|OL(2!DFFv%(1e_sr(K6Qhau!l}kP zu2Y{clB+esS9MQN(Mgl^URG-RxC)Pw54&IjLiH9TL73y=&%}L95bwqBeVextRIs9? zl_c8>$UKxGgUVEjD{2xYWR}S6RFl+^EuupA9`HI{g?{AEnO*daNSDO zt(*TyK@~fcUiC04Z~I}9 zbxa0$^;@@ACP^Gq1L5h&KiBb`cZmuLK<#B$H)4w-VJE`Ei=e<2cPo4 zdyJ0q9e*KSX6Iur?Xku{m_X0G5=q5cwxT_z*Dl`o#xR7GO*V+ZvC1!{g%!za9L5J^q293_W10zbDRxwx#RN-ply8NR5j7r1-*Q{Mv*rWPnAIiBxBJm$8}c z+GB5l#Yk}bZhuSqj0aD9*G;lyR1;Nm+g`7pM)@Gg6kfVlC*;Nf8C&IBcCqp#^iMwl zCz4ipF<ZC zGs#aBAL&_C8kIr6xz(r6StuX{d;9L?Q+9cGafJ)bBmbnk2yyzVS2|DWQMBM@uZM*_ z9Q+DSA_Qu2N_nH~FS4X+^Yt3yPV~RQlSfDA*Dl^ySz9y&9XztJ=!54n#wlSB< zLF`Ae<*;gNOpKp7<%ZZupWJV>^Id4i;Ai7kYD31;Pfa9jtNDY=k`9%dx$(?tx0bFE z0wKHTDO)ek02%7gXnqYFFYL+OMGwM0#8MrRZs~ji^>->rBLT*XrjXa?QRO}aek%$q zl|j5m;60h2HqY+M4A8zABh6+w7%j-Ac!S+9mg8iu+9V;VK7of5D|&raX>uQrQ6hB- z(^h8P`tkhWXYV)9pN2+8`#%rr_UAn>>S~4flf&t>Rqd(k513KKFk!Oer~)htZpVTd zYxpCvG$wHX!;szR6mFhId7ZtO4y1bZ&-zwCpNX$ja})jh_Y0*r&M)obV%PB5Z48qH zxL9N=a5;uLGn(-A8-YetWCp;XZmYWJwtSPt*k$a4g%KXUQBvya*NJ4nX$(@yhZ*WC zMesO!IGmNJWbP@Bb&-{0B_?zbcT3mSq8Pwx;;#$;Qn$dZRY>$9Rd)X>;e0HreFz*EeZ+r8 z;$fh1@;=?jZ$IsOl|1QQ4I{{dw`Lp#>v3xG)xsnl+i-2_08MC{6Ee z5X^~J3H)lc7~!sx*)Udi$m~f8`w%jA^zzwaV<6SYe>g^+d%r>lg$7JK-5xv{4tS5HbzI=7|aOf-{GIgd7#UuQ!x zla4aQ{Pf?BH#zj3WB7h5e_fLS^|<5^jcW1-Hjdxf=BbmTG6DZxr%dsXSccAUo5a%4 z(b=~_DWOI}j-jja*})*&7p{+Mn^rP`Krm9xmx-gvSe_whv8t(Y{*L=j$%l~1>B``S z3KN>WB!?A)jHuxe7bk;6U-QlzCqX^!5|&#!S&sj@_yl|_{F#l8%2;)1dnP_)Ri5f;ymHhC z2--ncg{!Oo$18pp1n@S=u_TRA#uwFoK6hhmb?K1Oa)Kfcl;Z;TzPvhQFM*E%o+EO87W%(E89%qAg zWN8eY8J~9NSLE*o6`3VNtenSrbGVypccQg8t9vJL;Te6pREF!xMV%j`VZzS}k^5lm zWg`opW>zM?2G&FP%gjk)b$yh^WoBB*=z6QvbsV5I{UMYycgp8BRw(;(SHkk4Sdoy9 z-@EZt*L7nf*Uw{CuIs8Ur9-$N{g+9=A^4&up%QFaEN7`Vm-D1erjBlO$hO`kg0;+j z7c}SAf6mF~@xr3`YEs+7zv0?6jEwrC=#Mvt_qVsTo81mab7X8=&rK_63B`Yh@hraN zgO$QQ5`<7WMYBNZl|1@=%ax9F=36ydCGZnd6?SK;OoduQaeaV!Q!fHP0OyPy#Wn|j zmd`vmBAcQ47l)uc0WUaXPxe$CM;vh0$p=z> z^SVT`YE>E^u6C`aZ5IS2*)&Q~2CFm@^XcHSvDZ27?@x*I=v7iLa~kIW($4$jAUlzW zqozc(o7%=SM00eG(%fe4Y6$4Dui4ygz!aLzGD^|@4OWU#+$O>FoBzvoLLEysdR@?t zrtnZ2DjK6=)c>+QtyNZt=#8kxnO1~kZ#iv7p_c}dF-6Vl;mO^%_Ih5U0%egm??ohT z@>(549vVwbkIC;z0JP#_-KAH@>I8%lBahzN%;&d$R0f`;W0=TKK07tv76;^VD5Tw; z)}BWKkiN~P2S%6u2UGX(5||=)vx-C2yt3@w<(D5E$G0swkpAn<_XKtuMg*- zK~Z9(B1CO<_oNcEqiMg@W6A5ZV15PHWk3>eaZ~XlB3(%Hd!V#?0@0H`rm1CS`w4~! zYc=ZF?MyAo`VeQ=rs?-}zeK_DbsSC1uGgflOwyumRQYbF|1P%O&ze+qYWc*;zb_MC zPb^o^ZY2ghR&*1tr)Kub>_}!D^{BbPwL z`kgp^P=U=+Xn6Rd%bfMn`H(B&Gv4$h0hjc%JR6Z7^Cek=-Iq8zHWL|=g%5cl%M8yK z2(?g{6W=pGs*dj-UC5%!{k$kWrcpa9f9QM*{5di4J$1chq0Qng=a4#PP8Hq)ehy9# z(eW76H6sH-9-}FuSByYa>Bd(w>I`{7w~GpXt4#;(_}wbAH{lJ^`D&CGvf*5$xXFcm z(UXJ; zeGHtQX@=39sGpUISgkxLsf}R=)vpG#Yz(J?*JCvFz0cPhnX2Dp07Q%epRfcpNhr+Ccu9WW{xxoabbbuXAQ7-?Q!jE&Phx$Dq2Y$Kh16;Lim0j0L1l?%7sVf-g zy468!qmZc-)HINNE~ z+pT1Nn}*6YOz=&zA4NaOwAt$5dh|6k!zd-jH0eX95~&!#Jo_2c_s5S2;S?CNvgnDu znz>>!1MRxJz))%^^41$)O4Fp4(FusZN(rj~t`%28>l57^m5ZIk;%H{qoP5E%=7#2l zZ@_Q{m4MaaCD`qNmR%*TrYV+0!N@nSc1YzJhv+4s;*Y@}Jy~6!5tP_1q{lTdRB4?4cw$iPgst8T%R`t@eA5f(4S(@(R+=Y%ve80A8%>PRg#l=ShjRr|EhY0@ZI?ViCB37f+Q6 z`i|R~u2wf5Ks!Ba!eWVdy?*vwX>M9|W{lCf#tqE?{a z8j8~T3Xkd{6-16i>gjxhb4%=a>8H1sbxm3~B^% z<;%9PxUJ$kNcH@AUKcB@-`(fcO#K~p7|_4C{nH@ciW`4%v{{d}p%#p5#cZa=klfsV z0X0UB?C-0SBWoobdTJT*H(owV*N+62a@md!@{gnF<<6U^cHWCSg)KgZL{G~ZP~j<7 zow?#++HdIuSkZ@5+0?K2pC4})328?Lz>2%&4?D<9zf2hiu?Hj57oO$6fB($+gaGMO zpf@427ucO$S8y>1;mkcs8fc{^HNJ^oz%cibk(gCopc!!mexe0WzCR96)OZOZ$ylN- zlZk@59;C4xG(2pZ}a2yQRaO!-C;Qx zn=w5lS|<4Rn1mC66z77u|Gvz3#tS!qz%WSphjRaf_bEgFFjPV?2;^Is2FM zb{zy3dBI&FWb9g%Vh857_q zP=epo!CqHmu9Ak_kbMxr1~!IuOj+~o7JeNookg_Li}E1C!g1SFS#kXUxWQ_rfdXI2 z!EQuYROjs&Vqi1{sFZZOxVvABRBl1)*3usVyB5Y32FoDV;=T=-%DQVj|FOnpeTd)&UYN$nK3>Te94Rxa z-U_>xPk^Hu3OXS!xLy+G|6#V}zv!FoN5Gxw1Kj_xIFAN%Id+F8P-D*GAWfbfZsUd* zbN&)o`2H3I%ZOf#^RA|u2w>g(fWUi+@>e?AvwIxr&PoA$~_FaaL(gd+inm4zb5J=D+zgcK`#Uz0mO;XT(!pYr{64 z?h?~qt)>6+TDV35JZ{U6h=VF|?9?W;C#!`(<#FjS_#iP&JZy{A0I>`_`p!T8hr_|U z_qS2E3bz+c!5|l+w=z~|?A^VBL%zD_PV;WK8dX`c{S2}FCyRa(pj(816>7-9bFGpQ zDM2}%+lZsZ{v`m{Y)N7JZi()Wf-dk=_e8{PvuNv+!79wysX-8VgjLILp%ir3gwiKa z|HCUeol9KjWUi(2aofYOpZ<;5at@}_*Fp9j$CXS5=s$R9m5HW}1HReev2k171~h$D ztL@9e-;czvZM6PV?D*5ZTr3Y2Ju?i(jr6c@FAO{jtU^|5BU7A1Y(@SUnhv0{gn%BCY2Ih2W&>wcGOgIPBgyDmSGrX<~@h*yZSxP`+47g-uLr)=3lP! zyv}1gkK=nR*BYAF29R0VRYyYgea}@t2+E_E+3HK+Xp}-N`9eKc-$ieY{#w)J;PHKU z`d?w8*t(b*Hd+mN8_5w}2`_Z|=->KDOa1RCo(@%f6l2=rLF~NQF(Xi|>pg@wGq;*a zuq$B$mF$Y`R%uKU(*&B{J3k(db-mnXA?a-GLX8uX_US4=p+h~%tZ))u&J;kw+y@$T z8duF4_vP=TG}@@*tn&c`ne)Y#K3WF|1J+71jEuvPq>U?xg83{aK4Lk4B?t7+isMD* zD6sDL4`_frIH43fX69)=#?rHU(NW7`L>Ffl+U_V!Qn@;{RKHD|=$^mc!Fo2ufckPZ z*nc=>pA7TMD5*It@?qtL8z9ePI@%hf&$$J7!LpuX(n@pa+!HGir;CwsWoU$!n<(av ze}=JX>rF4BtJ5j<}tu8S=S!P}oIP9?|T+?WGT+$h)@qN#aZ5A}N(P!n*L ztC`PLp-vrh9^b``igTS`z$!*5pEK_Le%L|)vwrXFlEU0Eugf2gkOnLS53ZxHInM4A zPoT!1M>>D42+G}o)r6}s)GUVrNjdNgyG|a|3)t`>K4*;l_6|RvP+BO3 zNOjCv{~|OfgaTz0Lh+CV19#ltEzu4& z=H!#ZYtXpV(wnXt(A+W1i>GU~+)O{=s&G24YEaf=egqgT@B^j(z|^)m6E0k~Z8R3q ze1JDYJzQ8ubLEw{=x2PT#pA##GiE+hsayo_n?;x9cD#Un)%&LM`8QPjwW=jAp>j ze(#y~^bkyGz6ajBX*z)$F{P&Q1Ig@pCxFm;wBjdm?#7Tl1H6Z%v+kS8n<~==sWV6q zX5#f=)libkN!{9;DwMjOGOa9cH0k>9aF;X40KYrj6Sku9moCFT>SnO*4Sw=E$+`WHru1-2Snj20? zK9H+-B!%t>+KXczb0xIwL~x*<}5MP7$pl+bV8N~V-kgW4I(R3 z$4^x!QlfIV6kR^F^Tr#409b|f!09b!b^M5$>nJJp2I1YA_xM-_{ihS znb%(l5-z+J7X!N!a3Fg%TukdTD#m0hopgL?7qVI7#scTQxAV6{qc3VQ@(5xZ3?rTH z$B64yWT_M!Tv;ZZKcoGF)R6dGd=i*hWgPH>B7YLxj1Z?LCo#c?NIIu@q`_pPv`+rl zK3j!22qKm1?5eBkE<5S4sfhjy&kx?`m&x}LzOhX>;q6y6q9&z7DFoZjK`8&AH$77+ z?RiaDpujzSKjLZQ0g|XLgO;LhLQUCtTb$duE!=CGe6HKOUz7e~q#$p;>?xoD=?ti~ z%}mf(vj`TNMjLeyN!oAdFpBSEF`<*zh10@`9G=vJId}j5G<@$!jQc`3DH+#YF8#L2 z=#}w)S^0~HI4U=9#EcGqHWME#-hmuH+4Iid7ZylnGHK3azXKsQ2E;{*onXL$5Vpd# z%3-)OZ@g<7p31_ef^qtM?X1grQ{EoJIakEa^P#*_3jzO7#DN&FK^)z*(<`% z46|+=)_g_|Yfg%ajX|)@q0ufmXWr2J^N%1Zx#tqx(H{%x?`rEwB7alL)z2#5-xMC{ zU4Kw9i5ubaz3)X?%~PduIdHqgScC2JM%AH)Def;#~k9?-|O0-%3aHQzf%$Hj4E`jX$$Nz6r>!zty1 z{6-%$xwd(6I32xoChzokXZc@o^UleDJx4_1AbZos3EuSg&w9fh;j<|;K#<(KwXeW_ z{@726Fx!H0ai=3!eA#=w>9%gNZ^-TIJIsaZbiR_^qrx`WsU(s}Bzzm)xPq5;{d$E4 z!JGRHed2{p9dqf~?)zI89Y1AS&NRNg=ahoa+^ub{vHiX{*!lHd0>_T_9#ZUc8|zgA zJciOz6#z!8Xn`$TkZSDC8`TRPw;nzkFXuIqs1vGSpKeD0tnV^2aI_&3E{AI|1gpdp zgV59ddjM=|?D*7`DDq4O%J&;3+#>4ISBSQtpZddN6ZLHc5gr|7N=$C28MbxOw_Ljj zUT&LL$ z2O`e_VySCr*cFm2lt(6{M+y6SPf6SC#RLL>|0Obif>qq^DQSUR(d!nuHB#s>TjP}{j_{>HUnRu z`R_54ICoff;UhG(WH6TA@ht*13`#wEf8hQS+XR+j>7wy_&iFa$zdIqCXc>EAo?>}l z7W3=2b2x-i9$;S=1^>b`k)+pMfLw;-lCYMWu|GPdY${t#+pbp2cplJA&AX-4-k*E- z>F)a}4xhH<47fFX58UrapAon~+qs2Y`^#&2|C_8!bUk0aB{<#Jnbj(MW zKD6st1UGNV_M<%#M;$xU)e(=>ewgTx7J?FAMNA(L?=N+V2&R8f7Yufhq&e)M#e)7N z-CXlRJgayLsy{W+&13|`Uo-#muh()=;x|$E&8gCWCa0S>5xliFIvzTRd?vEef#Xz7 zW*s$Ij2LJ%J~h-lhCSw5Wm?(#ASPg|OoFBZ#KR=ys!MN0)~to(u%T#po0{0-VVCrK z2cX7TRsZ#1A-1wg0DuqxP-r^SQVkZDdBA9-{D5JEWdB0W^z{5a0xTXq3n;>-{2VRr4Q2#i%=8k6$F$KOGpBI$pDl>-uhAviVrp!{>y)eD98b9j=$4 zzmly)WuCyNP>l$H?vuXV)7l!kTDD^uA{~cS#|=ie8$SxzFS9@rk(yI`7QJJWb!W6H zbfS4zZTt>dt{T5Rub!UIxvMoYvMtW&i=FPyjE_o2!9u|#<}vQ=7M84EUJScE(Ox?U z*231bEFcY*<3B#i5#8st<$9^#?L2h_cgXeFdv_(90p#KGo8!AVwmjUgZS;`S&pmw8 z+aN{7A?Ew1%Nw43Vl5;dQ^lpSPgggn$N-mGw8zfRWte@A5hdWe+!WgdEI`~mV&x3@^l#ba2BBTELxsYbo0 zIb|YFdfZj+N95nJ@?3f0Jr#4>pQ`XLe)KvMep(XMh?3zfwdOC`y$RTtKmGhQ z%7FzsIvjpE*EJwd|F2!>=#Y{7*F_x$wenxjA~08@Ge5(vt;7GTGXCL0{~-f^`0wjm z{ImxD%@%Thy7lV{k`J(Ha2Na$Dg1H5|7HtYYH8J*HD7J4rvy*FlvG) z1tlcm-E4)zWIWEMYZP&w#c!`%c2Fvi1O7=Q+jfHp!zKeLY3`c<*xlaf6#d1a=i?x4 zcRoG8DT>)@bgfPuibb$%ha{fn11TyR^)t5x82U@77GDT!~YC~ zMppi8)@47SHW3lIg+{CRT1nS9oEbahdMy5KKg@6`Ra-dk(b%Uav*kQ-1H%Ks-YIYJ z%TLmGNx6F(%bwW>R7wN*>-*Srw<3^K#Gwp&w7UHVXa#WC|QMO=uPPIe)+zAp{ z?)#;b$qxs-j+B{PI-75POgz{X${vy^HZ zHQjet#!WqAazX0N-vl@Tz&yZB+GZ{~pH6fqd=nk_F*U26_D>@!vX*)1dDqx>lCE#5 z>~Hy@ zj-4TG41@pO=iKE{j$ySV`!2wl{dBUlEEu*4ENCET=4kOFcpGrJso6h!)kP7S>h_Ky za8WH5xmNGPn@o;-lRj!}=9A&s(msoUkgp{^CB9kS6Q@$p+8w;A-wJ;ey1h7O#>}?z z#4~nP$6UnzC|Y)^WEJ(=8y?9wHt%u^Vo`KupaQ_&yatW8+cZ(>GvB3>y{AoE|6Zx7 zQkF5*C!ARNeqR>dHq`j3@f~yf>0qNIvp`8>qOZZ8mlkp1WYebU+)v|!H=b97Tb?qs zvQlD;&o@da8Sl0tMSJPZt+a4(ClWy|gp!*fyHx(!Od4}Bw6hg?k^A)z6+;{P-S&o@ zyY_@v?>@B1sRlu@ z?3{_=#)ODxmPa`Y3Qes0_4m|M(rhD+-6rlhx6O7B-@d#XTPQx{1I%8|vyrS%Vsf}# zMK}j`0L+m(bD0iO2Baqxj57bv-IP;{K${M`VY_ML5+@(&VvF99!*RGT2QfZtMPrLq z>Z2(9a$Km!kJ+ykfxUbtcvt4U1odG&Tm66jGbxWG0__Do@>!|A1HsRTUDPLVblQRa z$m2XdAvg`Lv|G$kNQrFT%<^oN(k$rG`S~Opj>yXLot2~KVDHzCHm4tuXJfhP0;~0+ zcKB00P3bP5fda`tIQDw2GHt_}DbvvA1$AS)-}dUxhxJ1j>!S#*iO{B->p;a7z%=8! zHa!Rw)|3BeY`V9Q*kIb8W-<}25d`BkCxUqJ?4@1w0j2f7FZ3og z8Mxl)rI`T~W5U3*=^$5XNR=Ct z^SQT$+wE%(j^HgIU!JAj{tDr9Yyvo)zrPWsuNcQAgpqTd5OHl%(dB;{!{bv?8zOO| zEbyI4hwu`ZqMQA!E=g z&Ay^9C+_bJrCHC$wz}O< ziMRC87Br@E>pTc5cRWP${tE=@;J4;q-crQKKOC%>eX1$EIT9hJN5A8H%_zs(5bw!Y zT3TvqYAP*#+;J^)BrJHtTX$t9{8hzP{<8D?5iT3O2MU6b*e-ON_lDVO( z7i9L}T&_Q?5}drko1mWh8+-Nz!2*SmN=ize$9Jni{lJ^@DsP+cm#AzA7S-s}B=OI0 z*WJXw)1`XwuKM|dMmCv(u@E5C<7SDo1sCW1ysVUkS`ceT*3@DRS^?Q__#tQL-%*IB zkVvEqzyKKH)=@O~sKk^*8@JdwvVbjaIyPpSg-gRzjHm~j! zxlKLj!lQBO!pqAsO1Bo*=2omtfA~8z9>)P+srHN6A9#@NYn=_-W^sTiq(h`XNO zhbt;7zzL&7HE4qH**3yZcc38AVX33EBf|+2RD2FI^~__aF|cSp6G2%WCW|6HCuic} zT!=h!Khj#L(8_Wuu#7@3(UO$b3>EkQ^1t~BVn1s*3lCDBsLp%g_b zt-Gp(HdZZtmR#v@m8e(uk<&FxeEW76COW zd^nXdsln==gh&|{(gyi(_&hq9m5UuCruER{+hr%MVv2re3=(tI*ZX9Y`@k?k6o=|P z`(>iPuyHEd#hv0Syi*u!Ps_LmuNHQhjP$71vGo}1RpWq2qp&mhbhyiG3Z!J_8x!wo zI{c`S%uKlfN3JxdMjM`@3S+;F^KsZs{KsBvs`yk(aL+`#bznf?VsSPLx6;R`MpUy* z!*&YUb~`(cM^KDU+mpJDsul&2%XQuoB}?D>@R)~0i)f-7Gt*5e-=SS1s?&4YPp;9` zdOn(Yr~G|&+b&z|WfaEk}oj*^SlN zE>wG9X5*`Z!Hb;obYwL2=Gq_}>lSC#E>MgMmuFT3a7^3YGS*xjp%MRum5%CUX?WP7 z3T;^(=~q0^%}=nI?sa$*r6oI9&rFFMYQ+FuyqZ3JbH35eW0A91`u#aiJ(OsO7R+(5 zpS-W?`Ht4SQV|1mR$D+X5z%hg)ctw*q6xe9l@1(ev6M?%9+xmKqb-0|M>c}qWVUR_ z$H!L(3b|FwyAMbDq61eQE!)4AiGrl-@Z2t(l%d=r%2RK5YY*rnWUA>M$n3w5k#XE9Xsr7w8t19YjBiF%y(^-i@Gf-j!aGqu4U{`tYR~^{!9|?TGLniw_Oj6X^v#gCCYUKDor{W>p2)ctOJC zsI<1d2tC)wv0tWC#9dC3XCH1ko643&8$UKo3uN&L2V{8cxZbq=(&wcyX0aPzNzMxA zBv+%WE49&pveN%;fHf4}i=SUIVofKT=uGotmrFBr5R6g0r{xfSvUjx%+cN`4rz057 z;qcYP??@J(+#+L9E{dK@WR6REcUKNe5L4bF^29_gZ5S?D&6OH17H>VI>8?T%Pb}JQ z?9X>-bFi|5X5{I_A}LIJw#y?)RcPoLW|gP3hwk_%rOewjVcf~urw@2ER0R8JS`F`P z8FR!3)@|1GIYR5{w&AnkBF-fflG~&{y!Ex=dnBV6yOaVBsLUzCmT(8^XDrKeS;4=e zqoV^D5;=0mLNuy_L5UV-*t7bOOPw>UrBklzp-H>CAY7YojQWck zR7G&y=<*j`u0J2v)ha=~Qx=GR@=+EZ zwT^cOM_xnWvWs57o-Hs&^+)dYE^kPiG3cGj(0R5=T;poHo+B~lT5he%gNuEW>OvOM(^v)^yp~OO^ndSi&S;CIhz*BgIMQC8n zLb_Rr8o5!k9c|bjnar$vldKVsNhNzq7e5+LWp-m{t^Dbp|E= z9$JibqI^OL3G;;*1j4MtDVw!N5BkE2R?D*dz4JPBw2vNe^v7x<6JJiGj_NG_2$K0= zlm${QYNB@5p>X$Ee^g7gx_)?c)0PrX%Tgg%e&v=+LZomn+fWNm$X|w5b6qXm9_L6A z8Jk>#?Ug7ODWC4;t8L+9^D_m2a*^5A)X&o38yd0RzKr;I39bN7J8}fND2E&?m&0Nd zkZDCFsbkqTXqLmINqULvq`%R$=RH!N0dckOvXL#;b0!dkAO_G?24}>yVevrJSQ~ME zicUf1PDcb4&#+FQMDM4qBA}NBqK|bJ%jUv6M3I)Jn>LqaYn-l$;@ABa%RI`X;DgoZ z^w!?3N}G9smQtrSB?)x1q4xp3kLTb=hKes35IDayxb3g^*}j<{ zawLb!hhQjwz05hxuPsa0EzrG0BfUmO#@%{lo}co(dYnV1l~%Pc^WGKG7?+o=ljAiC zFTJ*1>(hN*m%@0>5lrP*|cJoWm2f5KjfY7s2Ou^Ye+utW{=hQJHcft=TWW4 z4}C^cZZA9s$B8kerkerBWa79-NcJ{fgrK5}y`v+wltdcH@V1+VEss7DkSm(4x;)wE zQc1jx!aFmb^R+SOa5{?1@e=w;-k$)2e>}d%TRqgdj!ldRIZ)(~Z#(DpK}2d;vVLE}7MNUkyxYC^nvuTx zFAv1MlPr4kIadjk3_KoX!@6CEFdf+b(u@p(1+m9tQWxLR#A@dAWM+o7wAtl`N+Sy$ z$P=EKh(hP@nbJtwyj)v}{7jv}ZI|h>$!OLxws?N_iHTcfeJGx^apamK^<@Ki8L2(` z-QwG4jI@oOIrIu8KcCS$WF^~c3H5M3S37C?{Oxj)zuxU9$Z#QU$A^$`PB11?nO*T| zpDK(Hl()Y_VKRUyOJU7dri6=@LWNVqSIW<#=w%bq3re()8qtg&q6`$qr8Nv@y!;VD zFQGClN*syJr~;Y(>jZWDpSkhi_`78 z@f={k*L-XzRat^f^jiv;j!cV2aMx4>ent~Z7%Q~mM>C~x2n~PwSgxoU{4-^SS&XZf z&9SSnh0wTy0;d!l?+_Q|aMTwhF;(ciKbaEUQ7wW`1xUPx}ydL zdfgV2$mHI_g~i2b6FYorPOdX~kB6*vPm=iXqkTeb+~rreI?)t+!KyvYV;m$kJeTjy zHom`2^|>%R(dRO>3n6+Aq)EU({|uX-U1!hL_!+e&C12J26*3E+<<(@j9{pT6KH>b) z^(u!o^m8rDX9w$RAYtB)9e~H!q$8GxYl^T@Y)8tH>eo88mOf#)5u36*j5f zd9A^l%15)+s4=g+nbS)u+d9+6?}$wOHMF($??s)?%)Wb5TAY{_Us#uN>&=1EwzA;u zYb&yIS8K4HEWx{W_i%|4vZFf{{_Tv20+~iF_=b?{fu}lG+CQoVqcd@D3>5U`Ki?m4 zoi~7SyRrGZHUURI4)Xf?WiYRM9^xyn-~)ZZv~ArNc_!S;X7T*<4>w?{=8lrLZauqM z#vYLdBqj;|&!(>k7mVq+fyci5Eoq@yH+*(mXCe=Z+=}N^$5~#w^tZj^0!_G2G1e%q zM`bOFchdL?$92hLW}@$$v@vaT%=~NSV>LG-OOaPn%i43vi?cvZkf#v1i7!C;5PNpZ zh8CeU*!J=D2SiYrzE}GJO15jbGza5h5+U07?o`=kOG8=xi$8FOX^9RHkeC1ciCU5h zcK;!fN1MU~FP_89xH+R&g5;?0oCQRdc$Vh7xnzQyPJmA^IQLiY;E52v{f0ek?GH{Z zfT{HkfADWz8OWdo6JTcGi&8r@wAo^;4F5w0{wHX~bqUoqVU_}gB^pP(rN`pk0DD{5 z*;Bx%>knE00kBT_&+T=$Um{FA6i($T+HK^- zxQ$p3p09o27NRuaURn2ccR?zE62YbR?~*6@5MpXh`e%jQ&Alf>_m1|Jq%|=9@*;`E zXLe+sEr#32ubNmrsC#H^kQ=d61~F1$JNh8(()V5!wiQy=T~A9K`3UBn$y|P5;4Gnf z$+ph99o90M(|H)u8Ce-v_(5S?L05`l*?4W3dEUp1p=l!p!v$KvzynRy{ufU^g{e9I zNju#3?NAKff7|MPgL(@zSHj}xt}O=8>TP|W{~p=zaP-NryJC%Yi1Y(6RW z`VFD8EBPu{b0#_PoxJm%k!mR^lN^_f%k1>z)EkuKu!umx}Wi z-%HZXYoO*YD((w_J^u8Iuas2gv;FXXZ5Qk$< z=W}8p3meaMhs_g;f$p<`Sdf$gR@<6-vZL_MG`k>6Y&W9x8;|6g%ocz@uB*WT1Qp## zp5Di5tb_T$?)(QY4j^iVV^OT;CPMig%BBcqAMx&T$1AX~t5X>fm9W}aU-^cM7^--P zPaw0k=gGTDt=)}}2mf3nl^^kTzshQN>%wU1$Bo{_y`1$W{D-=z+roF&h==lsY2W{w zxHn|1=SFYks`rPWD3$3#DfV2nfB3{sWPpLIhV_$oN*iHQC1ENx)jU(4?+@pl`C0*S zZj6>2G%>L^XMpk(`3)ec^2eohhsxc)kU&L0eDZB?#ZgwYtO&QoiL*fple9f6U%U}H z!`t1K@A$yCt-ST&2w*qK{&wNrrpBD!7=3K2Sc3PJ86FS+t9^z3y1h1N^Q(E47co!y z&mXehQPtu7IS4IuW*htRu>`Zj)^9uqf_Jo#7zoZHgZUrRPC#vmjhj`meA|7l^qO5h zyg9i}EyJr_C8}w~RG4rWacajJI`vDBZc$$bZhCbNm9w0vWpw_%eKvLvcap_nFJyyZ ztnRrp+swD5Q@r{-qcE1dYd7UlcCLYaQ>LgvpNR+`;r)|(7vgYb)ON*~$Uhk~0+Q+w z@olhgBfqNvJH7Hv7}&M{FDjAcufk5?P_au!yuYriLQ4iwZNrArGvI}R;(`i_EKc^3 zG(kaoOu~7#YiGh1yDft>qECV?}hX+BVG9mE{WxHI=!Sk}d zTMN_kH6)7En{`g6#zp(@r#=x7c%ja@mc0Z`8o<$ctt+4o73aBX>eb!Os7%|wcPdTL zPIoK5RhACv+i5BC$KvIna7n~vWk8v53>tU5?8DC6UEG4Iy@W$-b9Dp^+UKH?0){28b>IJ}V>U7>mIOSyk(qbr#|?J9 zcWx~mZ{OuP8k|equaw*HxuYQNR+t?4x4}FQv_(%B0;~?2~ zotKQ``6R`By&p`{U{9L9_ibw01nPksJ>GL(O)}_%=yPA8 zLg@m}`PDHU(vUg`$k*)Bi35lYM?=)0l4Guo=W51;YXE61GZy&-R)#r#6Qj3cm~F2hUw}MxU7v|w@f~nQbr+av3Exx5FzZZk zO%b4fg#LCF09SXz;~$*NN33s)#A1&yw;C1p$fW1dFnTX;aoqbk+jm$GKP>sy*l`=I z`YYx7^F}fIM)1b6r)Pqq!+*rrAAG86<`e`5F6tPeEv$T`z|(AP8a9Ue9RuW q{(qWl`TuCn`~Smj)f2BUSn^wE&q)})Rt5*$a7pcoYTEfbUjGZ!TGpQc diff --git a/deploy/k8s/internalurls.yaml b/deploy/k8s/internalurls.yaml deleted file mode 100644 index df317b5d5..000000000 --- a/deploy/k8s/internalurls.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: internalurls - labels: - app: eshop -data: -# Internal Services & healthchecks - basket: http://basket - basket__hc: http://basket/hc - catalog: http://catalog - catalog__hc: http://catalog/hc - identity: http://identity - identity__hc: http://identity/hc - ordering: http://ordering - ordering__hc: http://ordering/hc - ordering-background: http://ordering-background - ordering-background__hc: http://ordering-background/hc - marketing: http://marketing - marketing__hc: http://marketing/hc - locations: http://locations - locations__hc: http://locations/hc - payment__hc: http://payment/hc - mvc__hc: http://webmvc/hc - spa__hc: http://webspa/hc -# Aggreggators - mobileshoppingagg: http://mobileshoppingagg - webshoppingagg: http://webshoppingagg -# API GWs - apigwmm: http://ocelotapigw-mm - apigwms: http://ocelotapigw-ms - apigwwm: http://ocelotapigw-wm - apigwws: http://ocelotapigw-ws \ No newline at end of file diff --git a/deploy/k8s/nginx-ingress/mandatory-istio.yaml b/deploy/k8s/nginx-ingress/mandatory-istio.yaml deleted file mode 100644 index 56b1cc3b5..000000000 --- a/deploy/k8s/nginx-ingress/mandatory-istio.yaml +++ /dev/null @@ -1,238 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: ingress-nginx - ---- - -kind: ConfigMap -apiVersion: v1 -metadata: - name: nginx-configuration - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- - -apiVersion: v1 -kind: ServiceAccount -metadata: - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: nginx-ingress-clusterrole - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -rules: - - apiGroups: - - "" - resources: - - configmaps - - endpoints - - nodes - - pods - - secrets - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - apiGroups: - - "extensions" - resources: - - ingresses - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "extensions" - resources: - - ingresses/status - verbs: - - update - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: Role -metadata: - name: nginx-ingress-role - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -rules: - - apiGroups: - - "" - resources: - - configmaps - - pods - - secrets - - namespaces - verbs: - - get - - apiGroups: - - "" - resources: - - configmaps - resourceNames: - # Defaults to "-" - # Here: "-" - # This has to be adapted if you change either parameter - # when launching the nginx-ingress-controller. - - "ingress-controller-leader-nginx" - verbs: - - get - - update - - apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - apiGroups: - - "" - resources: - - endpoints - verbs: - - get - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: nginx-ingress-role-nisa-binding - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: nginx-ingress-role -subjects: - - kind: ServiceAccount - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: nginx-ingress-clusterrole-nisa-binding - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: nginx-ingress-clusterrole -subjects: - - kind: ServiceAccount - name: nginx-ingress-serviceaccount - namespace: ingress-nginx - ---- - -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: nginx-ingress-controller - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - template: - metadata: - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - annotations: - prometheus.io/port: "10254" - prometheus.io/scrape: "true" - spec: - serviceAccountName: nginx-ingress-serviceaccount - containers: - - name: nginx-ingress-controller - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0 - args: - - /nginx-ingress-controller - - --configmap=$(POD_NAMESPACE)/nginx-configuration - - --publish-service=$(POD_NAMESPACE)/ingress-nginx - - --annotations-prefix=nginx.ingress.kubernetes.io - securityContext: - capabilities: - drop: - - ALL - add: - - NET_BIND_SERVICE - # www-data -> 33 - runAsUser: 33 - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - ports: - - name: http - containerPort: 80 - - name: https - containerPort: 443 - livenessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: 10254 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - readinessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: 10254 - scheme: HTTP - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 diff --git a/deploy/k8s/nodeports/rabbitmq-admin.yaml b/deploy/k8s/nodeports/rabbitmq-admin.yaml deleted file mode 100644 index 30d2facf1..000000000 --- a/deploy/k8s/nodeports/rabbitmq-admin.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: rabbitmq-admin -spec: - type: NodePort - selector: - app: rabbitmq - ports: - - port: 15672 - nodePort: 31672 - name: rabbitmq-port diff --git a/deploy/k8s/nodeports/sql-service.yaml b/deploy/k8s/nodeports/sql-service.yaml deleted file mode 100644 index 7b0233b68..000000000 --- a/deploy/k8s/nodeports/sql-service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: sql-service -spec: - type: NodePort - selector: - app: sql-data - ports: - - port: 1433 - nodePort: 31433 - name: sql-port diff --git a/deploy/k8s/readme.md b/deploy/k8s/readme.md deleted file mode 100644 index 43534d32e..000000000 --- a/deploy/k8s/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# Kubernetes (k8s) deploy information - -This folder contains files needed to **create** a ACS with Kubernetes in Azure and to **deploy** eShopServices in a existing Kubernetes: - -- `gen-k8s-env.ps1` Script to create a ACS with Kubernetes in Azure -- `deploy.ps1` Script to deploy eShopOnContainers in a existing k8s - -Refer to file [README.k8s.md](./README.k8s.md) for detailed information - -Refer to file [README.CICD.k8s.md](./README.CICD.k8s.md) for information about how to set a VSTS build for deploying on k8s - -Refer to file [conf-files.md](./conf-files.md) for a brief description of every YAML file in this folder \ No newline at end of file diff --git a/obsolete/cli-linux/build-bits-linux.sh b/obsolete/cli-linux/build-bits-linux.sh deleted file mode 100644 index ac68031e0..000000000 --- a/obsolete/cli-linux/build-bits-linux.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -declare -x path=$1 - -if [ -z "$path" ]; then - $path="$(pwd)/../src"; - echo -e "\e[33mNo path passed. Will use $path" -fi - -declare -a projectList=( - "$path/Web/WebSPA" - "$path/Services/Catalog/Catalog.API" - "$path/Services/Basket/Basket.API" - "$path/Services/Ordering/Ordering.API" - "$path/Services/Identity/Identity.API" - "$path/Services/Location/Locations.API" - "$path/Services/Marketing/Marketing.API" - "$path/Services/Payment/Payment.API" - "$path/Web/WebMVC" - "$path/Web/WebStatus" -) - -# Build SPA app -# pushd $(pwd)../src/Web/WebSPA -# npm run build:prod - -for project in "${projectList[@]}" -do - echo -e "\e[33mWorking on $path/$project" - echo -e "\e[33m\tRemoving old publish output" - pushd $path/$project - rm -rf obj/Docker/publish - echo -e "\e[33m\tBuilding and publishing $project" - dotnet publish -c Release -o obj/Docker/publish --verbosity quiet - popd -done - -## remove old docker images: -#images=$(docker images --filter=reference="eshop/*" -q) -#if [ -n "$images" ]; then -# docker rm $(docker ps -a -q) -f -# echo "Deleting eShop images in local Docker repo" -# echo $images -# docker rmi $(docker images --filter=reference="eshop/*" -q) -f -#fi - - -# No need to build the images, docker build or docker compose will -# do that using the images and containers defined in the docker-compose.yml file. -# -# \ No newline at end of file diff --git a/obsolete/cli-linux/docker-compose.local.build.yml b/obsolete/cli-linux/docker-compose.local.build.yml deleted file mode 100644 index a05c09089..000000000 --- a/obsolete/cli-linux/docker-compose.local.build.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: '2' - -services: - ci-build: - image: microsoft/aspnetcore-build-nightly:1.0-1.1 - volumes: - - .:/src - working_dir: /src - command: /bin/bash -c "chmod -x ./cli-linux/build-bits-linux.sh && ./cli-linux/build-bits-linux.sh" - \ No newline at end of file diff --git a/obsolete/cli-linux/prepare-spa-app.sh b/obsolete/cli-linux/prepare-spa-app.sh deleted file mode 100644 index 422730116..000000000 --- a/obsolete/cli-linux/prepare-spa-app.sh +++ /dev/null @@ -1,4 +0,0 @@ -# Build SPA app -pushd $(pwd)/src/Web/WebSPA -npm rebuild node-sass -#npm run build:prod diff --git a/obsolete/cli-linux/run.sh b/obsolete/cli-linux/run.sh deleted file mode 100644 index d46f0a049..000000000 --- a/obsolete/cli-linux/run.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -docker stop $(docker ps -a -q) -docker rm $(docker ps -a -q) -docker images |grep -v REPOSITORY|awk '{print $1}'|xargs -L1 docker pull -export ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP=$(curl ipinfo.io/ip) -docker-compose -f docker-compose.images.yml -f docker-compose.prod.yml up -d --force-recreate diff --git a/obsolete/cli-mac/build-bits.sh b/obsolete/cli-mac/build-bits.sh deleted file mode 100644 index 8b4917144..000000000 --- a/obsolete/cli-mac/build-bits.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh - -# List of microservices here needs to be updated to include all the new microservices (Marketing, etc.) - -projectList=( - "../src/Web/WebMVC" - "../src/Web/WebSPA" - "../src/Services/Identity/Identity.API" - "../src/Services/Catalog/Catalog.API" - "../src/Services/Ordering/Ordering.API" - "../src/Services/Basket/Basket.API" - "../src/Services/Location/Locations.API" - "../src/Services/Marketing/Marketing.API" - "../src/Services/Payment/Payment.API" - "../src/Web/WebStatus" -) - - -pushd $(pwd)/../src/Web/WebSPA -npm install -npm rebuild node-sass -popd - -for project in "${projectList[@]}" -do - echo -e "\e[33mWorking on $(pwd)/$project" - echo -e "\e[33m\tRemoving old publish output" - pushd $(pwd)/$project - rm -rf obj/Docker/publish - echo -e "\e[33m\tBuilding and publishing projects" - dotnet publish -o obj/Docker/publish -c Release - popd -done - -# remove old docker images: -images=$(docker images --filter=reference="eshop/*" -q) -if [ -n "$images" ]; then - docker rm $(docker ps -a -q) -f - echo "Deleting eShop images in local Docker repo" - echo $images - docker rmi $(docker images --filter=reference="eshop/*" -q) -f -fi - -# No need to build the images, docker build or docker compose will -# do that using the images and containers defined in the docker-compose.yml file. -# -# diff --git a/obsolete/cli-windows/build-bits-simple.ps1 b/obsolete/cli-windows/build-bits-simple.ps1 deleted file mode 100644 index 008f4f599..000000000 --- a/obsolete/cli-windows/build-bits-simple.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -# This approach still has issues, but would be the simplest approach for this script -# See: https://github.com/dotnet/eShopOnContainers/issues/74 - -Param([string] $rootPath) -$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path - -Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow - -if ([string]::IsNullOrEmpty($rootPath)) { - $rootPath = "$scriptPath\.." -} -Write-Host "Root path used is $rootPath" -ForegroundColor Yellow - -$SolutionFilePath = [IO.Path]::Combine($rootPath, "eShopOnContainers-ServicesAndWebApps.sln") - -dotnet publish $SolutionFilePath -c Release -o .\obj\Docker\publish - diff --git a/obsolete/cli-windows/build-bits.ps1 b/obsolete/cli-windows/build-bits.ps1 deleted file mode 100644 index 3b3d8da3f..000000000 --- a/obsolete/cli-windows/build-bits.ps1 +++ /dev/null @@ -1,59 +0,0 @@ -Param([string] $rootPath) -$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path - -Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow - -if ([string]::IsNullOrEmpty($rootPath)) { - $rootPath = "$scriptPath\.." -} -Write-Host "Root path used is $rootPath" -ForegroundColor Yellow - -workflow BuildAndPublish { - param ([string] $rootPath - ) -$projectPaths = - @{Path="$rootPath\src\Web\WebMVC";Prj="WebMVC.csproj"}, - @{Path="$rootPath\src\Web\WebSPA";Prj="WebSPA.csproj"}, - @{Path="$rootPath\src\Services\Identity\Identity.API";Prj="Identity.API.csproj"}, - @{Path="$rootPath\src\Services\Catalog\Catalog.API";Prj="Catalog.API.csproj"}, - @{Path="$rootPath\src\Services\Ordering\Ordering.API";Prj="Ordering.API.csproj"}, - @{Path="$rootPath\src\Services\Basket\Basket.API";Prj="Basket.API.csproj"}, - @{Path="$rootPath\src\Services\Location\Locations.API";Prj="Locations.API.csproj"}, - @{Path="$rootPath\src\Services\Marketing\Marketing.API";Prj="Marketing.API.csproj"}, - @{Path="$rootPath\src\Services\Payment\Payment.API";Prj="Payment.API.csproj"}, - @{Path="$rootPath\src\Web\WebStatus";Prj="WebStatus.csproj"} - - foreach -parallel ($item in $projectPaths) { - $projectPath = $item.Path - $projectFile = $item.Prj - $outPath = $item.Path + "\obj\Docker\publish" - $projectPathAndFile = "$projectPath\$projectFile" - #Write-Host "Deleting old publish files in $outPath" -ForegroundColor Yellow - remove-item -path $outPath -Force -Recurse -ErrorAction SilentlyContinue - #Write-Host "Publishing $projectPathAndFile to $outPath" -ForegroundColor Yellow - dotnet publish $projectPathAndFile -o $outPath -c Release - } -} - -BuildAndPublish $rootPath - -######################################################################################## -# Delete old eShop Docker images -######################################################################################## - -$imagesToDelete = docker images --filter=reference="eshop/*" -q - -If (-Not $imagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."} -Else -{ - # Delete all containers - Write-Host "Deleting all containers in local Docker Host" - docker rm $(docker ps -a -q) -f - - # Delete all eshop images - Write-Host "Deleting eShop images in local Docker repo" - Write-Host $imagesToDelete - docker rmi $(docker images --filter=reference="eshop/*" -q) -f -} - -# WE DON'T NEED DOCKER BUILD AS WE CAN RUN "DOCKER-COMPOSE BUILD" OR "DOCKER-COMPOSE UP" AND IT WILL BUILD ALL THE IMAGES IN THE .YML FOR US diff --git a/obsolete/cli-windows/build-images.ps1 b/obsolete/cli-windows/build-images.ps1 deleted file mode 100644 index bfd6e478b..000000000 --- a/obsolete/cli-windows/build-images.ps1 +++ /dev/null @@ -1,11 +0,0 @@ -Param([string] $imageTag) - -$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path - -if ([string]::IsNullOrEmpty($imageTag)) { - $imageTag = $(git rev-parse --abbrev-ref HEAD) -} - -Write-Host "Building images with tag $imageTag" -ForegroundColor Yellow -$env:TAG=$imageTag -docker-compose -f "$scriptPath\..\docker-compose.yml" -f "$scriptPath\..\docker-compose.windows.yml" build \ No newline at end of file diff --git a/obsolete/cli-windows/delete-images.ps1 b/obsolete/cli-windows/delete-images.ps1 deleted file mode 100644 index 954faa37d..000000000 --- a/obsolete/cli-windows/delete-images.ps1 +++ /dev/null @@ -1,27 +0,0 @@ -$imagesToDelete = docker images --filter=reference="eshop/*" -q - -If (-Not $imagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."} -Else -{ - # Delete all containers - Write-Host "Deleting all containers in local Docker Host" - docker rm $(docker ps -a -q) -f - - # Delete all eshop images - Write-Host "Deleting eShop images in local Docker repo" - Write-Host $imagesToDelete - docker rmi $(docker images --filter=reference="eshop/*" -q) -f -} - - -# DELETE ALL IMAGES AND CONTAINERS - -# Delete all containers -# docker rm $(docker ps -a -q) -f - -# Delete all images -# docker rmi $(docker images -q) - -#Filter by image name (Has to be complete, cannot be a wildcard) -#docker ps -q --filter=ancestor=eshop/identity.api:dev - diff --git a/obsolete/cli-windows/delete-vs-and-eshop-images.ps1 b/obsolete/cli-windows/delete-vs-and-eshop-images.ps1 deleted file mode 100644 index f37dc6ea4..000000000 --- a/obsolete/cli-windows/delete-vs-and-eshop-images.ps1 +++ /dev/null @@ -1,46 +0,0 @@ - # Delete all containers - Write-Host "Deleting all running containers in the local Docker Host" - docker rm $(docker ps -a -q) -f - -$eShopImagesToDelete = docker images --filter=reference="eshop/*" -q -If (-Not $eShopImagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."} -Else -{ - # Delete all eshop images - Write-Host "Deleting eShop images in local Docker repo" - Write-Host $eShopImagesToDelete - docker rmi $(docker images --filter=reference="eshop/*" -q) -f -} - -$VSImagesToDelete = docker images --filter=reference="catalog.api:dev" -q -If (-Not $VSImagesToDelete) {Write-Host "Not deleting VS images as there are no VS images in the current local Docker repo."} -Else -{ - # Delete all eshop images - Write-Host "Deleting images created by VS in local Docker repo" - Write-Host $VSImagesToDelete - docker rmi $(docker images --filter=reference="*:dev" -q) -f - - #docker rmi $(docker images --filter=reference="eshop/payment.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/webspa:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/webmvc:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/catalog.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/marketing.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/ordering.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/basket.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/identity.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/locations.api:dev" -q) -f - #docker rmi $(docker images --filter=reference="eshop/webstatus:dev" -q) -f -} - -# DELETE ALL IMAGES AND CONTAINERS - -# Delete all containers -# docker rm $(docker ps -a -q) -f - -# Delete all images -# docker rmi $(docker images -q) - -#Filter by image name (Has to be complete, cannot be a wildcard) -#docker ps -q --filter=ancestor=eshop/identity.api:dev - diff --git a/obsolete/cli-windows/start-external.ps1 b/obsolete/cli-windows/start-external.ps1 deleted file mode 100644 index 514b7af7f..000000000 --- a/obsolete/cli-windows/start-external.ps1 +++ /dev/null @@ -1,11 +0,0 @@ -Param([string] $rootPath) -$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path - -Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow - -if ([string]::IsNullOrEmpty($rootPath)) { - $rootPath = "$scriptPath\.." -} -Write-Host "Root path used is $rootPath" -ForegroundColor Yellow - -docker-compose -f "$rootPath\docker-compose-external.yml" -f "$rootPath\docker-compose-external.override.yml" up diff --git a/obsolete/cli-windows/start-windows-containers.ps1 b/obsolete/cli-windows/start-windows-containers.ps1 deleted file mode 100644 index 31e265322..000000000 --- a/obsolete/cli-windows/start-windows-containers.ps1 +++ /dev/null @@ -1,33 +0,0 @@ -# rootPath: Root path of the repo (where docker-compose*.yml are). If not passed ../cli-windows/ is assumed -# buildBits: If the projects must be built before. Default value: $true -# customEventBusLoginPassword: If a custom RabbitMQ image is used that do not use the default user login/pwd. Default: $false (means assume use default spring2/rabbitmq image) - -Param( - [parameter(Mandatory=$false)][string] $rootPath, - [parameter(Mandatory=$false)][bool] $customEventBusLoginPassword=$false, - [parameter(Mandatory=$false)][bool]$buildBits=$false -) - -$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path -if ([string]::IsNullOrEmpty($rootPath)) { - $rootPath = "$scriptPath\.." -} -Write-Host "Root path used is $rootPath" -ForegroundColor Yellow - - -if ($buildBits) { - & $scriptPath\build-bits.ps1 -rootPath $rootPath -} - - -$env:ESHOP_EXTERNAL_DNS_NAME_OR_IP = "10.0.75.1" -$env:ESHOP_AZURE_STORAGE_CATALOG_URL ="http://10.0.75.1:5101/api/v1/catalog/items/[0]/pic/" -$env:ESHOP_AZURE_STORAGE_MARKETING_URL ="http://10.0.75.1:5110/api/v1/campaigns/[0]/pic/" -$env:ESHOP_OCELOT_VOLUME_SPEC ="C:\app\configuration" - -if (-Not $customEventBusLoginPassword) { - docker-compose -f "$rootPath\docker-compose.yml" -f "$rootPath\docker-compose.override.yml" -f "$rootPath\docker-compose.windows.yml" -f "$rootPath\docker-compose.override.windows.yml" up -} -else { - docker-compose -f "$rootPath\docker-compose.yml" -f "$rootPath\docker-compose.override.yml" -f "$rootPath\docker-compose.windows.yml" up -} diff --git a/obsolete/cli-windows/vsts/build-bits-no-parallel.ps1 b/obsolete/cli-windows/vsts/build-bits-no-parallel.ps1 deleted file mode 100644 index 4344bdcc8..000000000 --- a/obsolete/cli-windows/vsts/build-bits-no-parallel.ps1 +++ /dev/null @@ -1,56 +0,0 @@ -Param([string] $rootPath) -$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path - -Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow - -if ([string]::IsNullOrEmpty($rootPath)) { - $rootPath = "$scriptPath\..\.." -} -Write-Host "Root path used is $rootPath" -ForegroundColor Yellow - - -$projectPaths = - @{Path="$rootPath\src\Web\WebMVC";Prj="WebMVC.csproj"}, - @{Path="$rootPath\src\Web\WebSPA";Prj="WebSPA.csproj"}, - @{Path="$rootPath\src\Services\Identity\Identity.API";Prj="Identity.API.csproj"}, - @{Path="$rootPath\src\Services\Catalog\Catalog.API";Prj="Catalog.API.csproj"}, - @{Path="$rootPath\src\Services\Ordering\Ordering.API";Prj="Ordering.API.csproj"}, - @{Path="$rootPath\src\Services\Basket\Basket.API";Prj="Basket.API.csproj"}, - @{Path="$rootPath\src\Services\Location\Locations.API";Prj="Locations.API.csproj"}, - @{Path="$rootPath\src\Services\Marketing\Marketing.API";Prj="Marketing.API.csproj"}, - @{Path="$rootPath\src\Services\Payment\Payment.API";Prj="Payment.API.csproj"}, - @{Path="$rootPath\src\Web\WebStatus";Prj="WebStatus.csproj"} - -$projectPaths | foreach { - $projectPath = $_.Path - $projectFile = $_.Prj - $outPath = $_.Path + "\obj\Docker\publish" - $projectPathAndFile = "$projectPath\$projectFile" - Write-Host "Deleting old publish files in $outPath" -ForegroundColor Yellow - remove-item -path $outPath -Force -Recurse -ErrorAction SilentlyContinue - Write-Host "Publishing $projectPathAndFile to $outPath" -ForegroundColor Yellow - dotnet restore $projectPathAndFile - dotnet build $projectPathAndFile - dotnet publish $projectPathAndFile -o $outPath - } - -######################################################################################## -# Delete old eShop Docker images -######################################################################################## - -$imagesToDelete = docker images --filter=reference="eshop/*" -q - -If (-Not $imagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."} -Else -{ - # Delete all containers - Write-Host "Deleting all containers in local Docker Host" - docker rm $(docker ps -a -q) -f - - # Delete all eshop images - Write-Host "Deleting eShop images in local Docker repo" - Write-Host $imagesToDelete - docker rmi $(docker images --filter=reference="eshop/*" -q) -f -} - -# WE DON'T NEED DOCKER BUILD AS WE CAN RUN "DOCKER-COMPOSE BUILD" OR "DOCKER-COMPOSE UP" AND IT WILL BUILD ALL THE IMAGES IN THE .YML FOR US From 2e769370a99e99668b029c0792cddff3e0047ee4 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 21 Nov 2019 10:48:59 +0000 Subject: [PATCH 17/22] Relocate mobile solutions, remove obsolete ones. --- .../Mobile}/eShopOnContainers-Android.sln | 8 +- .../Mobile}/eShopOnContainers-MobileApps.sln | 16 +- .../Mobile}/eShopOnContainers-iOS.sln | 8 +- to-fix/eShopOnContainers-AzureFunctions.sln | 96 - to-fix/eShopOnContainers.sln | 2175 ----------------- 5 files changed, 16 insertions(+), 2287 deletions(-) rename {to-fix => src/Mobile}/eShopOnContainers-Android.sln (97%) rename {to-fix => src/Mobile}/eShopOnContainers-MobileApps.sln (96%) rename {to-fix => src/Mobile}/eShopOnContainers-iOS.sln (96%) delete mode 100644 to-fix/eShopOnContainers-AzureFunctions.sln delete mode 100644 to-fix/eShopOnContainers.sln diff --git a/to-fix/eShopOnContainers-Android.sln b/src/Mobile/eShopOnContainers-Android.sln similarity index 97% rename from to-fix/eShopOnContainers-Android.sln rename to src/Mobile/eShopOnContainers-Android.sln index b3324f540..1ef76e772 100644 --- a/to-fix/eShopOnContainers-Android.sln +++ b/src/Mobile/eShopOnContainers-Android.sln @@ -16,9 +16,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{67F9D3A8-F71E-4428-913F-C37AE82CDB24}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{67F9D3A8-F71E-4428-913F-C37AE82CDB24}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{778289CA-31F7-4464-8C2A-612EE846F8A7}" EndProject @@ -26,9 +26,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{B7B1D395-4E06-4036-BE86-C216756B9367}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{F7B6A162-BC4D-4924-B16A-713F9B0344E7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{F7B6A162-BC4D-4924-B16A-713F9B0344E7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/to-fix/eShopOnContainers-MobileApps.sln b/src/Mobile/eShopOnContainers-MobileApps.sln similarity index 96% rename from to-fix/eShopOnContainers-MobileApps.sln rename to src/Mobile/eShopOnContainers-MobileApps.sln index e6b289a53..04a0fa223 100644 --- a/to-fix/eShopOnContainers-MobileApps.sln +++ b/src/Mobile/eShopOnContainers-MobileApps.sln @@ -16,11 +16,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{778289CA-31F7-4464-8C2A-612EE846F8A7}" EndProject @@ -28,15 +28,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{B7B1D395-4E06-4036-BE86-C216756B9367}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{A7337243-33B8-463A-87AD-944B75EFD820}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{A7337243-33B8-463A-87AD-944B75EFD820}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{FDD910BC-DF0F-483D-B7D5-C7D831855172}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{FDD910BC-DF0F-483D-B7D5-C7D831855172}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/to-fix/eShopOnContainers-iOS.sln b/src/Mobile/eShopOnContainers-iOS.sln similarity index 96% rename from to-fix/eShopOnContainers-iOS.sln rename to src/Mobile/eShopOnContainers-iOS.sln index e220e7c4e..87b7db9ec 100644 --- a/to-fix/eShopOnContainers-iOS.sln +++ b/src/Mobile/eShopOnContainers-iOS.sln @@ -16,9 +16,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{67F9D3A8-F71E-4428-913F-C37AE82CDB24}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{67F9D3A8-F71E-4428-913F-C37AE82CDB24}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{778289CA-31F7-4464-8C2A-612EE846F8A7}" EndProject @@ -26,9 +26,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{B7B1D395-4E06-4036-BE86-C216756B9367}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{F7B6A162-BC4D-4924-B16A-713F9B0344E7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{F7B6A162-BC4D-4924-B16A-713F9B0344E7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/to-fix/eShopOnContainers-AzureFunctions.sln b/to-fix/eShopOnContainers-AzureFunctions.sln deleted file mode 100644 index d129fc0fe..000000000 --- a/to-fix/eShopOnContainers-AzureFunctions.sln +++ /dev/null @@ -1,96 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.8 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastructure", "{5B1011EC-CEE5-47AA-B336-99381D573679}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AzureFunctions", "AzureFunctions", "{106B787C-2CFF-4484-8C07-D14589859E94}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "marketing-functions", "src\Services\Marketing\Infrastructure\AzureFunctions\marketing-functions.csproj", "{B363EF31-DD1A-46C8-ADDF-CD30A756E97B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Ad-Hoc|Any CPU = Ad-Hoc|Any CPU - Ad-Hoc|ARM = Ad-Hoc|ARM - Ad-Hoc|iPhone = Ad-Hoc|iPhone - Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator - Ad-Hoc|x64 = Ad-Hoc|x64 - Ad-Hoc|x86 = Ad-Hoc|x86 - AppStore|Any CPU = AppStore|Any CPU - AppStore|ARM = AppStore|ARM - AppStore|iPhone = AppStore|iPhone - AppStore|iPhoneSimulator = AppStore|iPhoneSimulator - AppStore|x64 = AppStore|x64 - AppStore|x86 = AppStore|x86 - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|iPhone = Debug|iPhone - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|iPhone = Release|iPhone - Release|iPhoneSimulator = Release|iPhoneSimulator - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|ARM.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|iPhone.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|x64.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|x64.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|x86.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.AppStore|x86.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|ARM.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|ARM.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|iPhone.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|x64.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|x64.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|x86.ActiveCfg = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Debug|x86.Build.0 = Debug|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|Any CPU.Build.0 = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|ARM.ActiveCfg = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|ARM.Build.0 = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|iPhone.ActiveCfg = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|iPhone.Build.0 = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|x64.ActiveCfg = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|x64.Build.0 = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|x86.ActiveCfg = Release|Any CPU - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {106B787C-2CFF-4484-8C07-D14589859E94} = {5B1011EC-CEE5-47AA-B336-99381D573679} - {B363EF31-DD1A-46C8-ADDF-CD30A756E97B} = {106B787C-2CFF-4484-8C07-D14589859E94} - EndGlobalSection -EndGlobal diff --git a/to-fix/eShopOnContainers.sln b/to-fix/eShopOnContainers.sln deleted file mode 100644 index 658eb26d7..000000000 --- a/to-fix/eShopOnContainers.sln +++ /dev/null @@ -1,2175 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29123.88 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{FEA0C318-FFED-4D39-8781-265718CA43DD}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{932D8224-11F6-4D07-B109-DA28AD288A63}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3AF739CD-81D8-428D-A08A-0A58372DEBF6}" - ProjectSection(SolutionItems) = preProject - Local.testsettings = Local.testsettings - NuGet.config = NuGet.config - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{91CF7717-08AB-4E65-B10E-0B426F01E2E8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web Apps", "Web Apps", "{E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Catalog", "Catalog", "{326A7FB3-5295-468C-A4FE-67DCB823E1E5}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basket", "Basket", "{BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ordering", "Ordering", "{0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ServicesTests", "ServicesTests", "{EF0337F2-ED00-4643-89FD-EE10863F1870}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Identity", "Identity", "{24CD3B53-141E-4A07-9B0D-796641E1CF78}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basket.API", "src\Services\Basket\Basket.API\Basket.API.csproj", "{2110CBB0-3B38-4EE4-A743-DF6968D80D90}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.API", "src\Services\Catalog\Catalog.API\Catalog.API.csproj", "{42681D9D-750A-4DF7-BD9F-9292CFD5C253}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.API", "src\Services\Ordering\Ordering.API\Ordering.API.csproj", "{231226CE-690B-4979-8870-9A79D80928E2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.Domain", "src\Services\Ordering\Ordering.Domain\Ordering.Domain.csproj", "{F5598DCB-6DDE-4661-AD9D-A55612DA7E76}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebMVC", "src\Web\WebMVC\WebMVC.csproj", "{F0333D8E-0B27-42B7-B2C6-78F3657624E2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.Infrastructure", "src\Services\Ordering\Ordering.Infrastructure\Ordering.Infrastructure.csproj", "{95F1F07C-4D92-4742-BD07-E5B805AAB651}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Identity.API", "src\Services\Identity\Identity.API\Identity.API.csproj", "{A579E108-5445-403D-A407-339AC4D1611B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSPA", "src\Web\WebSPA\WebSPA.csproj", "{F16E3C6A-1C94-4EAB-BE91-099618060B68}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildingBlocks", "BuildingBlocks", "{DB0EFB20-B024-4E5E-A75C-52143C131D25}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EventBus", "EventBus", "{807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBus", "src\BuildingBlocks\EventBus\EventBus\EventBus.csproj", "{0044B293-1DCC-4224-B948-00CF6DC7F510}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusRabbitMQ", "src\BuildingBlocks\EventBus\EventBusRabbitMQ\EventBusRabbitMQ.csproj", "{8088F3FC-6787-45FA-A924-816EC81CBFAC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationEventLogEF", "src\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj", "{9EE28E45-1533-472B-8267-56C48855BA0E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Payment", "Payment", "{022E145D-1593-47EE-9608-8E323D3C63F5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.API", "src\Services\Payment\Payment.API\Payment.API.csproj", "{1A01AF82-6FCB-464C-B39C-F127AEBD315D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Location", "Location", "{41139F64-4046-4F16-96B7-D941D96FA9C6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Locations.API", "src\Services\Location\Locations.API\Locations.API.csproj", "{E7581357-FC34-474C-B8F5-307EE3CE05EF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Marketing", "Marketing", "{A5260DE0-1FDD-467E-9CC1-A028AB081CEE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Marketing.API", "src\Services\Marketing\Marketing.API\Marketing.API.csproj", "{DF395F85-B010-465D-857A-7EBCC512C0C2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusServiceBus", "src\BuildingBlocks\EventBus\EventBusServiceBus\EventBusServiceBus.csproj", "{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebHost", "WebHost", "{1815B651-941C-466B-AE33-D1D7EEB8F77F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebHost.Customization", "src\BuildingBlocks\WebHostCustomization\WebHost.Customization\WebHost.Customization.csproj", "{15F4B3AA-89B6-4A0D-9051-414305974781}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{EF3EDC78-E864-43FF-8E80-CF33DD9508A3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{F7B757E3-D3F2-4E60-B183-D67CDEC96F76}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{2BB81612-8D04-49CD-B17F-38DAB176E583}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{0AAED9FF-3260-43BB-B586-9AAF1E010A90}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{6E4285E7-7611-4440-A1B5-3513EBB13807}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{A7337243-33B8-463A-87AD-944B75EFD820}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basket.FunctionalTests", "src\Services\Basket\Basket.FunctionalTests\Basket.FunctionalTests.csproj", "{9F00E62F-E180-4A9C-8794-98A72AFAC2DB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basket.UnitTests", "src\Services\Basket\Basket.UnitTests\Basket.UnitTests.csproj", "{63417272-1E6A-406A-AD11-C738558D89C0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.FunctionalTests", "src\Services\Catalog\Catalog.FunctionalTests\Catalog.FunctionalTests.csproj", "{56E0E455-731E-41CB-AF46-C1A70F8A140B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.UnitTests", "src\Services\Catalog\Catalog.UnitTests\Catalog.UnitTests.csproj", "{1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Locations.FunctionalTests", "src\Services\Location\Locations.FunctionalTests\Locations.FunctionalTests.csproj", "{4F0E5CB2-5795-4040-8637-1D395914C944}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Marketing.FunctionalTests", "src\Services\Marketing\Marketing.FunctionalTests\Marketing.FunctionalTests.csproj", "{22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.FunctionalTests", "src\Services\Ordering\Ordering.FunctionalTests\Ordering.FunctionalTests.csproj", "{5A155B15-D8E7-47FE-8D17-8E641726158C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.UnitTests", "src\Services\Ordering\Ordering.UnitTests\Ordering.UnitTests.csproj", "{0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LoadTest", "test\ServicesTests\LoadTest\LoadTest.csproj", "{969E793C-C413-490E-9C9D-B2B46DA5AF32}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Application.FunctionalTests", "test\ServicesTests\Application.FunctionalTests\Application.FunctionalTests.csproj", "{3572B4E2-4399-4797-B5C2-3720D870E0C3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{7BA332A2-189D-4D03-9935-FDFF81C42496}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{2F0DEF71-84AC-4212-86D4-E36E8896BDBF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{2B26A7AA-6D61-42FA-8AB7-C0F05AAE7F1C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DA1786E4-30AB-434E-A827-92896390B79D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{30308DE0-8128-4613-BCAD-B0BEFFB20E38}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiGateways", "ApiGateways", "{79C64C7A-ED74-4F01-921F-92F4F9FC1E1D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiGw-Base", "ApiGw-Base", "{56AD1FCA-6E16-4798-BF29-941C5B3277D2}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile.Bff.Marketing", "Mobile.Bff.Marketing", "{34ED3311-2B30-4C8B-823B-312B50FFC32A}" - ProjectSection(SolutionItems) = preProject - src\ApiGateways\Mobile.Bff.Marketing\apigw\configuration.json = src\ApiGateways\Mobile.Bff.Marketing\apigw\configuration.json - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile.Bff.Shopping", "Mobile.Bff.Shopping", "{A32A5254-BA36-46FC-8C75-F7B8FFE8FCD0}" - ProjectSection(SolutionItems) = preProject - src\ApiGateways\Mobile.Bff.Shopping\apigw\configuration.json = src\ApiGateways\Mobile.Bff.Shopping\apigw\configuration.json - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web.Bff.Marketing", "Web.Bff.Marketing", "{696D2B7E-6B75-401D-964A-BFE6F4D7AF73}" - ProjectSection(SolutionItems) = preProject - src\ApiGateways\Web.Bff.Marketing\apigw\configuration.json = src\ApiGateways\Web.Bff.Marketing\apigw\configuration.json - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web.Bff.Shopping", "Web.Bff.Shopping", "{424BC53E-17EA-4E12-BC07-64BAA927ABCB}" - ProjectSection(SolutionItems) = preProject - src\ApiGateways\Web.Bff.Shopping\apigw\configuration.json = src\ApiGateways\Web.Bff.Shopping\apigw\configuration.json - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OcelotApiGw", "src\ApiGateways\ApiGw-Base\OcelotApiGw.csproj", "{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mobile.Shopping.HttpAggregator", "src\ApiGateways\Mobile.Bff.Shopping\aggregator\Mobile.Shopping.HttpAggregator.csproj", "{98E0B3BA-6601-4C59-A9AA-24A00A17D835}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Web.Shopping.HttpAggregator", "src\ApiGateways\Web.Bff.Shopping\aggregator\Web.Shopping.HttpAggregator.csproj", "{E39BD762-BC86-459D-B818-B6BF2D9F1352}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Devspaces.Support", "Devspaces.Support", "{ABBA561B-499B-48C0-8299-85D41E6E9E98}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Devspaces.Support", "src\BuildingBlocks\Devspaces.Support\Devspaces.Support.csproj", "{CB6D01A4-E597-4348-9570-FC8DB03B4267}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Clients", "Clients", "{8449B293-5949-4832-8612-6BCE2962BCB1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Clients.Grpc.Caller", "src\Clients\Clients.Grpc.Caller\Clients.Grpc.Caller.csproj", "{7C8FA264-ED49-4ACA-9629-FCE5462B30AB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Ad-Hoc|Any CPU = Ad-Hoc|Any CPU - Ad-Hoc|ARM = Ad-Hoc|ARM - Ad-Hoc|iPhone = Ad-Hoc|iPhone - Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator - Ad-Hoc|x64 = Ad-Hoc|x64 - Ad-Hoc|x86 = Ad-Hoc|x86 - AppStore|Any CPU = AppStore|Any CPU - AppStore|ARM = AppStore|ARM - AppStore|iPhone = AppStore|iPhone - AppStore|iPhoneSimulator = AppStore|iPhoneSimulator - AppStore|x64 = AppStore|x64 - AppStore|x86 = AppStore|x86 - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|iPhone = Debug|iPhone - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|iPhone = Release|iPhone - Release|iPhoneSimulator = Release|iPhoneSimulator - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|ARM.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|iPhone.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|x64.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|x64.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|x86.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.AppStore|x86.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|ARM.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|ARM.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|iPhone.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|x64.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|x64.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|x86.ActiveCfg = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Debug|x86.Build.0 = Debug|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|Any CPU.Build.0 = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|ARM.ActiveCfg = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|ARM.Build.0 = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|iPhone.ActiveCfg = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|iPhone.Build.0 = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x64.ActiveCfg = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x64.Build.0 = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x86.ActiveCfg = Release|Any CPU - {FEA0C318-FFED-4D39-8781-265718CA43DD}.Release|x86.Build.0 = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|ARM.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|x64.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.AppStore|x86.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|ARM.ActiveCfg = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|x64.ActiveCfg = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Debug|x86.ActiveCfg = Debug|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|Any CPU.Build.0 = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|ARM.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|iPhone.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|x64.ActiveCfg = Release|Any CPU - {2110CBB0-3B38-4EE4-A743-DF6968D80D90}.Release|x86.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|ARM.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|x64.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.AppStore|x86.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|Any CPU.Build.0 = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|ARM.ActiveCfg = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|x64.ActiveCfg = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Debug|x86.ActiveCfg = Debug|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|Any CPU.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|Any CPU.Build.0 = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|ARM.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|iPhone.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|x64.ActiveCfg = Release|Any CPU - {42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|x86.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|ARM.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|x64.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.AppStore|x86.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|ARM.ActiveCfg = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|x64.ActiveCfg = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Debug|x86.ActiveCfg = Debug|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|Any CPU.Build.0 = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|ARM.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|iPhone.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|x64.ActiveCfg = Release|Any CPU - {231226CE-690B-4979-8870-9A79D80928E2}.Release|x86.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|ARM.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|x64.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.AppStore|x86.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|ARM.ActiveCfg = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|x64.ActiveCfg = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Debug|x86.ActiveCfg = Debug|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|Any CPU.Build.0 = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|ARM.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|iPhone.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|x64.ActiveCfg = Release|Any CPU - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76}.Release|x86.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|ARM.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|x64.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.AppStore|x86.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|ARM.ActiveCfg = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|x64.ActiveCfg = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Debug|x86.ActiveCfg = Debug|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|Any CPU.Build.0 = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|ARM.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|iPhone.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|x64.ActiveCfg = Release|Any CPU - {F0333D8E-0B27-42B7-B2C6-78F3657624E2}.Release|x86.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|ARM.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhone.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x64.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x64.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x86.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.AppStore|x86.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|Any CPU.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|ARM.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|ARM.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhone.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x64.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x64.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x86.ActiveCfg = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Debug|x86.Build.0 = Debug|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|Any CPU.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|Any CPU.Build.0 = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|ARM.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|ARM.Build.0 = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhone.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhone.Build.0 = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x64.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x64.Build.0 = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x86.ActiveCfg = Release|Any CPU - {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x86.Build.0 = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|ARM.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|iPhone.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|x64.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|x64.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|x86.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.AppStore|x86.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|ARM.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|ARM.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|iPhone.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|x64.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|x64.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|x86.ActiveCfg = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Debug|x86.Build.0 = Debug|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|Any CPU.Build.0 = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|ARM.ActiveCfg = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|ARM.Build.0 = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|iPhone.ActiveCfg = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|iPhone.Build.0 = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|x64.ActiveCfg = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|x64.Build.0 = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|x86.ActiveCfg = Release|Any CPU - {A579E108-5445-403D-A407-339AC4D1611B}.Release|x86.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|ARM.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|iPhone.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|x64.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|x64.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|x86.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.AppStore|x86.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|ARM.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|ARM.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|iPhone.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|x64.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|x64.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|x86.ActiveCfg = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Debug|x86.Build.0 = Debug|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|Any CPU.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|ARM.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|ARM.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|iPhone.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|iPhone.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x64.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x64.Build.0 = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x86.ActiveCfg = Release|Any CPU - {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x86.Build.0 = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|ARM.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhone.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x64.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x64.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x86.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.AppStore|x86.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|ARM.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|ARM.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhone.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x64.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x64.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x86.ActiveCfg = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Debug|x86.Build.0 = Debug|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|Any CPU.Build.0 = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|ARM.ActiveCfg = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|ARM.Build.0 = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhone.ActiveCfg = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhone.Build.0 = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x64.ActiveCfg = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x64.Build.0 = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x86.ActiveCfg = Release|Any CPU - {0044B293-1DCC-4224-B948-00CF6DC7F510}.Release|x86.Build.0 = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|ARM.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhone.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x64.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x64.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x86.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.AppStore|x86.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|ARM.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhone.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x64.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x64.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x86.ActiveCfg = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Debug|x86.Build.0 = Debug|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|Any CPU.Build.0 = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|ARM.ActiveCfg = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|ARM.Build.0 = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhone.ActiveCfg = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhone.Build.0 = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x64.ActiveCfg = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x64.Build.0 = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x86.ActiveCfg = Release|Any CPU - {8088F3FC-6787-45FA-A924-816EC81CBFAC}.Release|x86.Build.0 = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|ARM.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhone.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x64.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x64.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x86.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.AppStore|x86.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|ARM.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|ARM.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhone.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x64.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x64.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x86.ActiveCfg = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Debug|x86.Build.0 = Debug|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|Any CPU.Build.0 = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|ARM.ActiveCfg = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|ARM.Build.0 = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhone.ActiveCfg = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhone.Build.0 = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x64.ActiveCfg = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x64.Build.0 = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.ActiveCfg = Release|Any CPU - {9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.Build.0 = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|ARM.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhone.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x64.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x64.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x86.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.AppStore|x86.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|ARM.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|ARM.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhone.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x64.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x64.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x86.ActiveCfg = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Debug|x86.Build.0 = Debug|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|Any CPU.Build.0 = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|ARM.ActiveCfg = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|ARM.Build.0 = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhone.ActiveCfg = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhone.Build.0 = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x64.ActiveCfg = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x64.Build.0 = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.ActiveCfg = Release|Any CPU - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|ARM.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhone.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x64.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x64.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x86.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x86.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|ARM.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|ARM.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhone.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x64.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x64.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x86.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x86.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|Any CPU.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|ARM.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|ARM.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhone.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhone.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x64.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x64.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.Build.0 = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|ARM.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|iPhone.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|x64.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|x64.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|x86.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.AppStore|x86.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|ARM.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|ARM.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|iPhone.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|x64.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|x64.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|x86.ActiveCfg = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Debug|x86.Build.0 = Debug|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|Any CPU.Build.0 = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|ARM.ActiveCfg = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|ARM.Build.0 = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|iPhone.ActiveCfg = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|iPhone.Build.0 = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|x64.ActiveCfg = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|x64.Build.0 = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|x86.ActiveCfg = Release|Any CPU - {E7581357-FC34-474C-B8F5-307EE3CE05EF}.Release|x86.Build.0 = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|ARM.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|iPhone.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|x64.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|x64.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|x86.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.AppStore|x86.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|ARM.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|ARM.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|iPhone.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|x64.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|x64.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|x86.ActiveCfg = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Debug|x86.Build.0 = Debug|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|Any CPU.Build.0 = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|ARM.ActiveCfg = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|ARM.Build.0 = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|iPhone.ActiveCfg = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|iPhone.Build.0 = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|x64.ActiveCfg = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|x64.Build.0 = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|x86.ActiveCfg = Release|Any CPU - {DF395F85-B010-465D-857A-7EBCC512C0C2}.Release|x86.Build.0 = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|ARM.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|iPhone.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|x64.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|x64.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|x86.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.AppStore|x86.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|ARM.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|ARM.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|iPhone.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|x64.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|x64.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|x86.ActiveCfg = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Debug|x86.Build.0 = Debug|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|Any CPU.Build.0 = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|ARM.ActiveCfg = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|ARM.Build.0 = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|iPhone.ActiveCfg = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|iPhone.Build.0 = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x64.ActiveCfg = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x64.Build.0 = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x86.ActiveCfg = Release|Any CPU - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x86.Build.0 = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|ARM.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|iPhone.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|x64.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|x64.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|x86.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.AppStore|x86.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|Any CPU.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|ARM.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|ARM.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|iPhone.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|x64.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|x64.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|x86.ActiveCfg = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Debug|x86.Build.0 = Debug|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|Any CPU.ActiveCfg = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|Any CPU.Build.0 = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|ARM.ActiveCfg = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|ARM.Build.0 = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|iPhone.ActiveCfg = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|iPhone.Build.0 = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|x64.ActiveCfg = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|x64.Build.0 = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|x86.ActiveCfg = Release|Any CPU - {15F4B3AA-89B6-4A0D-9051-414305974781}.Release|x86.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|Any CPU.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|ARM.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|ARM.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhone.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x64.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x64.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x86.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x86.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|ARM.ActiveCfg = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|ARM.Build.0 = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhone.Build.0 = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x64.ActiveCfg = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x64.Build.0 = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x86.ActiveCfg = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x86.Build.0 = Debug|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|Any CPU.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|ARM.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|ARM.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhone.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhone.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x64.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x64.Build.0 = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x86.ActiveCfg = Release|Any CPU - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x86.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Build.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.ActiveCfg = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Build.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Deploy.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Build.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Deploy.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.ActiveCfg = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Build.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Deploy.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.ActiveCfg = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Build.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Deploy.0 = Debug|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Deploy.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.ActiveCfg = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Build.0 = Release|Any CPU - {62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Deploy.0 = Release|Any CPU - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|ARM.ActiveCfg = AppStore|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.ActiveCfg = AppStore|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.Build.0 = AppStore|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x64.ActiveCfg = AppStore|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x86.ActiveCfg = AppStore|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|ARM.ActiveCfg = Debug|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.ActiveCfg = Debug|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.Build.0 = Debug|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x64.ActiveCfg = Debug|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x86.ActiveCfg = Debug|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.ActiveCfg = Release|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|ARM.ActiveCfg = Release|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.ActiveCfg = Release|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.Build.0 = Release|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x64.ActiveCfg = Release|iPhone - {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x86.ActiveCfg = Release|iPhone - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.ActiveCfg = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Build.0 = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Deploy.0 = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.ActiveCfg = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Build.0 = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Deploy.0 = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.ActiveCfg = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Build.0 = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Deploy.0 = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.ActiveCfg = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Build.0 = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Deploy.0 = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Deploy.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.ActiveCfg = Debug|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Build.0 = Debug|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Deploy.0 = Debug|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.ActiveCfg = Debug|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.ActiveCfg = Debug|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Build.0 = Debug|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Deploy.0 = Debug|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.ActiveCfg = Debug|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Build.0 = Debug|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Deploy.0 = Debug|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.ActiveCfg = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Build.0 = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Deploy.0 = Release|ARM - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhone.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhoneSimulator.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.ActiveCfg = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Build.0 = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Deploy.0 = Release|x64 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.ActiveCfg = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Build.0 = Release|x86 - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Deploy.0 = Release|x86 - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|Any CPU.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|ARM.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|ARM.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhone.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x64.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x64.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x86.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x86.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|ARM.ActiveCfg = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|ARM.Build.0 = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhone.Build.0 = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x64.ActiveCfg = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x64.Build.0 = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x86.ActiveCfg = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x86.Build.0 = Debug|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|Any CPU.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|ARM.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|ARM.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhone.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhone.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x64.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x64.Build.0 = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x86.ActiveCfg = Release|Any CPU - {6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x86.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.ActiveCfg = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.Build.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.Deploy.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.Build.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.Deploy.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.ActiveCfg = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.Build.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.Deploy.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.ActiveCfg = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.Build.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.Deploy.0 = Debug|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.Deploy.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.ActiveCfg = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.Build.0 = Release|Any CPU - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.Deploy.0 = Release|Any CPU - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|ARM.ActiveCfg = AppStore|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhone.ActiveCfg = AppStore|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhone.Build.0 = AppStore|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|x64.ActiveCfg = AppStore|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|x86.ActiveCfg = AppStore|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|ARM.ActiveCfg = Debug|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhone.ActiveCfg = Debug|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhone.Build.0 = Debug|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x64.ActiveCfg = Debug|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x86.ActiveCfg = Debug|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|Any CPU.ActiveCfg = Release|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|ARM.ActiveCfg = Release|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.ActiveCfg = Release|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.Build.0 = Release|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|x64.ActiveCfg = Release|iPhone - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|x86.ActiveCfg = Release|iPhone - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|Any CPU.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|ARM.ActiveCfg = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|ARM.Build.0 = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|ARM.Deploy.0 = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|iPhone.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|iPhone.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|iPhone.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|x64.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|x64.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|x64.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|x86.ActiveCfg = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|x86.Build.0 = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Ad-Hoc|x86.Deploy.0 = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|Any CPU.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|Any CPU.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|Any CPU.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|ARM.ActiveCfg = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|ARM.Build.0 = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|ARM.Deploy.0 = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|iPhone.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|iPhone.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|iPhone.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|iPhoneSimulator.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|x64.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|x64.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|x64.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|x86.ActiveCfg = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|x86.Build.0 = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.AppStore|x86.Deploy.0 = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|Any CPU.ActiveCfg = Debug|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|ARM.ActiveCfg = Debug|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|ARM.Build.0 = Debug|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|ARM.Deploy.0 = Debug|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|iPhone.ActiveCfg = Debug|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|x64.ActiveCfg = Debug|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|x64.Build.0 = Debug|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|x64.Deploy.0 = Debug|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|x86.ActiveCfg = Debug|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|x86.Build.0 = Debug|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Debug|x86.Deploy.0 = Debug|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|Any CPU.ActiveCfg = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|ARM.ActiveCfg = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|ARM.Build.0 = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|ARM.Deploy.0 = Release|ARM - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|iPhone.ActiveCfg = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|iPhoneSimulator.ActiveCfg = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|x64.ActiveCfg = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|x64.Build.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|x64.Deploy.0 = Release|x64 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.ActiveCfg = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.Build.0 = Release|x86 - {A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.Deploy.0 = Release|x86 - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|ARM.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|iPhone.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|x64.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|x64.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|x86.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.AppStore|x86.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|ARM.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|iPhone.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|x64.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Debug|x86.Build.0 = Debug|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|Any CPU.Build.0 = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|ARM.ActiveCfg = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|ARM.Build.0 = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|iPhone.ActiveCfg = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|iPhone.Build.0 = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|x64.ActiveCfg = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|x64.Build.0 = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|x86.ActiveCfg = Release|Any CPU - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB}.Release|x86.Build.0 = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|ARM.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|iPhone.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|x64.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|x64.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|x86.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.AppStore|x86.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|ARM.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|ARM.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|iPhone.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|x64.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|x64.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|x86.ActiveCfg = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Debug|x86.Build.0 = Debug|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|Any CPU.Build.0 = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|ARM.ActiveCfg = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|ARM.Build.0 = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|iPhone.ActiveCfg = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|iPhone.Build.0 = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|x64.ActiveCfg = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|x64.Build.0 = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|x86.ActiveCfg = Release|Any CPU - {63417272-1E6A-406A-AD11-C738558D89C0}.Release|x86.Build.0 = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|ARM.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|iPhone.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|x64.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|x64.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|x86.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.AppStore|x86.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|ARM.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|ARM.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|iPhone.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|x64.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|x64.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|x86.ActiveCfg = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Debug|x86.Build.0 = Debug|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|Any CPU.Build.0 = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|ARM.ActiveCfg = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|ARM.Build.0 = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|iPhone.ActiveCfg = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|iPhone.Build.0 = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|x64.ActiveCfg = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|x64.Build.0 = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|x86.ActiveCfg = Release|Any CPU - {56E0E455-731E-41CB-AF46-C1A70F8A140B}.Release|x86.Build.0 = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|ARM.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|iPhone.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|x64.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|x64.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|x86.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.AppStore|x86.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|ARM.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|ARM.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|iPhone.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|x64.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|x64.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|x86.ActiveCfg = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Debug|x86.Build.0 = Debug|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|Any CPU.Build.0 = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|ARM.ActiveCfg = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|ARM.Build.0 = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|iPhone.ActiveCfg = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|iPhone.Build.0 = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|x64.ActiveCfg = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|x64.Build.0 = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|x86.ActiveCfg = Release|Any CPU - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5}.Release|x86.Build.0 = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|ARM.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|iPhone.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|x64.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|x64.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|x86.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.AppStore|x86.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|ARM.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|ARM.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|iPhone.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|x64.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|x64.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|x86.ActiveCfg = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Debug|x86.Build.0 = Debug|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|Any CPU.Build.0 = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|ARM.ActiveCfg = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|ARM.Build.0 = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|iPhone.ActiveCfg = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|iPhone.Build.0 = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|x64.ActiveCfg = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|x64.Build.0 = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|x86.ActiveCfg = Release|Any CPU - {4F0E5CB2-5795-4040-8637-1D395914C944}.Release|x86.Build.0 = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|ARM.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|iPhone.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|x64.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|x64.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|x86.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.AppStore|x86.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|ARM.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|ARM.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|iPhone.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|x64.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|x64.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|x86.ActiveCfg = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Debug|x86.Build.0 = Debug|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|Any CPU.Build.0 = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|ARM.ActiveCfg = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|ARM.Build.0 = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|iPhone.ActiveCfg = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|iPhone.Build.0 = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|x64.ActiveCfg = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|x64.Build.0 = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|x86.ActiveCfg = Release|Any CPU - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8}.Release|x86.Build.0 = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|ARM.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|iPhone.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|x64.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|x64.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|x86.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.AppStore|x86.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|ARM.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|ARM.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|iPhone.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|x64.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|x64.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|x86.ActiveCfg = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Debug|x86.Build.0 = Debug|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|Any CPU.Build.0 = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|ARM.ActiveCfg = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|ARM.Build.0 = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|iPhone.ActiveCfg = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|iPhone.Build.0 = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|x64.ActiveCfg = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|x64.Build.0 = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|x86.ActiveCfg = Release|Any CPU - {5A155B15-D8E7-47FE-8D17-8E641726158C}.Release|x86.Build.0 = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|ARM.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|iPhone.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|x64.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|x64.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|x86.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.AppStore|x86.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|ARM.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|ARM.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|iPhone.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|x64.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|x64.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|x86.ActiveCfg = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Debug|x86.Build.0 = Debug|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|Any CPU.Build.0 = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|ARM.ActiveCfg = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|ARM.Build.0 = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|iPhone.ActiveCfg = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|iPhone.Build.0 = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|x64.ActiveCfg = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|x64.Build.0 = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|x86.ActiveCfg = Release|Any CPU - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A}.Release|x86.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|Any CPU.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|ARM.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|ARM.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|iPhone.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|x64.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|x64.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|x86.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.AppStore|x86.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|Any CPU.Build.0 = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|ARM.ActiveCfg = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|ARM.Build.0 = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|iPhone.Build.0 = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|x64.ActiveCfg = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|x64.Build.0 = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|x86.ActiveCfg = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Debug|x86.Build.0 = Debug|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|Any CPU.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|Any CPU.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|ARM.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|ARM.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|iPhone.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|iPhone.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|x64.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|x64.Build.0 = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|x86.ActiveCfg = Release|Any CPU - {969E793C-C413-490E-9C9D-B2B46DA5AF32}.Release|x86.Build.0 = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|ARM.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|iPhone.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|x64.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|x64.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|x86.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.AppStore|x86.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|ARM.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|iPhone.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|x64.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|x64.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|x86.ActiveCfg = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Debug|x86.Build.0 = Debug|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|Any CPU.Build.0 = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|ARM.ActiveCfg = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|ARM.Build.0 = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|iPhone.ActiveCfg = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|iPhone.Build.0 = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x64.ActiveCfg = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x64.Build.0 = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x86.ActiveCfg = Release|Any CPU - {3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x86.Build.0 = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|ARM.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhone.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x64.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x64.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x86.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x86.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|ARM.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|ARM.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhone.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x64.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x64.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x86.ActiveCfg = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x86.Build.0 = Debug|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|Any CPU.Build.0 = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|ARM.ActiveCfg = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|ARM.Build.0 = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhone.ActiveCfg = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhone.Build.0 = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x64.ActiveCfg = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x64.Build.0 = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x86.ActiveCfg = Release|Any CPU - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x86.Build.0 = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|ARM.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhone.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x64.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x64.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x86.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x86.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|ARM.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|ARM.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhone.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x64.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x64.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x86.ActiveCfg = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x86.Build.0 = Debug|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|Any CPU.Build.0 = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|ARM.ActiveCfg = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|ARM.Build.0 = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhone.ActiveCfg = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhone.Build.0 = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x64.ActiveCfg = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x64.Build.0 = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x86.ActiveCfg = Release|Any CPU - {98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x86.Build.0 = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|ARM.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhone.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x64.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x64.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x86.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x86.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|ARM.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|ARM.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhone.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x64.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x64.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x86.ActiveCfg = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x86.Build.0 = Debug|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|Any CPU.Build.0 = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|ARM.ActiveCfg = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|ARM.Build.0 = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhone.ActiveCfg = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhone.Build.0 = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x64.ActiveCfg = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x64.Build.0 = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x86.ActiveCfg = Release|Any CPU - {E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x86.Build.0 = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|ARM.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|iPhone.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|x64.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|x64.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|x86.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.AppStore|x86.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|ARM.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|ARM.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|iPhone.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|x64.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|x64.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|x86.ActiveCfg = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Debug|x86.Build.0 = Debug|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|Any CPU.Build.0 = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|ARM.ActiveCfg = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|ARM.Build.0 = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|iPhone.ActiveCfg = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|iPhone.Build.0 = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|x64.ActiveCfg = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|x64.Build.0 = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|x86.ActiveCfg = Release|Any CPU - {CB6D01A4-E597-4348-9570-FC8DB03B4267}.Release|x86.Build.0 = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|ARM.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|iPhone.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|x64.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|x64.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|x86.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.AppStore|x86.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|ARM.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|iPhone.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|x64.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|x64.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Debug|x86.Build.0 = Debug|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|Any CPU.Build.0 = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|ARM.ActiveCfg = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|ARM.Build.0 = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|iPhone.ActiveCfg = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|iPhone.Build.0 = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|x64.ActiveCfg = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|x64.Build.0 = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|x86.ActiveCfg = Release|Any CPU - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {91CF7717-08AB-4E65-B10E-0B426F01E2E8} = {932D8224-11F6-4D07-B109-DA28AD288A63} - {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} = {932D8224-11F6-4D07-B109-DA28AD288A63} - {326A7FB3-5295-468C-A4FE-67DCB823E1E5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {EF0337F2-ED00-4643-89FD-EE10863F1870} = {A857AD10-40FF-4303-BEC2-FF1C58D5735E} - {24CD3B53-141E-4A07-9B0D-796641E1CF78} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {2110CBB0-3B38-4EE4-A743-DF6968D80D90} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} - {42681D9D-750A-4DF7-BD9F-9292CFD5C253} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5} - {231226CE-690B-4979-8870-9A79D80928E2} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {F5598DCB-6DDE-4661-AD9D-A55612DA7E76} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} - {95F1F07C-4D92-4742-BD07-E5B805AAB651} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {A579E108-5445-403D-A407-339AC4D1611B} = {24CD3B53-141E-4A07-9B0D-796641E1CF78} - {F16E3C6A-1C94-4EAB-BE91-099618060B68} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} - {DB0EFB20-B024-4E5E-A75C-52143C131D25} = {932D8224-11F6-4D07-B109-DA28AD288A63} - {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} - {0044B293-1DCC-4224-B948-00CF6DC7F510} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} - {8088F3FC-6787-45FA-A924-816EC81CBFAC} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} - {9EE28E45-1533-472B-8267-56C48855BA0E} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} - {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} - {022E145D-1593-47EE-9608-8E323D3C63F5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {1A01AF82-6FCB-464C-B39C-F127AEBD315D} = {022E145D-1593-47EE-9608-8E323D3C63F5} - {41139F64-4046-4F16-96B7-D941D96FA9C6} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {E7581357-FC34-474C-B8F5-307EE3CE05EF} = {41139F64-4046-4F16-96B7-D941D96FA9C6} - {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {DF395F85-B010-465D-857A-7EBCC512C0C2} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} - {69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} - {1815B651-941C-466B-AE33-D1D7EEB8F77F} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} - {15F4B3AA-89B6-4A0D-9051-414305974781} = {1815B651-941C-466B-AE33-D1D7EEB8F77F} - {EF3EDC78-E864-43FF-8E80-CF33DD9508A3} = {932D8224-11F6-4D07-B109-DA28AD288A63} - {F7B757E3-D3F2-4E60-B183-D67CDEC96F76} = {EF3EDC78-E864-43FF-8E80-CF33DD9508A3} - {2BB81612-8D04-49CD-B17F-38DAB176E583} = {EF3EDC78-E864-43FF-8E80-CF33DD9508A3} - {BA96A12C-4EE3-46C4-BB3F-F811B554CD01} = {F7B757E3-D3F2-4E60-B183-D67CDEC96F76} - {62DBB163-9CA9-4818-B48B-13233DF37C24} = {2BB81612-8D04-49CD-B17F-38DAB176E583} - {6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {2BB81612-8D04-49CD-B17F-38DAB176E583} - {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {2BB81612-8D04-49CD-B17F-38DAB176E583} - {0AAED9FF-3260-43BB-B586-9AAF1E010A90} = {A857AD10-40FF-4303-BEC2-FF1C58D5735E} - {6E4285E7-7611-4440-A1B5-3513EBB13807} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90} - {A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90} - {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90} - {A7337243-33B8-463A-87AD-944B75EFD820} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90} - {9F00E62F-E180-4A9C-8794-98A72AFAC2DB} = {7BA332A2-189D-4D03-9935-FDFF81C42496} - {63417272-1E6A-406A-AD11-C738558D89C0} = {7BA332A2-189D-4D03-9935-FDFF81C42496} - {56E0E455-731E-41CB-AF46-C1A70F8A140B} = {2F0DEF71-84AC-4212-86D4-E36E8896BDBF} - {1EB6680D-4AC8-47EF-A026-E4EEEE93CAD5} = {2F0DEF71-84AC-4212-86D4-E36E8896BDBF} - {4F0E5CB2-5795-4040-8637-1D395914C944} = {2B26A7AA-6D61-42FA-8AB7-C0F05AAE7F1C} - {22F59DDE-D0BC-4D58-BCDE-240C7EEBECB8} = {DA1786E4-30AB-434E-A827-92896390B79D} - {5A155B15-D8E7-47FE-8D17-8E641726158C} = {30308DE0-8128-4613-BCAD-B0BEFFB20E38} - {0A9643F2-FF99-4DA0-BC2B-D62D5D3C317A} = {30308DE0-8128-4613-BCAD-B0BEFFB20E38} - {969E793C-C413-490E-9C9D-B2B46DA5AF32} = {EF0337F2-ED00-4643-89FD-EE10863F1870} - {3572B4E2-4399-4797-B5C2-3720D870E0C3} = {EF0337F2-ED00-4643-89FD-EE10863F1870} - {7BA332A2-189D-4D03-9935-FDFF81C42496} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} - {2F0DEF71-84AC-4212-86D4-E36E8896BDBF} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5} - {2B26A7AA-6D61-42FA-8AB7-C0F05AAE7F1C} = {41139F64-4046-4F16-96B7-D941D96FA9C6} - {DA1786E4-30AB-434E-A827-92896390B79D} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} - {30308DE0-8128-4613-BCAD-B0BEFFB20E38} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} = {932D8224-11F6-4D07-B109-DA28AD288A63} - {56AD1FCA-6E16-4798-BF29-941C5B3277D2} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} - {34ED3311-2B30-4C8B-823B-312B50FFC32A} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} - {A32A5254-BA36-46FC-8C75-F7B8FFE8FCD0} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} - {696D2B7E-6B75-401D-964A-BFE6F4D7AF73} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} - {424BC53E-17EA-4E12-BC07-64BAA927ABCB} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} - {0A328C44-4C4E-49BE-9FB4-9D851CEC28AC} = {56AD1FCA-6E16-4798-BF29-941C5B3277D2} - {98E0B3BA-6601-4C59-A9AA-24A00A17D835} = {A32A5254-BA36-46FC-8C75-F7B8FFE8FCD0} - {E39BD762-BC86-459D-B818-B6BF2D9F1352} = {424BC53E-17EA-4E12-BC07-64BAA927ABCB} - {ABBA561B-499B-48C0-8299-85D41E6E9E98} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} - {CB6D01A4-E597-4348-9570-FC8DB03B4267} = {ABBA561B-499B-48C0-8299-85D41E6E9E98} - {8449B293-5949-4832-8612-6BCE2962BCB1} = {932D8224-11F6-4D07-B109-DA28AD288A63} - {7C8FA264-ED49-4ACA-9629-FCE5462B30AB} = {8449B293-5949-4832-8612-6BCE2962BCB1} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9} - EndGlobalSection -EndGlobal From aafd8893d901cb36c2b64466e987f1cd8d4bda06 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 21 Nov 2019 10:49:36 +0000 Subject: [PATCH 18/22] Rename script to create aks resource --- deploy/k8s/{gen-k8s-env-aks.ps1 => create-aks.ps1} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename deploy/k8s/{gen-k8s-env-aks.ps1 => create-aks.ps1} (100%) diff --git a/deploy/k8s/gen-k8s-env-aks.ps1 b/deploy/k8s/create-aks.ps1 similarity index 100% rename from deploy/k8s/gen-k8s-env-aks.ps1 rename to deploy/k8s/create-aks.ps1 From 7faa1a40cff48c56dab554eb585fea58c9095487 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 21 Nov 2019 11:02:09 +0000 Subject: [PATCH 19/22] Add comment to Create-DockerfileSolutionRestore.ps1 script --- src/Create-DockerfileSolutionRestore.ps1 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Create-DockerfileSolutionRestore.ps1 b/src/Create-DockerfileSolutionRestore.ps1 index 8c6714bd5..c5deb5013 100644 --- a/src/Create-DockerfileSolutionRestore.ps1 +++ b/src/Create-DockerfileSolutionRestore.ps1 @@ -4,6 +4,12 @@ param ( $outfile = "DockerfileSolutionRestore.txt" +# This script creates the $outfile file, with Dockerfile commands to restore all the packages for the solution, +# so you can insert them (by hand) into Dockerfiles right before the "COPY . ." line +# to increase build speed by optimizing the use of docker build images cache. + +# This script is only needed when adding or removing projects from the solution. + Write-Output "COPY ""$solution"" ""$solution""" > $outfile Add-Content -Path $outfile "" From b24c48c840331dfec16160ad5b2243b4c1220700 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Thu, 21 Nov 2019 11:04:31 +0000 Subject: [PATCH 20/22] Remove deleted folder from .gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index f3fdf2b8f..2be252809 100644 --- a/.gitignore +++ b/.gitignore @@ -26,9 +26,6 @@ bld/ # Visual Studio 2015 cache/options directory .vs/ -# Dockerfile projects folder for restore-packages script -csproj-files/ - # .js files created on build: src/Web/WebMVC/wwwroot/js/site* From fd69625578ecec9113a4c45a6b199c19b1aa6091 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Fri, 22 Nov 2019 10:33:39 +0000 Subject: [PATCH 21/22] Remove obsolete files --- obsolete/Local.testsettings | 13 - obsolete/docker-compose.override.yml | 418 -------------------------- obsolete/docker-compose.yml | 240 --------------- obsolete/run-docker-compose-build.ps1 | 14 - 4 files changed, 685 deletions(-) delete mode 100644 obsolete/Local.testsettings delete mode 100644 obsolete/docker-compose.override.yml delete mode 100644 obsolete/docker-compose.yml delete mode 100644 obsolete/run-docker-compose-build.ps1 diff --git a/obsolete/Local.testsettings b/obsolete/Local.testsettings deleted file mode 100644 index 4e1e6ab7f..000000000 --- a/obsolete/Local.testsettings +++ /dev/null @@ -1,13 +0,0 @@ - - - These are default test settings for a local test run. - - - - - - - - - - \ No newline at end of file diff --git a/obsolete/docker-compose.override.yml b/obsolete/docker-compose.override.yml deleted file mode 100644 index 1ec7879b3..000000000 --- a/obsolete/docker-compose.override.yml +++ /dev/null @@ -1,418 +0,0 @@ -version: '3.4' - -# The default docker-compose.override file can use the "localhost" as the external name for testing web apps within the same dev machine. -# The ESHOP_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like: -# ESHOP_EXTERNAL_DNS_NAME_OR_IP=localhost -# but values present in the environment vars at runtime will always override those defined inside the .env file -# An external IP or DNS name has to be used (instead localhost and the 10.0.75.1 IP) when testing the Web apps and the Xamarin apps from remote machines/devices using the same WiFi, for instance. - -services: - seq: - environment: - - ACCEPT_EULA=Y - ports: - - "5340:80" - - sql.data: - environment: - - SA_PASSWORD=Pass@word - - ACCEPT_EULA=Y - ports: - - "5433:1433" # Important: In a production environment your should remove the external port - - nosql.data: - ports: - - "27017:27017" # Important: In a production environment your should remove the external port - - basket.data: - ports: - - "6379:6379" # Important: In a production environment your should remove the external port - - rabbitmq: - ports: - - "15672:15672" # Important: In a production environment your should remove the external port - - "5672:5672" # Important: In a production environment your should remove the external port - - identity.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - SpaClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5104 - - XamarinCallback=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105/xamarincallback #localhost do not work for UWP login, so we have to use "external" IP always - - ConnectionString=${ESHOP_AZURE_IDENTITY_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word} - - MvcClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5100 #Local: You need to open your local dev-machine firewall at range 5100-5110. - - LocationApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5109 - - MarketingApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5110 - - BasketApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5103 - - OrderingApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5102 - - MobileShoppingAggClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5120 - - WebShoppingAggClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5121 - - WebhooksApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5113 - - WebhooksWebClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5114 - - UseCustomizationData=True - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - ports: - - "5105:80" - - basket.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_REDIS_BASKET_DB:-basket.data} - - identityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - AzureServiceBusEnabled=False - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - UseLoadTest=${USE_LOADTEST:-False} - - ports: - - "5103:80" # Important: In a production environment your should remove the external port (5103) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - catalog.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_CATALOG_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word} - - PicBaseUrl=${ESHOP_AZURE_STORAGE_CATALOG_URL:-http://localhost:5202/api/v1/c/catalog/items/[0]/pic/} #Local: You need to open your local dev-machine firewall at range 5100-5110. - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - AzureStorageAccountName=${ESHOP_AZURE_STORAGE_CATALOG_NAME} - - AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_CATALOG_KEY} - - UseCustomizationData=True - - AzureServiceBusEnabled=False - - AzureStorageEnabled=False - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - ports: - - "5101:80" # Important: In a production environment your should remove the external port (5101) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - ordering.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word} - - identityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - UseCustomizationData=True - - AzureServiceBusEnabled=False - - CheckUpdateTime=30000 - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - UseLoadTest=${USE_LOADTEST:-False} - - Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose - - Serilog__MinimumLevel__Override__Ordering.API=Verbose - ports: - - "5102:80" # Important: In a production environment your should remove the external port (5102) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - - ordering.backgroundtasks: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word} - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - UseCustomizationData=True - - AzureServiceBusEnabled=False - - CheckUpdateTime=30000 - - GracePeriodTime=1 - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - UseLoadTest=${USE_LOADTEST:-False} - - Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose - ports: - - "5111:80" - - marketing.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_MARKETING_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.MarketingDb;User Id=sa;Password=Pass@word} - - MongoConnectionString=${ESHOP_AZURE_COSMOSDB:-mongodb://nosql.data} - - MongoDatabase=MarketingDb - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - identityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 - - CampaignDetailFunctionUri=${ESHOP_AZUREFUNC_CAMPAIGN_DETAILS_URI} - - PicBaseUrl=${ESHOP_AZURE_STORAGE_MARKETING_URL:-http://localhost:5110/api/v1/campaigns/[0]/pic/} - - AzureStorageAccountName=${ESHOP_AZURE_STORAGE_MARKETING_NAME} - - AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_MARKETING_KEY} - - AzureServiceBusEnabled=False - - AzureStorageEnabled=False - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - UseLoadTest=${USE_LOADTEST:-False} - ports: - - "5110:80" # Important: In a production environment your should remove the external port (5110) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - payment.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - AzureServiceBusEnabled=False - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - Serilog__MinimumLevel__Override__Payment.API.IntegrationEvents.EventHandling=Verbose - - Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose - ports: - - "5108:80" # Important: In a production environment your should remove the external port (5108) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - locations.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_COSMOSDB:-mongodb://nosql.data} - - Database=LocationsDb - - identityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - AzureServiceBusEnabled=False - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - UseLoadTest=${USE_LOADTEST:-False} - ports: - - "5109:80" # Important: In a production environment your should remove the external port (5109) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - webhooks.api: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - ConnectionString=${ESHOP_AZURE_WEBHOOKS_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.WebhooksDb;User Id=sa;Password=Pass@word} - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - IdentityUrl=http://identity.api - - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 - ports: - - "5113:80" # Important: In a production environment your should remove the external port (5109) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - mobileshoppingapigw: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - IdentityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - urls__basket=http://basket.api - - urls__catalog=http://catalog.api - - urls__orders=http://ordering.api - - urls__identity=http://identity.api - - CatalogUrlHC=http://catalog.api/hc - - OrderingUrlHC=http://ordering.api/hc - - IdentityUrlHC=http://identity.api/hc - - BasketUrlHC=http://basket.api/hc - - MarketingUrlHC=http://marketing.api/hc - - PaymentUrlHC=http://payment.api/hc - - LocationUrlHC=http://locations.api/hc - ports: - - "5200:80" - volumes: - - ./src/ApiGateways/Mobile.Bff.Shopping/apigw:${ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration} - - mobilemarketingapigw: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - IdentityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - CatalogUrlHC=http://catalog.api/hc - - OrderingUrlHC=http://ordering.api/hc - - IdentityUrlHC=http://identity.api/hc - - BasketUrlHC=http://basket.api/hc - - MarketingUrlHC=http://marketing.api/hc - - PaymentUrlHC=http://payment.api/hc - - LocationUrlHC=http://locations.api/hc - ports: - - "5201:80" - volumes: - - ./src/ApiGateways/Mobile.Bff.Marketing/apigw:${ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration} - - webshoppingapigw: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - IdentityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - CatalogUrlHC=http://catalog.api/hc - - OrderingUrlHC=http://ordering.api/hc - - IdentityUrlHC=http://identity.api/hc - - BasketUrlHC=http://basket.api/hc - - MarketingUrlHC=http://marketing.api/hc - - PaymentUrlHC=http://payment.api/hc - - LocationUrlHC=http://locations.api/hc - ports: - - "5202:80" - volumes: - - ./src/ApiGateways/Web.Bff.Shopping/apigw:${ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration} - - webmarketingapigw: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - IdentityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - CatalogUrlHC=http://catalog.api/hc - - OrderingUrlHC=http://ordering.api/hc - - IdentityUrlHC=http://identity.api/hc - - BasketUrlHC=http://basket.api/hc - - MarketingUrlHC=http://marketing.api/hc - - PaymentUrlHC=http://payment.api/hc - - LocationUrlHC=http://locations.api/hc - ports: - - "5203:80" - volumes: - - ./src/ApiGateways/Web.Bff.Marketing/apigw:${ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration} - - mobileshoppingagg: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - urls__basket=http://basket.api - - urls__catalog=http://catalog.api - - urls__orders=http://ordering.api - - urls__identity=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - CatalogUrlHC=http://catalog.api/hc - - OrderingUrlHC=http://ordering.api/hc - - IdentityUrlHC=http://identity.api/hc - - BasketUrlHC=http://basket.api/hc - - MarketingUrlHC=http://marketing.api/hc - - PaymentUrlHC=http://payment.api/hc - - LocationUrlHC=http://locations.api/hc - ports: - - "5120:80" # Important: In a production environment your should remove the external port (5120) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - webshoppingagg: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - urls__basket=http://basket.api - - urls__catalog=http://catalog.api - - urls__orders=http://ordering.api - - urls__identity=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - - CatalogUrlHC=http://catalog.api/hc - - OrderingUrlHC=http://ordering.api/hc - - IdentityUrlHC=http://identity.api/hc - - BasketUrlHC=http://basket.api/hc - - MarketingUrlHC=http://marketing.api/hc - - PaymentUrlHC=http://payment.api/hc - - LocationUrlHC=http://locations.api/hc - ports: - - "5121:80" # Important: In a production environment your should remove the external port (5121) kept here for microservice debugging purposes. - # The API Gateway redirects and access through the internal port (80). - - ordering.signalrhub: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq} - - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} - - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} - - AzureServiceBusEnabled=False - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - identityUrl=http://identity.api #Local: You need to open your local dev-machine firewall at range 5100-5110. - ports: - - "5112:80" - - webstatus: - environment: - - ASPNETCORE_ENVIRONMENT=Production - - ASPNETCORE_URLS=http://0.0.0.0:80 - - HealthChecksUI__HealthChecks__0__Name=WebMVC HTTP Check - - HealthChecksUI__HealthChecks__0__Uri=http://webmvc/hc - - HealthChecksUI__HealthChecks__1__Name=WebSPA HTTP Check - - HealthChecksUI__HealthChecks__1__Uri=http://webspa/hc - - HealthChecksUI__HealthChecks__2__Name=Web Shopping Aggregator GW HTTP Check - - HealthChecksUI__HealthChecks__2__Uri=http://webshoppingagg/hc - - HealthChecksUI__HealthChecks__3__Name=Mobile Shopping Aggregator HTTP Check - - HealthChecksUI__HealthChecks__3__Uri=http://mobileshoppingagg/hc - - HealthChecksUI__HealthChecks__4__Name=Mobile Shopping API GW HTTP Check - - HealthChecksUI__HealthChecks__4__Uri=http://mobileshoppingapigw/hc - - HealthChecksUI__HealthChecks__5__Name=Mobile Marketing API GW HTTP Check - - HealthChecksUI__HealthChecks__5__Uri=http://mobilemarketingapigw/hc - - HealthChecksUI__HealthChecks__6__Name=Web Shopping API GW HTTP Check - - HealthChecksUI__HealthChecks__6__Uri=http://webshoppingapigw/hc - - HealthChecksUI__HealthChecks__7__Name=Web Marketing API GW HTTP Check - - HealthChecksUI__HealthChecks__7__Uri=http://webmarketingapigw/hc - - HealthChecksUI__HealthChecks__8__Name=Ordering HTTP Check - - HealthChecksUI__HealthChecks__8__Uri=http://ordering.api/hc - - HealthChecksUI__HealthChecks__9__Name=Ordering HTTP Background Check - - HealthChecksUI__HealthChecks__9__Uri=http://ordering.backgroundtasks/hc - - HealthChecksUI__HealthChecks__10__Name=Basket HTTP Check - - HealthChecksUI__HealthChecks__10__Uri=http://basket.api/hc - - HealthChecksUI__HealthChecks__11__Name=Catalog HTTP Check - - HealthChecksUI__HealthChecks__11__Uri=http://catalog.api/hc - - HealthChecksUI__HealthChecks__12__Name=Identity HTTP Check - - HealthChecksUI__HealthChecks__12__Uri=http://identity.api/hc - - HealthChecksUI__HealthChecks__13__Name=Marketing HTTP Check - - HealthChecksUI__HealthChecks__13__Uri=http://marketing.api/hc - - HealthChecksUI__HealthChecks__14__Name=Locations HTTP Check - - HealthChecksUI__HealthChecks__14__Uri=http://locations.api/hc - - HealthChecksUI__HealthChecks__15__Name=Payments HTTP Check - - HealthChecksUI__HealthChecks__15__Uri=http://payment.api/hc - - HealthChecksUI__HealthChecks__16__Name=Ordering SignalRHub HTTP Check - - HealthChecksUI__HealthChecks__16__Uri=http://ordering.signalrhub/hc - - OrderingBackgroundTasksUrl=http://ordering.backgroundtasks/hc - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - ports: - - "5107:80" - - webspa: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - IdentityUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105. - - PurchaseUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202 - - MarketingUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5203 - - PurchaseUrlHC=http://webshoppingapigw/hc - - MarketingUrlHC=http://webmarketingapigw/hc - - IdentityUrlHC=http://identity.api/hc - - UseCustomizationData=True - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202 - ports: - - "5104:80" - - webmvc: - environment: - - ASPNETCORE_ENVIRONMENT=Development - - ASPNETCORE_URLS=http://0.0.0.0:80 - - PurchaseUrl=http://webshoppingapigw - - IdentityUrl=http://10.0.75.1:5105 # Local Mac: Use http://docker.for.mac.localhost:5105 || Local Windows: Use 10.0.75.1 in a "Docker for Windows" environment, if using "localhost" from browser. || #Remote access: Use ${ESHOP_EXTERNAL_DNS_NAME_OR_IP} if using external IP or DNS name from browser. - - MarketingUrl=http://webmarketingapigw - - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202 - - IdentityUrlHC=http://identity.api/hc - - PurchaseUrlHC=http://webshoppingapigw/hc - - MarketingUrlHC=http://webmarketingapigw/hc - - UseCustomizationData=True - - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - - OrchestratorType=${ORCHESTRATOR_TYPE} - - UseLoadTest=${USE_LOADTEST:-False} - ports: - - "5100:80" - - webhooks.client: - environment: - - ASPNETCORE_URLS=http://0.0.0.0:80 - - Token=6168DB8D-DC58-4094-AF24-483278923590 # Webhooks are registered with this token (any value is valid) but the client won't check it - - IdentityUrl=http://10.0.75.1:5105 - - CallBackUrl=http://localhost:5114 - - WebhooksUrl=http://webhooks.api - - SelfUrl=http://webhooks.client/ - ports: - - "5114:80" \ No newline at end of file diff --git a/obsolete/docker-compose.yml b/obsolete/docker-compose.yml deleted file mode 100644 index 6094f2ca2..000000000 --- a/obsolete/docker-compose.yml +++ /dev/null @@ -1,240 +0,0 @@ -version: '3.4' - -services: - - seq: - image: datalust/seq:latest - - sql.data: - image: mcr.microsoft.com/mssql/server:2017-latest - - nosql.data: - image: mongo - - basket.data: - image: redis:alpine - - rabbitmq: - image: rabbitmq:3-management-alpine - - identity.api: - image: ${REGISTRY:-eshop}/identity.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Identity/Identity.API/Dockerfile - depends_on: - - sql.data - - basket.api: - image: ${REGISTRY:-eshop}/basket.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Basket/Basket.API/Dockerfile - depends_on: - - basket.data - - identity.api - - rabbitmq - - catalog.api: - image: ${REGISTRY:-eshop}/catalog.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Catalog/Catalog.API/Dockerfile - depends_on: - - sql.data - - rabbitmq - - ordering.api: - image: ${REGISTRY:-eshop}/ordering.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Ordering/Ordering.API/Dockerfile - depends_on: - - sql.data - - rabbitmq - - ordering.backgroundtasks: - image: ${REGISTRY:-eshop}/ordering.backgroundtasks:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile - depends_on: - - sql.data - - rabbitmq - - marketing.api: - image: ${REGISTRY:-eshop}/marketing.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Marketing/Marketing.API/Dockerfile - depends_on: - - sql.data - - nosql.data - - identity.api - - rabbitmq - - payment.api: - image: ${REGISTRY:-eshop}/payment.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Payment/Payment.API/Dockerfile - depends_on: - - rabbitmq - - locations.api: - image: ${REGISTRY:-eshop}/locations.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Location/Locations.API/Dockerfile - depends_on: - - nosql.data - - rabbitmq - - webhooks.api: - image: ${REGISTRY:-eshop}/webhooks.api:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Webhooks/Webhooks.API/Dockerfile - depends_on: - - sql.data - - mobileshoppingapigw: - image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - mobilemarketingapigw: - image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - webshoppingapigw: - image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - webmarketingapigw: - image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - mobileshoppingagg: - image: ${REGISTRY:-eshop}/mobileshoppingagg:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - webshoppingagg: - image: ${REGISTRY:-eshop}/webshoppingagg:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - ordering.signalrhub: - image: ${REGISTRY:-eshop}/ordering.signalrhub:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Services/Ordering/Ordering.SignalrHub/Dockerfile - depends_on: - - nosql.data - - sql.data - - identity.api - - rabbitmq - - ordering.api - - marketing.api - - catalog.api - - basket.api - - webstatus: - image: ${REGISTRY:-eshop}/webstatus:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Web/WebStatus/Dockerfile - - webspa: - image: ${REGISTRY:-eshop}/webspa:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Web/WebSPA/Dockerfile - args: - NODE_IMAGE: ${NODE_IMAGE:-node:8.11} -# depends_on: -# - webshoppingagg -# - webshoppingapigw -# - webmarketingapigw - - webmvc: - image: ${REGISTRY:-eshop}/webmvc:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Web/WebMVC/Dockerfile - depends_on: - - webshoppingagg - - webshoppingapigw - - webmarketingapigw - - webhooks.client: - image: ${REGISTRY:-eshop}/webhooks.client:${PLATFORM:-linux}-${TAG:-latest} - build: - context: . - dockerfile: src/Web/WebhookClient/Dockerfile - depends_on: - - webhooks.api \ No newline at end of file diff --git a/obsolete/run-docker-compose-build.ps1 b/obsolete/run-docker-compose-build.ps1 deleted file mode 100644 index 7d99ee0e7..000000000 --- a/obsolete/run-docker-compose-build.ps1 +++ /dev/null @@ -1,14 +0,0 @@ -$startTime = $(Get-Date) - -docker-compose build - -$elapsedTime = $(Get-Date) - $startTime - -$elapsedTime - -# "Beep" from: http://jeffwouters.nl/index.php/2012/03/get-your-geek-on-with-powershell-and-some-music/ -[console]::beep(900,400) -[console]::beep(1000,400) -[console]::beep(800,400) -[console]::beep(400,400) -[console]::beep(600,1600) From 025d13e4ca8e2ea41db0caab4344aded0ffdc0d6 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Sat, 23 Nov 2019 12:37:28 +0000 Subject: [PATCH 22/22] Make installation work in local kubernetes --- deploy/k8s/deploy-ingress-dockerlocal.ps1 | 2 + deploy/k8s/deploy-ingress.ps1 | 2 + deploy/k8s/helm/app.yaml | 61 ++++++------ deploy/k8s/helm/deploy-all-istio.ps1 | 116 ---------------------- deploy/k8s/nodeports/rabbitmq-admin.yaml | 12 +++ deploy/k8s/nodeports/sql-service.yaml | 12 +++ 6 files changed, 58 insertions(+), 147 deletions(-) create mode 100644 deploy/k8s/deploy-ingress-dockerlocal.ps1 create mode 100644 deploy/k8s/deploy-ingress.ps1 delete mode 100644 deploy/k8s/helm/deploy-all-istio.ps1 create mode 100644 deploy/k8s/nodeports/rabbitmq-admin.yaml create mode 100644 deploy/k8s/nodeports/sql-service.yaml diff --git a/deploy/k8s/deploy-ingress-dockerlocal.ps1 b/deploy/k8s/deploy-ingress-dockerlocal.ps1 new file mode 100644 index 000000000..43bf5704d --- /dev/null +++ b/deploy/k8s/deploy-ingress-dockerlocal.ps1 @@ -0,0 +1,2 @@ +kubectl apply -f nginx-ingress\cm.yaml +kubectl apply -f nginx-ingress\cloud-generic.yaml diff --git a/deploy/k8s/deploy-ingress.ps1 b/deploy/k8s/deploy-ingress.ps1 new file mode 100644 index 000000000..594986745 --- /dev/null +++ b/deploy/k8s/deploy-ingress.ps1 @@ -0,0 +1,2 @@ +# Deploy nginx-ingress core files +kubectl apply -f nginx-ingress\mandatory.yaml diff --git a/deploy/k8s/helm/app.yaml b/deploy/k8s/helm/app.yaml index d57fd8836..e83ea2823 100644 --- a/deploy/k8s/helm/app.yaml +++ b/deploy/k8s/helm/app.yaml @@ -1,36 +1,35 @@ # This helm values file defines app-based settings # Charts use those values, so this file **MUST** be included in all chart releases - -app: # app global settings - name: "my-eshop" # Override for custom app name - ingress: # ingress related settings +app: # app global settings + name: "my-eshop" # Override for custom app name + ingress: # ingress related settings entries: - basket: basket-api # ingress entry for basket api - catalog: catalog-api # ingress entry for catalog api - ordering: ordering-api # ingress entry for ordering api - identity: identity # ingress entry for identity api - mvc: webmvc # ingress entry for web mvc - spa: "" # ingress entry for web spa - status: webstatus # ingress entry for web status - webshoppingapigw: webshoppingapigw # ingress entry for web shopping Agw - webmarketingapigw: webmarketingapigw # ingress entry for web mkg Agw - mobilemarketingapigw: mobilemarketingapigw # ingress entry for mobile mkg Agw - mobileshoppingapigw: mobileshoppingapigw # ingress entry for mobile shopping Agw - webshoppingagg: webshoppingagg # ingress entry for web shopping aggregator - mobileshoppingagg: mobileshoppingagg # ingress entry for mobile shopping aggregator - payment: payment-api # ingress entry for payment api - locations: locations-api # ingress entry for locations api - marketing: marketing-api # ingress entry for marketing api - webhooks: webhooks-api # ingress entry for webhooks api - webhooksweb: webhooks-web # ingress entry for webhooks web demo client + basket: basket-api # ingress entry for basket api + catalog: catalog-api # ingress entry for catalog api + ordering: ordering-api # ingress entry for ordering api + identity: identity # ingress entry for identity api + mvc: webmvc # ingress entry for web mvc + spa: "" # ingress entry for web spa + status: webstatus # ingress entry for web status + webshoppingapigw: webshoppingapigw # ingress entry for web shopping Agw + webmarketingapigw: webmarketingapigw # ingress entry for web mkg Agw + mobilemarketingapigw: mobilemarketingapigw # ingress entry for mobile mkg Agw + mobileshoppingapigw: mobileshoppingapigw # ingress entry for mobile shopping Agw + webshoppingagg: webshoppingagg # ingress entry for web shopping aggregator + mobileshoppingagg: mobileshoppingagg # ingress entry for mobile shopping aggregator + payment: payment-api # ingress entry for payment api + locations: locations-api # ingress entry for locations api + marketing: marketing-api # ingress entry for marketing api + webhooks: webhooks-api # ingress entry for webhooks api + webhooksweb: webhooks-web # ingress entry for webhooks web demo client svc: - basket: basket-api # service name for basket api - catalog: catalog-api # service name for catalog api - ordering: ordering-api # service name for ordering api - orderingbackgroundtasks: ordering-backgroundtasks # service name for orderingbackgroundtasks + basket: basket-api # service name for basket api + catalog: catalog-api # service name for catalog api + ordering: ordering-api # service name for ordering api + orderingbackgroundtasks: ordering-backgroundtasks # service name for orderingbackgroundtasks orderingsignalrhub: ordering-signalrhub # service name for orderingsignalrhub - identity: identity-api # service name for identity api + identity: identity-api # service name for identity api mvc: webmvc # service name for web mvc spa: webspa # service name for web spa status: webstatus # service name for web status @@ -40,8 +39,8 @@ app: # app global settings mobileshoppingapigw: mobileshoppingapigw # service name for mobile shopping Agw webshoppingagg: webshoppingagg # service name for web shopping aggregator mobileshoppingagg: mobileshoppingagg # service name for mobile shopping aggregator - payment: payment-api # service name for payment api - locations: locations-api # service name for locations api + payment: payment-api # service name for payment api + locations: locations-api # service name for locations api marketing: marketing-api # service name for marketing ap - webhooks: webhooks-api # service name for webhooks api - webhooksweb: webhooks-client # service name for webhooks web + webhooks: webhooks-api # service name for webhooks api + webhooksweb: webhooks-client # service name for webhooks web diff --git a/deploy/k8s/helm/deploy-all-istio.ps1 b/deploy/k8s/helm/deploy-all-istio.ps1 deleted file mode 100644 index 5e05c6dbb..000000000 --- a/deploy/k8s/helm/deploy-all-istio.ps1 +++ /dev/null @@ -1,116 +0,0 @@ -Param( - [parameter(Mandatory=$false)][string]$registry, - [parameter(Mandatory=$false)][bool]$installIstioOnSystem=$false, - [parameter(Mandatory=$false)][string]$dockerUser, - [parameter(Mandatory=$false)][string]$dockerPassword, - [parameter(Mandatory=$false)][string]$externalDns="aks", - [parameter(Mandatory=$false)][string]$dnsname="eshoptestistio", - [parameter(Mandatory=$false)][string]$appName="eshop", - [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, - [parameter(Mandatory=$false)][string]$kialiuser="admin", - [parameter(Mandatory=$false)][string]$kialipasswrd="admin", - [parameter(Mandatory=$false)][bool]$clean=$true, - [parameter(Mandatory=$false)][string]$aksName="", - [parameter(Mandatory=$false)][string]$aksRg="", - [parameter(Mandatory=$false)][string]$imageTag="latest", - [parameter(Mandatory=$false)][bool]$useLocalk8s=$false - ) - -$dns = $externalDns - -# Instalamos Istio -# Specify the Istio version that will be leveraged throughout these instructions -$ISTIO_VERSION="1.0.6" - -# Windows -$ProgressPreference = 'SilentlyContinue'; -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -Invoke-WebRequest -URI "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istio-$ISTIO_VERSION-win.zip" -OutFile "istio-$ISTIO_VERSION.zip" -Remove-Item istio-$ISTIO_VERSION -Recurse -ErrorAction Ignore -Expand-Archive -Path "istio-$ISTIO_VERSION.zip" -DestinationPath . - -if($installIstioOnSystem -eq $true) { - New-Item -ItemType Directory -Force -Path "C:\Program Files\Istio" - mv ./istio-$ISTIO_VERSION/bin/istioctl.exe "C:\Program Files/Istio/" - $PATH = [environment]::GetEnvironmentVariable("PATH", "User") - [environment]::SetEnvironmentVariable("PATH", $PATH + "; C:\Program Files\Istio", "User") -} -# Primero Desinstalamos cualquier cosa que haya en el cluster -if ($clean -eq $true) { - Write-Host "Cleaning previous helm releases..." -ForegroundColor Green - helm delete --purge $(helm ls -q) - kubectl delete -f istio-$ISTIO_VERSION/install/kubernetes/helm/istio/templates/crds.yaml -n istio-system - Write-Host "Previous releases deleted" -ForegroundColor Green -} - -Write-Host "Generating Kiali Credentials" -ForegroundColor Green -#generamos la credenciales para que kiali arranque sin problemas -kubectl -n istio-system create secret generic kiali --from-literal=username=$kialiuser --from-literal=passphrase=$kialipasswrd - - -Write-Host "Deploying Istio in the cluster" -ForegroundColor Green -helm install istio-$ISTIO_VERSION/install/kubernetes/helm/istio --wait --name istio --namespace istio-system --set global.controlPlaneSecurityEnabled=true --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true - -Write-Host "Setting Up Gateway" -kubectl delete gateway istio-autogenerated-k8s-ingress -n istio-system -kubectl apply -f ./istio/gateway.yml - -if ($useLocalk8s -eq $true) { - $dns="localhost" - $externalDns="localhost" -} -else { - Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green - $ipaddress = $(kubectl get service istio-ingressgateway -n istio-system)[1] | %{ $_.Split(' ')[9];} - $query = "[?ipAddress!=null]|[?contains([ipAddress], '$ipaddress')].[id]" - $resid = az network public-ip list --query $query --output tsv - $jsonresponse = az network public-ip update --ids $resid --dns-name $dnsname - $externalDns = ($jsonresponse | ConvertFrom-Json).dnsSettings.fqdn - Write-Host "$externalDns is pointing to Cluster public ip $ipaddress" -} - -$useCustomRegistry=$false -if (-not [string]::IsNullOrEmpty($registry)) { - $useCustomRegistry=$true - if ([string]::IsNullOrEmpty($dockerUser) -or [string]::IsNullOrEmpty($dockerPassword)) { - Write-Host "Error: Must use -dockerUser AND -dockerPassword if specifying custom registry" -ForegroundColor Red - exit 1 - } -} -Write-Host "Begin eShopOnContainers installation using Helm" -ForegroundColor Green - -$infras = ("sql-data", "nosql-data", "rabbitmq", "keystore-data", "basket-data") -$charts = ("eshop-common", "apigwmm", "apigwms", "apigwwm", "apigwws", "basket-api","catalog-api", "identity-api", "locations-api", "marketing-api", "mobileshoppingagg","ordering-api","ordering-backgroundtasks","ordering-signalrhub", "payment-api", "webmvc", "webshoppingagg", "webspa", "webstatus", "webhooks-api", "webhooks-web") - -if ($deployInfrastructure) { - foreach ($infra in $infras) { - Write-Host "Installing infrastructure: $infra" -ForegroundColor Green - helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$externalDns --name="$appName-$infra" $infra - } -} - -foreach ($chart in $charts) { - Write-Host "Installing: $chart" -ForegroundColor Green - if ($useCustomRegistry) { - helm install --set inf.registry.server=$registry --set inf.registry.login=$dockerUser --set inf.registry.pwd=$dockerPassword --set inf.registry.secretName=eshop-docker-scret --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart - } - else { - if ($chart -ne "eshop-common") { # eshop-common is ignored when no secret must be deployed - helm install --values app.yaml --values inf.yaml --set app.name=$appName --set inf.k8s.dns=$externalDns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart - } - } -} - -Write-Host "helm charts installed." -ForegroundColor Green -Write-Host "Appling Virtual Services for routing." -ForegroundColor Green -kubectl apply -f ./istio/virtualservices.yml - -Remove-Item istio-$ISTIO_VERSION -Recurse -ErrorAction Ignore -Remove-Item istio-$ISTIO_VERSION.zip -Recurse -ErrorAction Ignore - - - - - - - diff --git a/deploy/k8s/nodeports/rabbitmq-admin.yaml b/deploy/k8s/nodeports/rabbitmq-admin.yaml new file mode 100644 index 000000000..30d2facf1 --- /dev/null +++ b/deploy/k8s/nodeports/rabbitmq-admin.yaml @@ -0,0 +1,12 @@ +kind: Service +apiVersion: v1 +metadata: + name: rabbitmq-admin +spec: + type: NodePort + selector: + app: rabbitmq + ports: + - port: 15672 + nodePort: 31672 + name: rabbitmq-port diff --git a/deploy/k8s/nodeports/sql-service.yaml b/deploy/k8s/nodeports/sql-service.yaml new file mode 100644 index 000000000..7b0233b68 --- /dev/null +++ b/deploy/k8s/nodeports/sql-service.yaml @@ -0,0 +1,12 @@ +kind: Service +apiVersion: v1 +metadata: + name: sql-service +spec: + type: NodePort + selector: + app: sql-data + ports: + - port: 1433 + nodePort: 31433 + name: sql-port

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 z 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 LYTPMOH1+#GXOQA( diff --git a/test/img/services-functional-tests-folder.PNG b/test/img/services-functional-tests-folder.PNG deleted file mode 100644 index b4efe946b856bb669680710326d9565beba2cb9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41410 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 diff --git a/test/img/unittestsrunning.PNG b/test/img/unittestsrunning.PNG deleted file mode 100644 index a0c28077519d071162f1954a38737f1327e83250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63396 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 - -