├── .asf.yaml
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE.md
├── ISSUE_TEMPLATE
│ └── proposal.md
├── PULL_REQUEST_TEMPLATE.md
├── dependabot.yml
└── workflows
│ ├── 0-on-demand.yaml
│ ├── 1-unit.yaml
│ ├── 2-system.yaml
│ ├── 3-multi-runtime.yaml
│ ├── 4-standalone.yaml
│ ├── 5-scheduler.yaml
│ ├── 6-performance.yaml
│ └── README.md
├── .gitignore
├── .pydevproject
├── .scalafmt.conf
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CREDITS.txt
├── Jenkinsfile
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── ansible
├── README.md
├── ansible.cfg
├── apigateway.yml
├── callbacks
│ └── logformatter.py
├── controller.yml
├── couchdb.yml
├── downloadcli-github.yml
├── downloadcli.yml
├── edge.yml
├── elasticsearch.yml
├── environments
│ ├── docker-machine
│ │ ├── group_vars
│ │ │ └── all
│ │ └── hosts.j2.ini
│ ├── jenkins
│ │ ├── ansible_jenkins.cfg
│ │ ├── group_vars
│ │ │ ├── openwhisk-vm1-he-de
│ │ │ ├── openwhisk-vm2-he-de
│ │ │ └── openwhisk-vm3-he-de
│ │ ├── openwhisk-vm1-he-de.j2.ini
│ │ ├── openwhisk-vm2-he-de.j2.ini
│ │ └── openwhisk-vm3-he-de.j2.ini
│ ├── local
│ │ ├── group_vars
│ │ │ └── all
│ │ └── hosts.j2.ini
│ └── vagrant
│ │ ├── group_vars
│ │ └── all
│ │ └── hosts
├── etcd.yml
├── files
│ ├── activations_design_document_for_activations_db.json
│ ├── auth.guest
│ ├── auth.whisk.system
│ ├── auth_design_document_for_subjects_db_v2.0.0.json
│ ├── filter_design_document.json
│ ├── genssl.sh
│ ├── logCleanup_design_document_for_activations_db.json
│ ├── namespace_throttlings_design_document_for_subjects_db.json
│ ├── package-versions.ini
│ ├── runtimes-nodeonly.json
│ ├── runtimes.json
│ ├── whisks_design_document_for_activations_db_filters_v2.1.0.json
│ ├── whisks_design_document_for_activations_db_filters_v2.1.1.json
│ ├── whisks_design_document_for_activations_db_v2.1.0.json
│ └── whisks_design_document_for_entities_db_v2.1.0.json
├── group_vars
│ └── all
├── initMongoDB.yml
├── initdb.yml
├── invoker.yml
├── kafka.yml
├── library
│ └── mongodb.py
├── logs.yml
├── mongodb.yml
├── openwhisk.yml
├── postdeploy.yml
├── prereq.yml
├── properties.yml
├── publish.yml
├── recreateDesignDocs.yml
├── roles
│ ├── apigateway
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── cli-install
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── cli
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── controller
│ │ ├── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ ├── join_akka_cluster.yml
│ │ │ ├── lean.yml
│ │ │ └── main.yml
│ │ └── templates
│ │ │ └── config.j2
│ ├── couchdb
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── elasticsearch
│ │ ├── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ │ └── templates
│ │ │ ├── elasticsearch.yml.j2
│ │ │ └── log4j2.properties.j2
│ ├── etcd
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── invoker
│ │ ├── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ │ └── templates
│ │ │ └── config.j2
│ ├── kafka
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── mongodb
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── nginx
│ │ ├── files
│ │ │ └── openwhisk-server-key.pem
│ │ ├── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ │ └── templates
│ │ │ └── nginx.conf.j2
│ ├── prereq
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── redis
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── routemgmt
│ │ ├── files
│ │ │ ├── installRouteMgmt.sh
│ │ │ └── uninstallRouteMgmt.sh
│ │ └── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ └── main.yml
│ ├── schedulers
│ │ ├── tasks
│ │ │ ├── clean.yml
│ │ │ ├── deploy.yml
│ │ │ ├── join_akka_cluster.yml
│ │ │ └── main.yml
│ │ └── templates
│ │ │ └── jmx.yml.j2
│ └── zookeeper
│ │ └── tasks
│ │ ├── clean.yml
│ │ ├── deploy.yml
│ │ └── main.yml
├── routemgmt.yml
├── scheduler.yml
├── setup.yml
├── tasks
│ ├── db
│ │ ├── checkDb.yml
│ │ ├── createUsers.yml
│ │ ├── grantPermissions.yml
│ │ ├── recreateDb.yml
│ │ └── recreateDoc.yml
│ ├── docker_login.yml
│ ├── gen_erl_cookie.yml
│ ├── initdb.yml
│ ├── installOpenwhiskCatalog.yml
│ ├── recreateViews.yml
│ ├── wipeDatabase.yml
│ └── writeWhiskProperties.yml
├── teardown.yml
├── templates
│ ├── db_local.ini.j2
│ ├── jmxremote.access.j2
│ ├── jmxremote.password.j2
│ ├── whisk.conf.j2
│ └── whisk.properties.j2
├── wipe.yml
└── yamllint.yml
├── bin
├── wskadmin
└── wskdev
├── build.gradle
├── common
└── scala
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── Dockerfile-debian
│ ├── build.gradle
│ ├── copyJMXFiles.sh
│ ├── src
│ └── main
│ │ ├── resources
│ │ ├── application.conf
│ │ ├── logback.xml
│ │ ├── logging.conf
│ │ ├── reference.conf
│ │ └── s3-reference.conf
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ ├── common
│ │ ├── AverageRingBuffer.scala
│ │ ├── CausedBy.scala
│ │ ├── Config.scala
│ │ ├── ConfigMXBean.scala
│ │ ├── ConfigMapValue.scala
│ │ ├── Counter.scala
│ │ ├── ExecutorCloser.scala
│ │ ├── ForcibleSemaphore.scala
│ │ ├── Https.scala
│ │ ├── Logging.scala
│ │ ├── Message.scala
│ │ ├── NestedSemaphore.scala
│ │ ├── Prometheus.scala
│ │ ├── ResizableSemaphore.scala
│ │ ├── RingBuffer.scala
│ │ ├── Scheduler.scala
│ │ ├── TransactionId.scala
│ │ ├── UserEvents.scala
│ │ ├── WhiskInstants.scala
│ │ ├── time
│ │ │ └── Clock.scala
│ │ └── tracing
│ │ │ └── OpenTracingProvider.scala
│ │ ├── connector
│ │ ├── kafka
│ │ │ ├── KafkaConsumerConnector.scala
│ │ │ ├── KafkaMessagingProvider.scala
│ │ │ ├── KafkaMetrics.scala
│ │ │ ├── KafkaProducerConnector.scala
│ │ │ └── KamonMetricsReporter.scala
│ │ └── lean
│ │ │ ├── LeanConsumer.scala
│ │ │ ├── LeanMessagingProvider.scala
│ │ │ └── LeanProducer.scala
│ │ ├── core
│ │ ├── FeatureFlags.scala
│ │ ├── WarmUp.scala
│ │ ├── WhiskConfig.scala
│ │ ├── ack
│ │ │ ├── Ack.scala
│ │ │ ├── HealthActionAck.scala
│ │ │ └── MessagingActiveAck.scala
│ │ ├── connector
│ │ │ ├── Message.scala
│ │ │ ├── MessageConsumer.scala
│ │ │ ├── MessageProducer.scala
│ │ │ └── MessagingProvider.scala
│ │ ├── containerpool
│ │ │ ├── AkkaContainerClient.scala
│ │ │ ├── ApacheBlockingContainerClient.scala
│ │ │ ├── Container.scala
│ │ │ ├── ContainerClient.scala
│ │ │ ├── ContainerFactory.scala
│ │ │ └── logging
│ │ │ │ ├── DockerToActivationFileLogStore.scala
│ │ │ │ ├── DockerToActivationLogStore.scala
│ │ │ │ ├── ElasticSearchLogStore.scala
│ │ │ │ ├── ElasticSearchRestClient.scala
│ │ │ │ ├── LogDriverLogStore.scala
│ │ │ │ ├── LogStore.scala
│ │ │ │ └── SplunkLogStore.scala
│ │ ├── database
│ │ │ ├── ActivationFileStorage.scala
│ │ │ ├── ActivationStore.scala
│ │ │ ├── ActivationStoreLevel.scala
│ │ │ ├── ArtifactActivationStore.scala
│ │ │ ├── ArtifactStore.scala
│ │ │ ├── ArtifactStoreExceptions.scala
│ │ │ ├── ArtifactStoreProvider.scala
│ │ │ ├── ArtifactWithFileStorageActivationStore.scala
│ │ │ ├── AttachmentStore.scala
│ │ │ ├── AttachmentSupport.scala
│ │ │ ├── Batcher.scala
│ │ │ ├── ConcurrentMapBackedCache.scala
│ │ │ ├── CouchDbRestClient.scala
│ │ │ ├── CouchDbRestStore.scala
│ │ │ ├── CouchDbStoreProvider.scala
│ │ │ ├── DocumentFactory.scala
│ │ │ ├── DocumentHandler.scala
│ │ │ ├── MultipleReadersSingleWriterCache.scala
│ │ │ ├── RemoteCacheInvalidation.scala
│ │ │ ├── StoreUtils.scala
│ │ │ ├── azblob
│ │ │ │ └── AzureBlobAttachmentStore.scala
│ │ │ ├── cosmosdb
│ │ │ │ ├── CollectionResourceUsage.scala
│ │ │ │ ├── CosmosDBArtifactStore.scala
│ │ │ │ ├── CosmosDBArtifactStoreProvider.scala
│ │ │ │ ├── CosmosDBConfig.scala
│ │ │ │ ├── CosmosDBSupport.scala
│ │ │ │ ├── CosmosDBUtil.scala
│ │ │ │ ├── CosmosDBViewMapper.scala
│ │ │ │ ├── IndexingPolicy.scala
│ │ │ │ ├── ReferenceCounted.scala
│ │ │ │ ├── RetryMetricsCollector.scala
│ │ │ │ └── RxObservableImplicits.scala
│ │ │ ├── elasticsearch
│ │ │ │ └── ElasticSearchActivationStore.scala
│ │ │ ├── memory
│ │ │ │ ├── MemoryArtifactStore.scala
│ │ │ │ ├── MemoryAttachmentStore.scala
│ │ │ │ ├── MemoryViewMapper.scala
│ │ │ │ └── NoopActivationStore.scala
│ │ │ ├── mongodb
│ │ │ │ ├── MongoDBArtifactStore.scala
│ │ │ │ ├── MongoDBArtifactStoreProvider.scala
│ │ │ │ ├── MongoDBAsyncStreamSink.scala
│ │ │ │ ├── MongoDBAsyncStreamSource.scala
│ │ │ │ └── MongoDBViewMapper.scala
│ │ │ └── s3
│ │ │ │ ├── CloudFrontSigner.scala
│ │ │ │ └── S3AttachmentStore.scala
│ │ ├── entitlement
│ │ │ └── Privilege.scala
│ │ ├── entity
│ │ │ ├── ActivationEntityLimit.scala
│ │ │ ├── ActivationId.scala
│ │ │ ├── ActivationLogs.scala
│ │ │ ├── ActivationResult.scala
│ │ │ ├── Annotations.scala
│ │ │ ├── ArgNormalizer.scala
│ │ │ ├── Attachments.scala
│ │ │ ├── BasicAuthenticationAuthKey.scala
│ │ │ ├── CacheKey.scala
│ │ │ ├── CreationId.scala
│ │ │ ├── DocInfo.scala
│ │ │ ├── DocumentReader.scala
│ │ │ ├── EntityPath.scala
│ │ │ ├── Exec.scala
│ │ │ ├── ExecManifest.scala
│ │ │ ├── FullyQualifiedEntityName.scala
│ │ │ ├── GenericAuthKey.scala
│ │ │ ├── Identity.scala
│ │ │ ├── InstanceConcurrencyLimit.scala
│ │ │ ├── InstanceId.scala
│ │ │ ├── IntraConcurrencyLimit.scala
│ │ │ ├── Limits.scala
│ │ │ ├── LimitsExceptions.scala
│ │ │ ├── LogLimit.scala
│ │ │ ├── MemoryLimit.scala
│ │ │ ├── Parameter.scala
│ │ │ ├── ParameterEncryption.scala
│ │ │ ├── Secret.scala
│ │ │ ├── SemVer.scala
│ │ │ ├── Size.scala
│ │ │ ├── Subject.scala
│ │ │ ├── TimeLimit.scala
│ │ │ ├── UUID.scala
│ │ │ ├── WhiskAction.scala
│ │ │ ├── WhiskActivation.scala
│ │ │ ├── WhiskAuth.scala
│ │ │ ├── WhiskEntity.scala
│ │ │ ├── WhiskPackage.scala
│ │ │ ├── WhiskRule.scala
│ │ │ ├── WhiskStore.scala
│ │ │ └── WhiskTrigger.scala
│ │ ├── etcd
│ │ │ ├── EtcdClient.scala
│ │ │ ├── EtcdUtils.scala
│ │ │ └── EtcdWorker.scala
│ │ ├── service
│ │ │ ├── DataManagementService.scala
│ │ │ ├── LeaseKeepAliveService.scala
│ │ │ └── WatcherService.scala
│ │ └── yarn
│ │ │ ├── YARNComponentActor.scala
│ │ │ ├── YARNContainerFactory.scala
│ │ │ ├── YARNContainerInfoActor.scala
│ │ │ ├── YARNRESTUtil.scala
│ │ │ └── YARNTask.scala
│ │ ├── http
│ │ ├── BasicHttpService.scala
│ │ ├── BasicRasService.scala
│ │ ├── CorsSettings.scala
│ │ ├── ErrorResponse.scala
│ │ ├── LenientSprayJsonSupport.scala
│ │ └── PoolingRestClient.scala
│ │ ├── spi
│ │ └── SpiLoader.scala
│ │ └── utils
│ │ ├── Exceptions.scala
│ │ ├── ExecutionContextFactory.scala
│ │ ├── JsHelpers.scala
│ │ ├── Retry.scala
│ │ └── TimeHelpers.scala
│ └── transformEnvironment.sh
├── core
├── controller
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── Dockerfile-debian
│ ├── Dockerfile.cov
│ ├── build.gradle
│ ├── init.sh
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── apiv1swagger.json
│ │ ├── application.conf
│ │ ├── infoswagger.json
│ │ └── reference.conf
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── core
│ │ ├── controller
│ │ ├── Actions.scala
│ │ ├── Activations.scala
│ │ ├── ApiUtils.scala
│ │ ├── AuthenticatedRoute.scala
│ │ ├── AuthorizedRouteDispatcher.scala
│ │ ├── Backend.scala
│ │ ├── BasicAuthenticationDirective.scala
│ │ ├── Controller.scala
│ │ ├── Entities.scala
│ │ ├── Limits.scala
│ │ ├── Namespaces.scala
│ │ ├── Packages.scala
│ │ ├── RestAPIs.scala
│ │ ├── Rules.scala
│ │ ├── Triggers.scala
│ │ ├── WebActions.scala
│ │ └── actions
│ │ │ ├── PostActionActivation.scala
│ │ │ ├── PrimitiveActions.scala
│ │ │ └── SequenceActions.scala
│ │ ├── entitlement
│ │ ├── ActionCollection.scala
│ │ ├── ActivationThrottler.scala
│ │ ├── Collection.scala
│ │ ├── Entitlement.scala
│ │ ├── FPCEntitlement.scala
│ │ ├── KindRestrictor.scala
│ │ ├── LocalEntitlement.scala
│ │ ├── PackageCollection.scala
│ │ └── RateThrottler.scala
│ │ └── loadBalancer
│ │ ├── CommonLoadBalancer.scala
│ │ ├── FPCPoolBalancer.scala
│ │ ├── FeedFactory.scala
│ │ ├── InvokerPoolFactory.scala
│ │ ├── InvokerSupervision.scala
│ │ ├── LeanBalancer.scala
│ │ ├── LoadBalancer.scala
│ │ └── ShardingContainerPoolBalancer.scala
├── cosmosdb
│ └── cache-invalidator
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── Dockerfile-debian
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── docker-compose.yml
│ │ ├── init.sh
│ │ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── application.conf
│ │ └── reference.conf
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── core
│ │ └── database
│ │ └── cosmosdb
│ │ └── cache
│ │ ├── CacheInvalidator.scala
│ │ ├── CacheInvalidatorConfig.scala
│ │ ├── ChangeFeedConsumer.scala
│ │ ├── KafkaEventProducer.scala
│ │ ├── Main.scala
│ │ └── WhiskChangeEventObserver.scala
├── invoker
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── Dockerfile-debian
│ ├── Dockerfile.cov
│ ├── build.gradle
│ ├── init.sh
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.conf
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── core
│ │ ├── containerpool
│ │ ├── ContainerPool.scala
│ │ ├── ContainerProxy.scala
│ │ ├── docker
│ │ │ ├── DockerCliLogStore.scala
│ │ │ ├── DockerClient.scala
│ │ │ ├── DockerClientWithFileAccess.scala
│ │ │ ├── DockerContainer.scala
│ │ │ ├── DockerContainerFactory.scala
│ │ │ ├── DockerForMacContainerFactory.scala
│ │ │ ├── ProcessRunner.scala
│ │ │ ├── RuncClient.scala
│ │ │ └── StandaloneDockerContainerFactory.scala
│ │ ├── kubernetes
│ │ │ ├── KubernetesClient.scala
│ │ │ ├── KubernetesContainer.scala
│ │ │ ├── KubernetesContainerFactory.scala
│ │ │ └── WhiskPodBuilder.scala
│ │ └── v2
│ │ │ ├── ActivationClientProxy.scala
│ │ │ ├── FunctionPullingContainerPool.scala
│ │ │ ├── FunctionPullingContainerProxy.scala
│ │ │ └── InvokerHealthManager.scala
│ │ └── invoker
│ │ ├── ContainerMessageConsumer.scala
│ │ ├── DefaultInvokerServer.scala
│ │ ├── FPCInvokerReactive.scala
│ │ ├── FPCInvokerServer.scala
│ │ ├── InstanceIdAssigner.scala
│ │ ├── Invoker.scala
│ │ ├── InvokerReactive.scala
│ │ ├── LogStoreCollector.scala
│ │ └── NamespaceBlacklist.scala
├── monitoring
│ └── user-events
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── Dockerfile-debian
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── compose
│ │ ├── grafana
│ │ │ ├── dashboards
│ │ │ │ ├── global-metrics.json
│ │ │ │ ├── openwhisk_events.json
│ │ │ │ └── top-namespaces.json
│ │ │ └── provisioning
│ │ │ │ ├── dashboards
│ │ │ │ └── dashboard.yml
│ │ │ │ └── datasources
│ │ │ │ └── datasource.yml
│ │ └── prometheus
│ │ │ └── prometheus.yml
│ │ ├── images
│ │ └── demo_landing.png
│ │ ├── init.sh
│ │ └── src
│ │ ├── main
│ │ ├── resources
│ │ │ ├── application.conf
│ │ │ ├── reference.conf
│ │ │ └── whisk-logback.xml
│ │ └── scala
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── openwhisk
│ │ │ └── core
│ │ │ └── monitoring
│ │ │ └── metrics
│ │ │ ├── EventConsumer.scala
│ │ │ ├── KamonRecorder.scala
│ │ │ ├── Main.scala
│ │ │ ├── MetricNames.scala
│ │ │ ├── OpenWhiskEvents.scala
│ │ │ ├── PrometheusEventsApi.scala
│ │ │ └── PrometheusRecorder.scala
│ │ └── test
│ │ ├── resources
│ │ ├── application.conf
│ │ └── logback-test.xml
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── core
│ │ └── monitoring
│ │ └── metrics
│ │ ├── ApiTests.scala
│ │ ├── EventsTestHelper.scala
│ │ ├── KafkaSpecBase.scala
│ │ ├── KamonRecorderTests.scala
│ │ ├── OpenWhiskEventsTests.scala
│ │ └── PrometheusRecorderTests.scala
├── routemgmt
│ ├── common
│ │ ├── apigw-utils.js
│ │ └── utils.js
│ ├── createApi
│ │ ├── createApi.js
│ │ └── package.json
│ ├── deleteApi
│ │ ├── deleteApi.js
│ │ └── package.json
│ └── getApi
│ │ ├── getApi.js
│ │ └── package.json
├── scheduler
│ ├── Dockerfile
│ ├── Dockerfile.cov
│ ├── build.gradle
│ ├── init.sh
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── Empty.java
│ │ ├── protobuf
│ │ └── activation.proto
│ │ ├── resources
│ │ └── application.conf
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── core
│ │ └── scheduler
│ │ ├── FPCSchedulerServer.scala
│ │ ├── Scheduler.scala
│ │ ├── container
│ │ ├── ContainerManager.scala
│ │ └── CreationJobManager.scala
│ │ ├── grpc
│ │ └── ActivationServiceImpl.scala
│ │ ├── message
│ │ └── ContainerMessage.scala
│ │ └── queue
│ │ ├── ContainerCounter.scala
│ │ ├── ElasticSearchDurationChecker.scala
│ │ ├── MemoryQueue.scala
│ │ ├── NoopDurationChecker.scala
│ │ ├── QueueManager.scala
│ │ └── SchedulingDecisionMaker.scala
└── standalone
│ ├── Dockerfile
│ ├── README.md
│ ├── bin
│ ├── init
│ ├── stop
│ └── waitready
│ ├── build.gradle
│ ├── src
│ ├── main
│ │ ├── resources
│ │ │ ├── logback-standalone.xml
│ │ │ ├── playground
│ │ │ │ ├── actions
│ │ │ │ │ ├── playground-delete.js
│ │ │ │ │ ├── playground-fetch.js
│ │ │ │ │ ├── playground-run.js
│ │ │ │ │ └── playground-userpackage.js
│ │ │ │ └── ui
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── playground.css
│ │ │ │ │ └── playgroundFunctions.js
│ │ │ ├── standalone-kcf.conf
│ │ │ └── standalone.conf
│ │ └── scala
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── openwhisk
│ │ │ ├── core
│ │ │ └── ExecManifestSupport.scala
│ │ │ └── standalone
│ │ │ ├── ApiGwLauncher.scala
│ │ │ ├── CouchDBLauncher.scala
│ │ │ ├── DockerVersion.scala
│ │ │ ├── InstallRouteMgmt.scala
│ │ │ ├── KafkaLauncher.scala
│ │ │ ├── LogbackConfigurator.scala
│ │ │ ├── PlaygroundLauncher.scala
│ │ │ ├── PreFlightChecks.scala
│ │ │ ├── ServerStartupCheck.scala
│ │ │ ├── ServiceInfoLogger.scala
│ │ │ ├── StandaloneDockerSupport.scala
│ │ │ ├── StandaloneOpenWhisk.scala
│ │ │ ├── Unzip.scala
│ │ │ ├── UserEventLauncher.scala
│ │ │ └── Wsk.scala
│ └── test
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── standalone
│ │ └── DockerVersionTests.scala
│ ├── start.sh
│ └── stop.sh
├── docs
├── README.md
├── about.md
├── actions-actionloop.md
├── actions-docker.md
├── actions-dotnet.md
├── actions-go.md
├── actions-java.md
├── actions-new.md
├── actions-nodejs.md
├── actions-php.md
├── actions-python.md
├── actions-ruby.md
├── actions-rust.md
├── actions-swift.md
├── actions-update.md
├── actions.md
├── annotations.md
├── apigateway.md
├── catalog.md
├── cli.md
├── conductors.md
├── dedicated-invokers.md
├── deploy.md
├── dev
│ ├── configuration.md
│ ├── future.md
│ ├── modules.md
│ └── troubleshooting
│ │ └── build-failures.md
├── feeds.md
├── images
│ ├── IoT_solution_architecture_example.png
│ ├── OpenWhisk.png
│ ├── OpenWhisk_flow_of_processing.draw.io.xml
│ ├── OpenWhisk_flow_of_processing.png
│ ├── Openwhisk-flow-diagram.png
│ ├── README.md
│ ├── apache-openwhisk-stacked.svg
│ ├── apache-openwhisk-wide.svg
│ ├── components_to_repos.png
│ ├── playground-ui.png
│ ├── whisk_icon_full-color_with_tm_128x128-300dpi.png
│ ├── whisk_icon_full-color_with_tm_210x138-300dpi.png
│ ├── whisk_icon_full-color_with_tm_64x64-300dpi.png
│ ├── whisk_icon_full_color_with_tm.psd
│ ├── whisk_icon_full_color_with_tm_100x100-300dpi.png
│ ├── whisk_icon_full_color_with_tm_100x100-96dpi.png
│ └── whisk_icon_full_color_with_tm_200x200-300dpi.png
├── intra-concurrency.md
├── logging.md
├── metrics.md
├── packages.md
├── parameters.md
├── reference.md
├── rest_api.md
├── samples.md
├── security.md
├── single_entrypoint_proxy_contract.md
├── spi.md
├── tag-based-scheduling.md
├── triggers_rules.md
├── use_cases.md
├── warmed-containers.md
├── webactions.md
└── yarn.md
├── gradle
├── README.md
├── docker.gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── licenses
└── LICENSE-spray.txt
├── proposals
├── POEM-1-proposal-for-openwhisk-enhancements.md
├── POEM-2-function-pulling-container-scheduler.md
├── POEM-3-action-limit-for-namespace.md
├── POEM-4-action-concurrency-limit-within-namespace.md
├── POEM-N-template.md
├── POEM-support-array-result.md
└── README.md
├── settings.gradle
├── tests
├── .pydevproject
├── README.md
├── build.gradle
├── dat
│ ├── actions
│ │ ├── README.md
│ │ ├── applicationError.js
│ │ ├── argCheck.js
│ │ ├── argsPrint.js
│ │ ├── asyncError.js
│ │ ├── blackbox
│ │ │ └── exec
│ │ ├── build.sh
│ │ ├── cat.js
│ │ ├── concurrent.js
│ │ ├── concurrentFail1.js
│ │ ├── concurrentFail2.js
│ │ ├── conductor.js
│ │ ├── corsHeaderMod.js
│ │ ├── countdown.js
│ │ ├── createRule.swift
│ │ ├── createTrigger.swift
│ │ ├── dosLogs.js
│ │ ├── echo-web-http-head.js
│ │ ├── echo-web-http.js
│ │ ├── echo.js
│ │ ├── echo.json
│ │ ├── empty.js
│ │ ├── emptyJSONResult.js
│ │ ├── head.js
│ │ ├── hello.js
│ │ ├── hello.py
│ │ ├── hello.swift
│ │ ├── helloArray.js
│ │ ├── helloAsync.js
│ │ ├── helloContext.js
│ │ ├── helloDeadline.js
│ │ ├── helloOpenwhiskPackage.js
│ │ ├── helloPromise.js
│ │ ├── httpGet.swift
│ │ ├── initexit.js
│ │ ├── initforever.js
│ │ ├── invalidInput1.json
│ │ ├── invalidInput2.json
│ │ ├── invalidInput3.json
│ │ ├── invalidInput4.json
│ │ ├── invoke.swift
│ │ ├── invokeNonBlocking.swift
│ │ ├── jsonStringWebAction.js
│ │ ├── log.js
│ │ ├── loggingTimeout.js
│ │ ├── malformed.js
│ │ ├── malformed.py
│ │ ├── memoryWithGC.js
│ │ ├── multipleHeaders.js
│ │ ├── niam.js
│ │ ├── niam.py
│ │ ├── niam.swift
│ │ ├── openFiles.js
│ │ ├── params.js
│ │ ├── ping.js
│ │ ├── pngWeb.js
│ │ ├── printParams.js
│ │ ├── python-zip
│ │ │ ├── __main__.py
│ │ │ └── greet.py
│ │ ├── pythonVersion.py
│ │ ├── runexception.js
│ │ ├── runexit.js
│ │ ├── sizedResult.js
│ │ ├── sleep.js
│ │ ├── sleep.py
│ │ ├── sort-array.js
│ │ ├── sort.js
│ │ ├── split-array.js
│ │ ├── split.js
│ │ ├── src
│ │ │ └── java
│ │ │ │ └── sleep
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src
│ │ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── Sleep.java
│ │ ├── stdenv.py
│ │ ├── step.js
│ │ ├── textBody.js
│ │ ├── trigger.swift
│ │ ├── unicode.tests
│ │ │ ├── go-1.13.txt
│ │ │ ├── go-1.15.txt
│ │ │ ├── nodejs-10.txt
│ │ │ ├── nodejs-12.txt
│ │ │ ├── nodejs-14.txt
│ │ │ ├── php-7.3.txt
│ │ │ ├── php-7.4.txt
│ │ │ ├── python-3.txt
│ │ │ ├── python.txt
│ │ │ ├── ruby-2.5.txt
│ │ │ ├── rust-1.34.txt
│ │ │ ├── src
│ │ │ │ ├── dotnet2.2
│ │ │ │ │ ├── Apache.OpenWhisk.UnicodeTests.Dotnet
│ │ │ │ │ │ ├── Apache.OpenWhisk.UnicodeTests.Dotnet.csproj
│ │ │ │ │ │ └── Unicode.cs
│ │ │ │ │ └── openwhisk-unicodetests-dotnet.sln
│ │ │ │ └── java
│ │ │ │ │ └── unicode
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── settings.gradle
│ │ │ │ │ └── src
│ │ │ │ │ └── main
│ │ │ │ │ └── java
│ │ │ │ │ └── Unicode.java
│ │ │ ├── swift-4.2.txt
│ │ │ ├── swift-5.1.txt
│ │ │ └── swift-5.3.txt
│ │ ├── validInput1.json
│ │ ├── validInput2.json
│ │ ├── wc.js
│ │ ├── wcbin.js
│ │ ├── word_count.json
│ │ └── zippedaction
│ │ │ ├── index.js
│ │ │ ├── package-lock.json
│ │ │ └── package.json
│ └── apigw
│ │ ├── apigw_path_param_support_test_invalidActionType.json
│ │ ├── apigw_path_param_support_test_invalidParamName1.json
│ │ ├── apigw_path_param_support_test_invalidParamName2.json
│ │ ├── apigw_path_param_support_test_invalidTargetUrl.json
│ │ ├── apigw_path_param_support_test_withPathParameters1.json
│ │ ├── apigw_path_param_support_test_withPathParameters2.json
│ │ ├── endpoints.without.action.swagger.json
│ │ ├── local.api.bad.yaml
│ │ ├── local.api.yaml
│ │ ├── testswaggerdoc1
│ │ ├── testswaggerdoc2
│ │ └── testswaggerdocinvalid
├── performance
│ ├── README.md
│ ├── gatling_tests
│ │ ├── build.gradle
│ │ ├── build.sh
│ │ └── src
│ │ │ └── gatling
│ │ │ ├── resources
│ │ │ ├── conf
│ │ │ │ └── logback.xml
│ │ │ └── data
│ │ │ │ ├── nodeJSAction.js
│ │ │ │ ├── nodeJSAsyncAction.js
│ │ │ │ ├── pythonAction.py
│ │ │ │ ├── src
│ │ │ │ └── java
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── settings.gradle
│ │ │ │ │ └── src
│ │ │ │ │ └── main
│ │ │ │ │ └── java
│ │ │ │ │ └── JavaAction.java
│ │ │ │ ├── swiftAction.swift
│ │ │ │ └── users.csv
│ │ │ └── scala
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── openwhisk
│ │ │ ├── ApiV1Simulation.scala
│ │ │ ├── BlockingInvokeOneActionSimulation.scala
│ │ │ ├── ColdBlockingInvokeSimulation.scala
│ │ │ ├── LatencySimulation.scala
│ │ │ └── extension
│ │ │ └── whisk
│ │ │ ├── OpenWhiskActionBuilder.scala
│ │ │ ├── OpenWhiskDsl.scala
│ │ │ ├── OpenWhiskProtocolBuilder.scala
│ │ │ └── Predef.scala
│ ├── preparation
│ │ ├── actions
│ │ │ ├── async.js
│ │ │ └── noop.js
│ │ ├── create.sh
│ │ ├── deploy-lean.sh
│ │ └── deploy.sh
│ └── wrk_tests
│ │ ├── latency.sh
│ │ ├── post.lua
│ │ └── throughput.sh
└── src
│ ├── main
│ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── GradleWorkaround.scala
│ └── test
│ ├── resources
│ ├── application.conf.j2
│ ├── logback-test.xml
│ ├── swagger-config.json
│ └── templates
│ │ └── build.gradle.mustache
│ └── scala
│ ├── actionContainers
│ ├── ActionContainer.scala
│ ├── BasicActionRunnerTests.scala
│ └── ResourceHelpers.scala
│ ├── apigw
│ └── healthtests
│ │ ├── ApiGwEndToEndTests.scala
│ │ └── ApiGwRestEndToEndTests.scala
│ ├── common
│ ├── ConcurrencyHelpers.scala
│ ├── FreePortFinder.scala
│ ├── JsHelpers.scala
│ ├── LoggedFunction.scala
│ ├── Pair.java
│ ├── RunCliCmd.scala
│ ├── SimpleExec.scala
│ ├── StreamLogging.scala
│ ├── TestHelpers.scala
│ ├── TestUtils.java
│ ├── TimingHelpers.scala
│ ├── WhiskProperties.java
│ ├── WskActorSystem.scala
│ ├── WskCliOperations.scala
│ ├── WskOperations.scala
│ ├── WskTestHelpers.scala
│ ├── WskTracingTests.scala
│ └── rest
│ │ ├── SwaggerValidator.scala
│ │ └── WskRestOperations.scala
│ ├── ha
│ ├── CacheInvalidationTests.scala
│ └── ShootComponentsTests.scala
│ ├── invokerShoot
│ └── ShootInvokerTests.scala
│ ├── limits
│ └── ThrottleTests.scala
│ ├── org
│ └── apache
│ │ └── openwhisk
│ │ ├── common
│ │ ├── ConfigMXBeanTests.scala
│ │ ├── ConfigMapValueTests.scala
│ │ ├── ConfigTests.scala
│ │ ├── ForcibleSemaphoreTests.scala
│ │ ├── NestedSemaphoreTests.scala
│ │ ├── PrometheusTests.scala
│ │ ├── ResizableSemaphoreTests.scala
│ │ ├── RunCliCmdTests.scala
│ │ ├── SchedulerTests.scala
│ │ ├── TransactionIdTests.scala
│ │ ├── UserEventTests.scala
│ │ └── etcd
│ │ │ ├── EtcdConfigTests.scala
│ │ │ ├── EtcdKvTests.scala
│ │ │ ├── EtcdLeaderShipUnitTests.scala
│ │ │ └── EtcdWorkerTests.scala
│ │ ├── connector
│ │ └── kafka
│ │ │ └── KafkaMetricsTests.scala
│ │ ├── core
│ │ ├── WhiskConfigTests.scala
│ │ ├── admin
│ │ │ └── WskAdminTests.scala
│ │ ├── apigw
│ │ │ └── actions
│ │ │ │ └── test
│ │ │ │ ├── ApiGwRestRoutemgmtActionTests.scala
│ │ │ │ └── ApiGwRoutemgmtActionTests.scala
│ │ ├── cli
│ │ │ └── test
│ │ │ │ ├── ApiGwRestBasicTests.scala
│ │ │ │ ├── ApiGwRestTests.scala
│ │ │ │ ├── BaseApiGwTests.scala
│ │ │ │ ├── TestJsonArgs.scala
│ │ │ │ ├── WskActionSequenceTests.scala
│ │ │ │ ├── WskEntitlementTests.scala
│ │ │ │ ├── WskRestActionSequenceTests.scala
│ │ │ │ ├── WskRestBasicUsageTests.scala
│ │ │ │ ├── WskRestEntitlementTests.scala
│ │ │ │ └── WskWebActionsTests.scala
│ │ ├── connector
│ │ │ ├── test
│ │ │ │ ├── EventMessageTests.scala
│ │ │ │ ├── MessageFeedTests.scala
│ │ │ │ ├── MessageTests.scala
│ │ │ │ └── TestConnector.scala
│ │ │ └── tests
│ │ │ │ └── AcknowledgementMessageTests.scala
│ │ ├── containerpool
│ │ │ ├── docker
│ │ │ │ └── test
│ │ │ │ │ ├── AkkaContainerClientTests.scala
│ │ │ │ │ ├── ApacheBlockingContainerClientTests.scala
│ │ │ │ │ ├── DockerClientTests.scala
│ │ │ │ │ ├── DockerClientWithFileAccessTests.scala
│ │ │ │ │ ├── DockerContainerFactoryTests.scala
│ │ │ │ │ ├── DockerContainerTests.scala
│ │ │ │ │ ├── ProcessRunnerTests.scala
│ │ │ │ │ └── RuncClientTests.scala
│ │ │ ├── kubernetes
│ │ │ │ └── test
│ │ │ │ │ ├── Fabric8ClientTests.scala
│ │ │ │ │ ├── KubeClientSupport.scala
│ │ │ │ │ ├── KubernetesClientTests.scala
│ │ │ │ │ ├── KubernetesContainerTests.scala
│ │ │ │ │ └── WhiskPodBuilderTests.scala
│ │ │ ├── logging
│ │ │ │ ├── ElasticSearchLogStoreTests.scala
│ │ │ │ ├── ElasticSearchRestClientTests.scala
│ │ │ │ ├── LogDriverLogStoreTests.scala
│ │ │ │ ├── SplunkLogStoreTests.scala
│ │ │ │ └── test
│ │ │ │ │ ├── DockerToActivationFileLogStoreTests.scala
│ │ │ │ │ └── DockerToActivationLogStoreTests.scala
│ │ │ ├── test
│ │ │ │ ├── ContainerArgsConfigTest.scala
│ │ │ │ ├── ContainerPoolConfigTests.scala
│ │ │ │ ├── ContainerPoolTests.scala
│ │ │ │ └── ContainerProxyTests.scala
│ │ │ ├── v2
│ │ │ │ └── test
│ │ │ │ │ ├── ActivationClientProxyTests.scala
│ │ │ │ │ ├── FunctionPullingContainerPoolTests.scala
│ │ │ │ │ ├── FunctionPullingContainerProxyTests.scala
│ │ │ │ │ └── InvokerHealthManagerTests.scala
│ │ │ └── yarn
│ │ │ │ └── test
│ │ │ │ ├── MockYARNRM.scala
│ │ │ │ └── YARNContainerFactoryTests.scala
│ │ ├── controller
│ │ │ ├── actions
│ │ │ │ └── test
│ │ │ │ │ └── SequenceAccountingTests.scala
│ │ │ └── test
│ │ │ │ ├── ActionsApiTests.scala
│ │ │ │ ├── ActionsApiWithDbPollingTests.scala
│ │ │ │ ├── ActionsApiWithoutDbPollingTests.scala
│ │ │ │ ├── ActivationsApiTests.scala
│ │ │ │ ├── BasicAuthenticateTests.scala
│ │ │ │ ├── ConductorsApiTests.scala
│ │ │ │ ├── ControllerApiTests.scala
│ │ │ │ ├── ControllerRoutesTests.scala
│ │ │ │ ├── ControllerTestCommon.scala
│ │ │ │ ├── EntitlementProviderTests.scala
│ │ │ │ ├── FPCEntitlementTests.scala
│ │ │ │ ├── KindRestrictorTests.scala
│ │ │ │ ├── LimitsApiTests.scala
│ │ │ │ ├── NamespacesApiTests.scala
│ │ │ │ ├── PackageActionsApiTests.scala
│ │ │ │ ├── PackagesApiTests.scala
│ │ │ │ ├── RateThrottleTests.scala
│ │ │ │ ├── RespondWithHeadersTests.scala
│ │ │ │ ├── RulesApiTests.scala
│ │ │ │ ├── SequenceApiTests.scala
│ │ │ │ ├── SwaggerRoutesTests.scala
│ │ │ │ ├── TriggersApiTests.scala
│ │ │ │ ├── WebActionsApiTests.scala
│ │ │ │ ├── WhiskAuthHelpers.scala
│ │ │ │ └── migration
│ │ │ │ └── SequenceActionApiMigrationTests.scala
│ │ ├── database
│ │ │ ├── ArtifactActivationStoreBehaviorBase.scala
│ │ │ ├── ArtifactActivationStoreTests.scala
│ │ │ ├── ArtifactWithFileStorageActivationStoreTests.scala
│ │ │ ├── CouchDBArtifactStoreTests.scala
│ │ │ ├── CouchDBAttachmentStoreTests.scala
│ │ │ ├── CouchDBStoreBehaviorBase.scala
│ │ │ ├── LimitsCommandTests.scala
│ │ │ ├── UserCommandTests.scala
│ │ │ ├── WhiskAdminCliTestBase.scala
│ │ │ ├── azblob
│ │ │ │ ├── AzureBlob.scala
│ │ │ │ ├── AzureBlobAttachmentStoreBehaviorBase.scala
│ │ │ │ ├── AzureBlobAttachmentStoreCDNTests.scala
│ │ │ │ ├── AzureBlobAttachmentStoreITTests.scala
│ │ │ │ └── AzureBlobConfigTest.scala
│ │ │ ├── cosmosdb
│ │ │ │ ├── CollectionResourceUsageTests.scala
│ │ │ │ ├── CosmosDBArtifactStoreTests.scala
│ │ │ │ ├── CosmosDBAttachmentStoreTests.scala
│ │ │ │ ├── CosmosDBConfigTests.scala
│ │ │ │ ├── CosmosDBLeakTests.scala
│ │ │ │ ├── CosmosDBSoftDeleteTests.scala
│ │ │ │ ├── CosmosDBStoreBehaviorBase.scala
│ │ │ │ ├── CosmosDBSupportTests.scala
│ │ │ │ ├── CosmosDBTestSupport.scala
│ │ │ │ ├── CosmosDBUtilTest.scala
│ │ │ │ ├── IndexingPolicyTests.scala
│ │ │ │ ├── RecordingLeakDetector.java
│ │ │ │ ├── RecordingLeakDetectorFactory.java
│ │ │ │ ├── ReferenceCountedTests.scala
│ │ │ │ └── cache
│ │ │ │ │ ├── CacheInvalidatorTests.scala
│ │ │ │ │ └── WhiskChangeEventObserverTests.scala
│ │ │ ├── elasticsearch
│ │ │ │ ├── ElasticSearchActivationStoreBehaviorBase.scala
│ │ │ │ └── ElasticSearchActivationStoreTests.scala
│ │ │ ├── memory
│ │ │ │ ├── MemoryArtifactStoreBehaviorBase.scala
│ │ │ │ ├── MemoryArtifactStoreTests.scala
│ │ │ │ └── MemoryAttachmentStoreTests.scala
│ │ │ ├── mongodb
│ │ │ │ ├── MongoDBArtifactStoreTests.scala
│ │ │ │ ├── MongoDBAsyncStreamGraphTests.scala
│ │ │ │ ├── MongoDBAttachmentStoreTests.scala
│ │ │ │ ├── MongoDBStoreBehaviorBase.scala
│ │ │ │ └── MongoDBViewMapperTests.scala
│ │ │ ├── s3
│ │ │ │ ├── CloudFrontSignerTests.scala
│ │ │ │ ├── S3AttachmentStoreAwsTests.scala
│ │ │ │ ├── S3AttachmentStoreBehaviorBase.scala
│ │ │ │ ├── S3AttachmentStoreCloudFrontTests.scala
│ │ │ │ ├── S3AttachmentStoreMinioTests.scala
│ │ │ │ ├── S3Aws.scala
│ │ │ │ ├── S3Minio.scala
│ │ │ │ └── S3WithPrefixTests.scala
│ │ │ └── test
│ │ │ │ ├── AttachmentCompatibilityTests.scala
│ │ │ │ ├── AttachmentStoreBehaviors.scala
│ │ │ │ ├── AttachmentSupportTests.scala
│ │ │ │ ├── BatcherTests.scala
│ │ │ │ ├── CacheConcurrencyTests.scala
│ │ │ │ ├── CleanUpActivationsTest.scala
│ │ │ │ ├── CouchDbRestClientTests.scala
│ │ │ │ ├── DatabaseScriptTestUtils.scala
│ │ │ │ ├── DbUtils.scala
│ │ │ │ ├── DocumentHandlerTests.scala
│ │ │ │ ├── ExtendedCouchDbRestClient.scala
│ │ │ │ ├── MultipleReadersSingleWriterCacheTests.scala
│ │ │ │ ├── RemoveLogsTests.scala
│ │ │ │ ├── ReplicatorTests.scala
│ │ │ │ └── behavior
│ │ │ │ ├── ActivationStoreBehavior.scala
│ │ │ │ ├── ActivationStoreBehaviorBase.scala
│ │ │ │ ├── ActivationStoreCRUDBehaviors.scala
│ │ │ │ ├── ActivationStoreQueryBehaviors.scala
│ │ │ │ ├── ArtifactStoreActivationsQueryBehaviors.scala
│ │ │ │ ├── ArtifactStoreAttachmentBehaviors.scala
│ │ │ │ ├── ArtifactStoreBehavior.scala
│ │ │ │ ├── ArtifactStoreBehaviorBase.scala
│ │ │ │ ├── ArtifactStoreCRUDBehaviors.scala
│ │ │ │ ├── ArtifactStoreQueryBehaviors.scala
│ │ │ │ ├── ArtifactStoreSubjectQueryBehaviors.scala
│ │ │ │ ├── ArtifactStoreTestUtil.scala
│ │ │ │ └── ArtifactStoreWhisksQueryBehaviors.scala
│ │ ├── entity
│ │ │ └── test
│ │ │ │ ├── ActivationCompatTests.scala
│ │ │ │ ├── ActivationResponseTests.scala
│ │ │ │ ├── ControllerInstanceIdTests.scala
│ │ │ │ ├── DatastoreTests.scala
│ │ │ │ ├── ExecHelpers.scala
│ │ │ │ ├── ExecManifestTests.scala
│ │ │ │ ├── ExecTests.scala
│ │ │ │ ├── InvokerInstanceIdTests.scala
│ │ │ │ ├── MigrationEntities.scala
│ │ │ │ ├── ParameterEncryptionTests.scala
│ │ │ │ ├── SchemaTests.scala
│ │ │ │ ├── SizeTests.scala
│ │ │ │ ├── ViewTests.scala
│ │ │ │ └── WhiskEntityTests.scala
│ │ ├── invoker
│ │ │ └── test
│ │ │ │ ├── ContainerMessageConsumerTests.scala
│ │ │ │ ├── DefaultInvokerServerTests.scala
│ │ │ │ ├── FPCInvokerServerTests.scala
│ │ │ │ ├── InstanceIdAssignerTests.scala
│ │ │ │ ├── InvokerBootUpTests.scala
│ │ │ │ └── NamespaceBlacklistTests.scala
│ │ ├── limits
│ │ │ ├── ActionLimitsTests.scala
│ │ │ ├── ConcurrencyTests.scala
│ │ │ └── MaxActionDurationTests.scala
│ │ ├── loadBalancer
│ │ │ └── test
│ │ │ │ ├── FPCPoolBalancerTests.scala
│ │ │ │ ├── InvokerSupervisionTests.scala
│ │ │ │ └── ShardingContainerPoolBalancerTests.scala
│ │ ├── scheduler
│ │ │ ├── FPCSchedulerServerTests.scala
│ │ │ ├── container
│ │ │ │ └── test
│ │ │ │ │ ├── ContainerManagerTests.scala
│ │ │ │ │ └── CreationJobManagerTests.scala
│ │ │ ├── grpc
│ │ │ │ └── test
│ │ │ │ │ ├── ActivationServiceImplTests.scala
│ │ │ │ │ └── CommonVariable.scala
│ │ │ └── queue
│ │ │ │ └── test
│ │ │ │ ├── ContainerCounterTests.scala
│ │ │ │ ├── ElasticSearchDurationCheckResultFormatTest.scala
│ │ │ │ ├── ElasticSearchDurationCheckerTests.scala
│ │ │ │ ├── MemoryQueueFlowTests.scala
│ │ │ │ ├── MemoryQueueTests.scala
│ │ │ │ ├── MemoryQueueTestsFixture.scala
│ │ │ │ ├── QueueManagerTests.scala
│ │ │ │ └── SchedulingDecisionMakerTests.scala
│ │ └── service
│ │ │ ├── DataManagementServiceTests.scala
│ │ │ ├── LeaseKeepAliveServiceTests.scala
│ │ │ └── WatcherServiceTests.scala
│ │ ├── http
│ │ └── PoolingRestClientTests.scala
│ │ ├── spi
│ │ └── SpiTests.scala
│ │ ├── standalone
│ │ ├── StandaloneApiGwTests.scala
│ │ ├── StandaloneCouchTests.scala
│ │ ├── StandaloneKCFTests.scala
│ │ ├── StandaloneKafkaTests.scala
│ │ ├── StandaloneSanityTestSupport.scala
│ │ ├── StandaloneServerFixture.scala
│ │ ├── StandaloneServerTests.scala
│ │ └── StandaloneUserEventTests.scala
│ │ ├── test
│ │ └── http
│ │ │ └── RESTProxy.scala
│ │ └── utils
│ │ └── test
│ │ └── ExecutionContextFactoryTests.scala
│ ├── services
│ ├── HeadersTests.scala
│ └── KafkaConnectorTests.scala
│ └── system
│ ├── basic
│ ├── WskActionTests.scala
│ ├── WskActivationLogsTests.scala
│ ├── WskActivationTests.scala
│ ├── WskConductorTests.scala
│ ├── WskConsoleTests.scala
│ ├── WskMultiRuntimeTests.scala
│ ├── WskPackageTests.scala
│ ├── WskRestBasicTests.scala
│ ├── WskRestRuleTests.scala
│ ├── WskRuleTests.scala
│ ├── WskSequenceTests.scala
│ └── WskUnicodeTests.scala
│ └── rest
│ ├── ActionSchemaTests.scala
│ ├── GoCLINginxTests.scala
│ ├── JsonSchema.scala
│ ├── JsonSchemaTests.scala
│ ├── RestUtil.scala
│ └── SwaggerTests.scala
└── tools
├── actionProxy
├── Dockerfile
├── README.md
├── build.gradle
└── invoke.py
├── admin
├── README-NEXT.md
├── README.md
├── build.gradle
├── src
│ └── main
│ │ ├── resources
│ │ └── application.conf
│ │ └── scala
│ │ └── org
│ │ └── apache
│ │ └── openwhisk
│ │ └── core
│ │ ├── cli
│ │ ├── CommandMessages.scala
│ │ └── Main.scala
│ │ └── database
│ │ ├── LimitsCommand.scala
│ │ └── UserCommand.scala
├── wskadmin
├── wskprop.py
└── wskutil.py
├── build
├── README.md
├── checkLogs.py
├── citool
└── redo
├── db
├── README.md
├── cleanUpActivations.py
├── cosmosDbUtil.py
├── deleteLogsFromActivations.py
├── moveCodeToAttachment.py
└── replicateDbs.py
├── dev
├── README.md
├── build.gradle
└── src
│ └── main
│ ├── groovy
│ ├── CategoryManager.groovy
│ ├── couchdbViews.groovy
│ ├── intellijRunConfig.groovy
│ ├── listRepos.groovy
│ └── renderModuleDetails.groovy
│ └── resources
│ └── modules.md
├── eclipse
├── java.xml
└── scala.properties
├── git
├── README.md
├── pre-commit-scalafmt-gradlew.sh
└── pre-commit-scalafmt-native.sh
├── github
├── checkAndUploadLogs.sh
├── debugAction.sh
├── flake8.sh
├── runDummyTests.sh
├── runLeanSystemTests.sh
├── runMultiRuntimeTests.sh
├── runSchedulerTests.sh
├── runStandaloneTests.sh
├── runSystemTests.sh
├── runUnitTests.sh
├── s3-upload.sh
├── scan.sh
├── setup.sh
├── waitIfDebug.sh
└── writeOnSlack.sh
├── jenkins
└── apache
│ └── dockerhub.groovy
├── macos
├── README.md
└── docker-machine
│ ├── README.md
│ ├── tweak-dockerhost.sh
│ └── tweak-dockermachine.sh
├── ow-utils
├── Dockerfile
├── Dockerfile.arm
├── README.md
└── build.gradle
├── owperf
├── README.md
├── owperf.js
├── owperf.sh
├── owperf_data.odg
├── owperf_data.png
├── package.json
├── setup.sh
└── testAction.js
├── travis
├── README.md
├── box-upload.py
├── checkAndUploadLogs.sh
├── distDocker.sh
├── docker.conf
├── docker.sh
├── flake8.sh
├── runLeanSystemTests.sh
├── runMultiRuntimeTests.sh
├── runSchedulerTests.sh
├── runStandaloneTests.sh
├── runSystemTests.sh
├── runTests.sh
├── runUnitTests.sh
├── scan.sh
├── setup-docker.py
├── setup.sh
├── setupLeanSystem.sh
├── setupPrereq.sh
└── setupSystem.sh
└── ubuntu-setup
├── README.md
├── all.sh
├── ansible.sh
├── bashprofile.sh
├── docker-xenial.sh
├── docker.sh
├── java8.sh
├── misc.sh
└── pip.sh
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization.
2 | # Resources:
3 | # - https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
4 | # - http://davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/
5 | # - https://help.github.com/articles/dealing-with-line-endings/
6 | * text=auto
7 |
8 | *.go text eol=lf
9 | *.java text
10 | *.js text
11 | *.md text
12 | *.py text eol=lf
13 | *.scala text
14 | *.sh text eol=lf
15 | *.gradle text
16 | *.xml text
17 | *.bat text eol=crlf
18 |
19 | *.jar binary
20 | *.png binary
21 |
22 | # python files not having the .py extension
23 | tools/cli/wsk text eol=lf
24 | tools/cli/wskadmin text eol=lf
25 |
26 | # bash files not having the .sh extension
27 | gradlew text eol=lf
28 | core/javaAction/proxy/gradlew text eol=lf
29 | sdk/docker/client/action text eol=lf
30 |
31 | # auth files with default api keys
32 | ansible/files/auth.guest text eol=lf
33 | ansible/files/auth.whisk.system text eol=lf
34 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/proposal.md:
--------------------------------------------------------------------------------
1 | ## Enhancement Description
2 | Please summarize your proposal (e.g. the "what", the "why", and some of the "how").
3 |
4 | * Proposal: [a link to the corresponding pull request if it exists already]()
5 |
6 | ## References
7 | Please provide links to prior discussion (e.g., Apache `dev` list), wikis, or related issues.
8 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # Keep GitHub Actions up to date with GitHub's Dependabot...
2 | # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
3 | version: 2
4 | updates:
5 | - package-ecosystem: "github-actions"
6 | directory: "/"
7 | groups:
8 | GitHub_Actions:
9 | patterns:
10 | - "*" # Group all Actions updates into a single larger pull request
11 | schedule:
12 | interval: weekly
13 |
--------------------------------------------------------------------------------
/.pydevproject:
--------------------------------------------------------------------------------
1 |
2 |
3 | Default
4 | python 3.6
5 |
6 |
--------------------------------------------------------------------------------
/.scalafmt.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | version = 1.5.1
19 | style = intellij
20 | danglingParentheses = false
21 | maxColumn = 120
22 | docstrings = JavaDoc
23 | rewrite.rules = [SortImports]
24 | project.git = true
25 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 |
19 |
20 | # Apache OpenWhisk Community Code of Conduct
21 |
22 | Please refer to the [Apache Code of Conduct](https://www.apache.org/foundation/policies/conduct.html).
23 |
--------------------------------------------------------------------------------
/NOTICE.txt:
--------------------------------------------------------------------------------
1 | Apache OpenWhisk
2 | Copyright 2016-2024 The Apache Software Foundation
3 |
4 | This product includes software developed at
5 | The Apache Software Foundation (http://www.apache.org/).
6 |
--------------------------------------------------------------------------------
/ansible/ansible.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 |
3 | callback_whitelist = profile_tasks
4 | retry_files_enabled = False
5 | host_key_checking = False
6 | inventory = environments/local
7 | callback_plugins = callbacks
8 | hash_behaviour = merge
9 | gather_timeout = 60
10 |
11 | [ssh_connection]
12 | scp_if_ssh = True
13 |
--------------------------------------------------------------------------------
/ansible/apigateway.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | - hosts: redis
19 | roles:
20 | - redis
21 |
22 | - hosts: apigateway
23 | roles:
24 | - apigateway
25 |
--------------------------------------------------------------------------------
/ansible/couchdb.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook deploys a CouchDB for Openwhisk.
19 |
20 | - hosts: db
21 | roles:
22 | - couchdb
23 |
--------------------------------------------------------------------------------
/ansible/downloadcli.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook downloads the Openwhisk cli aka wsk from the API host.
19 |
20 | - hosts: ansible
21 | roles:
22 | - cli-install
23 |
--------------------------------------------------------------------------------
/ansible/edge.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook deploys Openwhisk Edge servers.
19 | # The edge is usually populated with NGINX serving as proxy.
20 | # The CLI also gets built and published for downloading from NGINX.
21 | # SDKs for blackbox get published to NGINX also.
22 |
23 | - hosts: edge
24 | roles:
25 | - nginx
26 | - cli
27 |
--------------------------------------------------------------------------------
/ansible/environments/jenkins/ansible_jenkins.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 |
3 | callback_whitelist = profile_tasks
4 | retry_files_enabled = False
5 | host_key_checking = False
6 | inventory = environments/jenkins
7 | callback_plugins = callbacks
8 | hash_behaviour = merge
9 | remote_user = openwhisk
10 | private_key_file=/home/jenkins/secret/openwhisk_key
11 |
12 | [ssh_connection]
13 | scp_if_ssh = True
14 |
--------------------------------------------------------------------------------
/ansible/environments/jenkins/openwhisk-vm1-he-de.j2.ini:
--------------------------------------------------------------------------------
1 | ; the first parameter in a host is the inventory_hostname
2 |
3 | ; used for local actions only
4 | ansible ansible_connection=local
5 |
6 | [edge]
7 | 144.76.63.94 ansible_host=144.76.63.94 ansible_connection=local
8 |
9 | [controllers]
10 | controller0 ansible_host=144.76.63.94 ansible_connection=local
11 | ;{% if mode is defined and 'HA' in mode %}
12 | ;controller1 ansible_host=144.76.63.94 ansible_connection=local
13 | ;{% endif %}
14 |
15 | [kafkas]
16 | kafka0 ansible_host=144.76.63.94 ansible_connection=local
17 | {% if mode is defined and 'HA' in mode %}
18 | kafka1 ansible_host=144.76.63.94 ansible_connection=local
19 | {% endif %}
20 |
21 | [zookeepers:children]
22 | kafkas
23 |
24 | [invokers]
25 | invoker0 ansible_host=5.9.20.92 ansible_connection=ssh
26 | invoker1 ansible_host=144.76.27.183 ansible_connection=ssh
27 |
28 | ; db group is only used if db.provider is CouchDB
29 | [db]
30 | 144.76.63.94 ansible_host=144.76.63.94 ansible_connection=local
31 |
32 | [redis]
33 | 144.76.63.94 ansible_host=144.76.63.94 ansible_connection=local
34 |
35 | [apigateway]
36 | 144.76.63.94 ansible_host=144.76.63.94 ansible_connection=local
37 |
--------------------------------------------------------------------------------
/ansible/environments/jenkins/openwhisk-vm2-he-de.j2.ini:
--------------------------------------------------------------------------------
1 | ; the first parameter in a host is the inventory_hostname
2 |
3 | ; used for local actions only
4 | ansible ansible_connection=local
5 |
6 | [edge]
7 | 5.9.20.92 ansible_host=5.9.20.92 ansible_connection=local
8 |
9 | [controllers]
10 | controller0 ansible_host=5.9.20.92 ansible_connection=local
11 | ;{% if mode is defined and 'HA' in mode %}
12 | ;controller1 ansible_host=5.9.20.92 ansible_connection=local
13 | ;{% endif %}
14 |
15 | [kafkas]
16 | kafka0 ansible_host=5.9.20.92 ansible_connection=local
17 | {% if mode is defined and 'HA' in mode %}
18 | kafka1 ansible_host=5.9.20.92 ansible_connection=local
19 | {% endif %}
20 |
21 | [zookeepers:children]
22 | kafkas
23 |
24 | [invokers]
25 | invoker0 ansible_host=144.76.27.183 ansible_connection=ssh
26 | invoker1 ansible_host=144.76.63.94 ansible_connection=ssh
27 |
28 | ; db group is only used if db.provider is CouchDB
29 | [db]
30 | 5.9.20.92 ansible_host=5.9.20.92 ansible_connection=local
31 |
32 | [redis]
33 | 5.9.20.92 ansible_host=5.9.20.92 ansible_connection=local
34 |
35 | [apigateway]
36 | 5.9.20.92 ansible_host=5.9.20.92 ansible_connection=local
37 |
--------------------------------------------------------------------------------
/ansible/environments/jenkins/openwhisk-vm3-he-de.j2.ini:
--------------------------------------------------------------------------------
1 | ; the first parameter in a host is the inventory_hostname
2 |
3 | ; used for local actions only
4 | ansible ansible_connection=local
5 |
6 | [edge]
7 | 144.76.27.183 ansible_host=144.76.27.183 ansible_connection=local
8 |
9 | [controllers]
10 | controller0 ansible_host=144.76.27.183 ansible_connection=local
11 | ;{% if mode is defined and 'HA' in mode %}
12 | ;controller1 ansible_host=144.76.27.183 ansible_connection=local
13 | ;{% endif %}
14 |
15 | [kafkas]
16 | kafka0 ansible_host=144.76.27.183 ansible_connection=local
17 | {% if mode is defined and 'HA' in mode %}
18 | kafka1 ansible_host=144.76.27.183 ansible_connection=local
19 | {% endif %}
20 |
21 | [zookeepers:children]
22 | kafkas
23 |
24 | [invokers]
25 | invoker0 ansible_host=144.76.63.94 ansible_connection=ssh
26 | invoker1 ansible_host=5.9.20.92 ansible_connection=ssh
27 |
28 | ; db group is only used if db.provider is CouchDB
29 | [db]
30 | 144.76.27.183 ansible_host=144.76.27.183 ansible_connection=local
31 |
32 | [redis]
33 | 144.76.27.183 ansible_host=144.76.27.183 ansible_connection=local
34 |
35 | [apigateway]
36 | 144.76.27.183 ansible_host=144.76.27.183 ansible_connection=local
37 |
--------------------------------------------------------------------------------
/ansible/environments/vagrant/hosts:
--------------------------------------------------------------------------------
1 | ; the first parameter in a host is the inventory_hostname
2 |
3 | ; used for local actions only
4 | ansible ansible_connection=local
5 |
6 | [edge]
7 | 172.17.0.1 ansible_host=172.17.0.1 ansible_connection=local
8 |
9 | [controllers]
10 | controller0 ansible_host=172.17.0.1 ansible_connection=local
11 | ;
12 | [kafkas]
13 | kafka0 ansible_host=172.17.0.1 ansible_connection=local
14 |
15 | [zookeepers:children]
16 | kafkas
17 |
18 | [invokers]
19 | invoker0 ansible_host=172.17.0.1 ansible_connection=local
20 |
21 | ; db group is only used if db.provider is CouchDB
22 | [db]
23 | 172.17.0.1 ansible_host=172.17.0.1 ansible_connection=local
24 |
25 | [redis]
26 | 172.17.0.1 ansible_host=172.17.0.1 ansible_connection=local
27 |
28 | [apigateway]
29 | 172.17.0.1 ansible_host=172.17.0.1 ansible_connection=local
30 |
31 | [etcd]
32 | etcd0 ansible_host=172.17.0.1 ansible_connection=local
33 |
--------------------------------------------------------------------------------
/ansible/etcd.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook deploys Openwhisk Invokers.
19 |
20 | - hosts: etcd
21 | roles:
22 | - etcd
23 |
--------------------------------------------------------------------------------
/ansible/files/activations_design_document_for_activations_db.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "_design/activations",
3 | "views": {
4 | "byDate": {
5 | "map": "function (doc) {\n if (doc.activationId !== undefined) try {\n emit(doc.start, [doc._id, doc._rev]);\n } catch (e) {}\n}"
6 | }
7 | },
8 | "language": "javascript"
9 | }
10 |
--------------------------------------------------------------------------------
/ansible/files/auth.guest:
--------------------------------------------------------------------------------
1 | 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
--------------------------------------------------------------------------------
/ansible/files/auth.whisk.system:
--------------------------------------------------------------------------------
1 | 789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
--------------------------------------------------------------------------------
/ansible/files/auth_design_document_for_subjects_db_v2.0.0.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "_design/subjects.v2.0.0",
3 | "views": {
4 | "identities": {
5 | "map": "function (doc) {\n if (doc.namespaces && !doc.blocked) {\n doc.namespaces.forEach(function(namespace) {\n var v = {_id: namespace.name + '/limits', namespace: namespace.name, uuid: namespace.uuid, key: namespace.key};\n emit([namespace.name], v);\n emit([namespace.uuid, namespace.key], v);\n });\n }\n}"
6 | }
7 | },
8 | "language": "javascript",
9 | "indexes": {}
10 | }
11 |
--------------------------------------------------------------------------------
/ansible/files/filter_design_document.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "_design/snapshotFilters",
3 | "filters": {
4 | "withoutDeletedAndDesignDocuments": "function(doc, req) {\n return !doc._deleted && !(doc._id.indexOf(\"_design/\") == 0);\n}"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ansible/files/logCleanup_design_document_for_activations_db.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "_design/logCleanup",
3 | "views": {
4 | "byDateWithLogs": {
5 | "map": "function (doc) {\n if (doc.activationId !== undefined && doc.logs && doc.logs.length > 0) try {\n var deleteLogs = true;\n for (i = 0; i < doc.annotations.length; i++) {\n var a = doc.annotations[i];\n if (a.key == \"kind\") {\n deleteLogs = a.value != \"sequence\";\n break;\n }\n }\n if (deleteLogs) {\n emit(doc.start, doc._id);\n }\n } catch (e) {}\n}"
6 | }
7 | },
8 | "language": "javascript"
9 | }
10 |
--------------------------------------------------------------------------------
/ansible/files/namespace_throttlings_design_document_for_subjects_db.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "_design/namespaceThrottlings",
3 | "views": {
4 | "blockedNamespaces": {
5 | "map": "function (doc) {\n if (doc._id.indexOf(\"/limits\") >= 0) {\n if (doc.concurrentInvocations === 0 || doc.invocationsPerMinute === 0) {\n var namespace = doc._id.replace(\"/limits\", \"\");\n emit(namespace, 1);\n }\n } else if (doc.subject && doc.namespaces && doc.blocked) {\n doc.namespaces.forEach(function(namespace) {\n emit(namespace.name, 1);\n });\n }\n}",
6 | "reduce": "_sum"
7 | }
8 | },
9 | "language": "javascript"
10 | }
11 |
--------------------------------------------------------------------------------
/ansible/files/package-versions.ini:
--------------------------------------------------------------------------------
1 | [openwhisk-cli]
2 | git_tag=latest
3 |
--------------------------------------------------------------------------------
/ansible/files/whisks_design_document_for_activations_db_v2.1.0.json:
--------------------------------------------------------------------------------
1 | {
2 | "_id": "_design/whisks.v2.1.0",
3 | "language": "javascript",
4 | "views": {
5 | "activations": {
6 | "map": "function (doc) {\n var PATHSEP = \"/\";\n var isActivation = function (doc) { return (doc.activationId !== undefined) };\n var summarize = function (doc) {\n var endtime = doc.end !== 0 ? doc.end : undefined;\n return {\n namespace: doc.namespace,\n name: doc.name,\n version: doc.version,\n publish: doc.publish,\n annotations: doc.annotations,\n activationId: doc.activationId,\n start: doc.start,\n end: endtime,\n duration: endtime !== undefined ? endtime - doc.start : undefined,\n cause: doc.cause,\n statusCode: (endtime !== undefined && doc.response !== undefined && doc.response.statusCode !== undefined) ? doc.response.statusCode : undefined\n }\n };\n\n if (isActivation(doc)) try {\n var value = summarize(doc)\n emit([doc.namespace, doc.start], value);\n } catch (e) {}\n}\n",
7 | "reduce": "_count"
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/ansible/initdb.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook will initialize the immortal DBs in the database account.
19 | # This step is usually done only once per deployment.
20 |
21 | - hosts: ansible
22 | tasks:
23 | - include_tasks: tasks/initdb.yml
24 |
--------------------------------------------------------------------------------
/ansible/kafka.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook deploys an Openwhisk Kafka bus.
19 |
20 | - hosts: zookeepers
21 | roles:
22 | - zookeeper
23 |
24 | - hosts: kafkas
25 | roles:
26 | - kafka
27 |
--------------------------------------------------------------------------------
/ansible/postdeploy.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook installs additional packages after whisk has been deployed.
19 |
20 | - import_playbook: properties.yml
21 |
22 | - hosts: ansible
23 | tasks:
24 | - include_tasks: tasks/installOpenwhiskCatalog.yml
25 | when: (mode == "deploy")
26 | with_dict: "{{ catalog_repos }}"
27 |
--------------------------------------------------------------------------------
/ansible/prereq.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook prepares all target hosts for Openwhisk installation.
19 | # It will install all necessary packages to run Openwhisk playbooks.
20 |
21 | - hosts: all:!ansible
22 | serial: 1
23 | roles:
24 | - prereq
25 |
--------------------------------------------------------------------------------
/ansible/properties.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook writes whisk.properties.
19 |
20 | - hosts: ansible
21 | tasks:
22 | - import_tasks: tasks/writeWhiskProperties.yml
23 | when: mode == "deploy"
24 |
--------------------------------------------------------------------------------
/ansible/publish.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook updates CLIs and SDKs on an existing edge host.
19 | # Artifacts get built and published to NGINX. This assumes an already running edge host in an Openwhisk deployment.
20 |
21 | - hosts: edge
22 | roles:
23 | - cli
24 | - sdk
25 |
--------------------------------------------------------------------------------
/ansible/recreateDesignDocs.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook recreates all design documents in the whisks and the activations DB.
19 |
20 | - hosts: ansible
21 | tasks:
22 | - import_tasks: tasks/recreateViews.yml
23 | when: mode == "deploy"
24 |
--------------------------------------------------------------------------------
/ansible/roles/apigateway/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove apigateway container.
19 |
20 | - name: remove apigateway
21 | docker_container:
22 | name: apigateway
23 | state: absent
24 | ignore_errors: True
25 |
--------------------------------------------------------------------------------
/ansible/roles/apigateway/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install apigateway in the group 'apigateway' in the environment inventory
19 | # In deploy mode it will deploy apigateway.
20 | # In clean mode it will remove the apigateway containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/cli-install/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 |
19 | - name: remove wsk binary
20 | file:
21 | path: "{{ openwhisk_home }}/bin/{{ wsk }}"
22 | state: absent
23 | vars:
24 | wsk: "{{ ( ansible_system == 'Windows') | ternary('wsk.exe', 'wsk') }}"
25 |
--------------------------------------------------------------------------------
/ansible/roles/cli-install/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will configure and publish the CLI tarball.
19 | # In deploy mode it will generate a new CLI config, generate a tarball and copy it to nginx.
20 | # In clean mode it will clean the cli.nginxdir
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/cli/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 |
19 | - name: remove cli nginx directory
20 | file:
21 | path: "{{ openwhisk_cli.nginxdir.name }}"
22 | state: absent
23 | become: "{{ openwhisk_cli.nginxdir.become }}"
24 |
--------------------------------------------------------------------------------
/ansible/roles/cli/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will configure and publish the CLI tarball.
19 | # In deploy mode it will generate a new CLI config, generate a tarball and copy it to nginx.
20 | # In clean mode it will clean the cli.nginxdir
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/controller/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install controller in group 'controllers' in the environment inventory
19 | # In deploy mode it will deploy controllers.
20 | # In clean mode it will remove the controller containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/controller/templates/config.j2:
--------------------------------------------------------------------------------
1 | include classpath("application.conf")
2 |
3 | # Specify any custom config here. For example
4 | # whisk {
5 | # metrics {
6 | # prometheus-enabled = true
7 | # }
8 | # }
9 |
--------------------------------------------------------------------------------
/ansible/roles/couchdb/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove CouchDB server
19 |
20 | - name: remove CouchDB
21 | docker_container:
22 | name: couchdb
23 | state: absent
24 | ignore_errors: True
25 |
--------------------------------------------------------------------------------
/ansible/roles/couchdb/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will deploy a database server. Use the role if you want to use CouchCB locally.
19 | # In deploy mode it will start the CouchDB container.
20 | # In clean mode it will remove the CouchDB container.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/elasticsearch/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will deploy a database server. Use the role if you want to use ElasticSearch locally.
19 | # In deploy mode it will start the ElasticSearch container.
20 | # In clean mode it will remove the ElasticSearch container.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/elasticsearch/templates/elasticsearch.yml.j2:
--------------------------------------------------------------------------------
1 | cluster.name: "{{ db.elasticsearch.cluster_name }}"
2 | node.name: "{{ elasticsearch_name }}"
3 | network.host: 0.0.0.0
4 | network.publish_host: {{ ansible_default_ipv4.address | default(ansible_host | default('127.0.0.1')) }}
5 |
6 | http.port: 9200
7 | transport.tcp.port: {{ transport_port }}
8 |
9 | # minimum_master_nodes need to be explicitly set when bound on a public IP
10 | # set to 1 to allow single node clusters
11 | # Details: https://github.com/elastic/elasticsearch/pull/17282
12 | discovery.zen.ping.unicast.hosts:
13 | {% for es in groups['elasticsearch'] %}
14 | - {{ hostvars[es].ansible_host }}:{{ db.elasticsearch.base_transport_port|int + host_group.index(es)|int }}
15 | {% endfor %}
16 | discovery.zen.minimum_master_nodes: {{ (host_group|length / 2 + 1) | int}}
17 |
18 | gateway.recover_after_nodes: {{ (host_group|length / 2 + 1) | int }}
19 | gateway.expected_nodes: {{ host_group|length }}
20 | gateway.recover_after_time: 5m
21 |
22 | xpack.security.enabled: false
23 | bootstrap.memory_lock: true
24 |
--------------------------------------------------------------------------------
/ansible/roles/elasticsearch/templates/log4j2.properties.j2:
--------------------------------------------------------------------------------
1 | status = error
2 |
3 | appender.console.type = Console
4 | appender.console.name = console
5 | appender.console.layout.type = PatternLayout
6 | appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
7 |
8 | rootLogger.appenderRef.console.ref = console
9 |
10 | rootLogger.level = {{ db.elasticsearch.loglevel }}
11 |
--------------------------------------------------------------------------------
/ansible/roles/etcd/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove etcd containers.
19 |
20 | - name: remove etcd
21 | docker_container:
22 | name: etcd{{ groups['etcd'].index(inventory_hostname) }}
23 | keep_volumes: True
24 | state: absent
25 | ignore_errors: True
26 |
--------------------------------------------------------------------------------
/ansible/roles/etcd/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install etcd in group 'etcd' in the environment inventory
19 | # In deploy mode it will deploy etcd containers.
20 | # In clean mode it will remove etcd containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/invoker/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install invoker in group 'invokers' in the environment inventory
19 | # In deploy mode it will deploy invokers.
20 | # In clean mode it will remove the invoker containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/invoker/templates/config.j2:
--------------------------------------------------------------------------------
1 | include classpath("application.conf")
2 |
3 | # Specify any custom config here. For example
4 | # whisk {
5 | # metrics {
6 | # prometheus-enabled = true
7 | # }
8 | # }
--------------------------------------------------------------------------------
/ansible/roles/kafka/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install kafka in group 'kafka' in the environment inventory
19 | # In deploy mode it will deploy kafka including zookeeper.
20 | # In clean mode it will remove kafka and zookeeper containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/mongodb/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove MongoDB server
19 |
20 | - name: remove MongoDB
21 | docker_container:
22 | name: mongodb
23 | state: absent
24 | keep_volumes: False
25 |
--------------------------------------------------------------------------------
/ansible/roles/mongodb/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will deploy a database server. Use the role if you want to use CouchCB locally.
19 | # In deploy mode it will start the MongoDB container.
20 | # In clean mode it will remove the MongoDB container.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
28 |
--------------------------------------------------------------------------------
/ansible/roles/nginx/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install nginx.
19 | # In deploy mode it will deploy an nginx server.
20 | # In clean mode it will remove the nginx server as well as nginx.confdir
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/prereq/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove prereq packages
19 |
20 | - name: remove requests
21 | pip:
22 | name: requests
23 | state: absent
24 | become: true
25 |
26 | - name: remove docker
27 | pip:
28 | name: docker
29 | state: absent
30 | become: true
31 |
32 | - name: remove httplib2
33 | pip:
34 | name: httplib2
35 | state: absent
36 | become: true
37 |
--------------------------------------------------------------------------------
/ansible/roles/prereq/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will prepare target VMs for a whisk deployment using ansible.
19 | # In deploy mode it will install all necessary packages and programs.
20 | # In clean mode it will uninstall packages from deploy mode.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/redis/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove redis container.
19 |
20 | - name: remove redis
21 | docker_container:
22 | name: redis
23 | state: absent
24 | ignore_errors: True
25 |
--------------------------------------------------------------------------------
/ansible/roles/redis/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install redis in group 'redis' in the environment inventory
19 | # In deploy mode it will deploy redis.
20 | # In clean mode it will remove the redis containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/routemgmt/tasks/clean.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Remove API Gateway route management actions.
19 |
20 | - name: remove route management actions
21 | shell: ./uninstallRouteMgmt.sh {{ catalog_auth_key }} {{ groups['edge'] | first }} {{ catalog_namespace }} {{ cli.path }} chdir="{{ openwhisk_home }}/ansible/roles/routemgmt/files"
22 | environment:
23 | OPENWHISK_HOME: "{{ openwhisk_home }}"
24 |
--------------------------------------------------------------------------------
/ansible/roles/routemgmt/tasks/deploy.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # Install the API Gateway route management actions.
19 | - name: install route management actions
20 | shell: ./installRouteMgmt.sh {{ catalog_auth_key }} {{ whisk_api_host_name | default(groups['edge'] | first) }} {{ catalog_namespace }} {{ cli.path }} chdir="{{ openwhisk_home }}/ansible/roles/routemgmt/files"
21 | environment:
22 | OPENWHISK_HOME: "{{ openwhisk_home }}"
23 |
--------------------------------------------------------------------------------
/ansible/roles/routemgmt/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install the API Gateway route management actions
19 | # In deploy mode it will deploy the API Gateway route management actions.
20 | # In clean mode it will remove the API Gateway route management actions.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/schedulers/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install scheduler in group 'schedulers' in the environment inventory
19 | # In deploy mode it will deploy schedulers.
20 | # In clean mode it will remove the scheduler containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/roles/zookeeper/tasks/main.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This role will install kafka in group 'kafka' in the environment inventory
19 | # In deploy mode it will deploy kafka including zookeeper.
20 | # In clean mode it will remove kafka and zookeeper containers.
21 |
22 | - import_tasks: deploy.yml
23 | when: mode == "deploy"
24 |
25 | - import_tasks: clean.yml
26 | when: mode == "clean"
27 |
--------------------------------------------------------------------------------
/ansible/routemgmt.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # This playbook deploys the Openwhisk API Gateway route management actions.
19 |
20 | - hosts: ansible
21 | roles:
22 | - routemgmt
23 |
--------------------------------------------------------------------------------
/ansible/tasks/docker_login.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 |
19 | # Logs in to private registry if needed.
20 |
21 | - name: docker login
22 | docker_login:
23 | registry: "{{ docker_registry }}"
24 | username: "{{ docker_registry_username }}"
25 | password: "{{ docker_registry_password }}"
26 | when: docker_registry != "" and docker_registry_password is defined
27 |
--------------------------------------------------------------------------------
/ansible/templates/db_local.ini.j2:
--------------------------------------------------------------------------------
1 | [db_creds]
2 | db_provider={{ lookup('env', 'OW_DB')|default('CouchDB', true) }}
3 | db_username={{ lookup('env', 'OW_DB_USERNAME')|default('whisk_admin', true) }}
4 | db_password={{ lookup('env', 'OW_DB_PASSWORD')|default('some_passw0rd', true) }}
5 | db_protocol={{ lookup('env', 'OW_DB_PROTOCOL')|default('http', true) }}
6 | db_host={{ lookup('env', 'OW_DB_HOST')|default(groups['db']|first, true) }}
7 | db_port={{ lookup('env', 'OW_DB_PORT')|default('5984', true) }}
8 |
9 | [controller]
10 | db_username={{ lookup('env', 'OW_DB_CONTROLLER_USERNAME') | default(db_prefix + 'controller0', true) }}
11 | db_password={{ lookup('env', 'OW_DB_CONTROLLER_PASSWORD') | default('some_controller_passw0rd', true) }}
12 |
13 | [invoker]
14 | db_username={{ lookup('env', 'OW_DB_INVOKER_USERNAME') | default(db_prefix + 'invoker0', true) }}
15 | db_password={{ lookup('env', 'OW_DB_INVOKER_PASSWORD') | default('some_invoker_passw0rd', true) }}
16 |
17 | [scheduler]
18 | db_username={{ lookup('env', 'OW_DB_SCHEDULER_USERNAME') | default(db_prefix + 'scheduler0', true) }}
19 | db_password={{ lookup('env', 'OW_DB_SCHEDULER_PASSWORD') | default('some_scheduler_passw0rd', true) }}
20 |
--------------------------------------------------------------------------------
/ansible/templates/jmxremote.access.j2:
--------------------------------------------------------------------------------
1 | {{ jmx.user }} readwrite
2 |
--------------------------------------------------------------------------------
/ansible/templates/jmxremote.password.j2:
--------------------------------------------------------------------------------
1 | {{ jmx.user }} {{ jmx.pass }}
2 |
--------------------------------------------------------------------------------
/ansible/templates/whisk.conf.j2:
--------------------------------------------------------------------------------
1 | include classpath("application.conf")
2 |
3 | whisk {
4 | couchdb {
5 | protocol = "{{ db.protocol }}"
6 | host = "{{ db.host }}"
7 | port = "{{ db.port }}"
8 | username = "{{ db.credentials.admin.user }}"
9 | password = "{{ db.credentials.admin.pass }}"
10 | provider = "{{ db.provider }}"
11 | databases {
12 | WhiskAuth = "{{ db.whisk.auth }}"
13 | WhiskEntity = "{{ db.whisk.actions }}"
14 | WhiskActivation = "{{ db.whisk.activations }}"
15 | }
16 | }
17 | {% if db.artifact_store.backend == 'MongoDB' %}
18 | mongodb {
19 | uri = "{{ db.mongodb.connect_string }}"
20 | database = "{{ db.mongodb.database }}"
21 | }
22 |
23 | spi {
24 | ArtifactStoreProvider = org.apache.openwhisk.core.database.mongodb.MongoDBArtifactStoreProvider
25 | }
26 | {% endif %}
27 | }
28 |
--------------------------------------------------------------------------------
/ansible/wipe.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | ---
18 | # WARNING: This playbook wipes the database. This action is not reversible. Be very careful and know what you are doing.
19 |
20 | - hosts: ansible
21 | tasks:
22 | - import_tasks: tasks/wipeDatabase.yml
23 | vars:
24 | withViews: True
25 | when: mode == "deploy"
26 |
--------------------------------------------------------------------------------
/ansible/yamllint.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | extends: default
19 |
20 | rules:
21 | # Needs to be more than 80 because of the standard
22 | # apache header overflowing in a couple places
23 | line-length:
24 | max: 90
25 |
--------------------------------------------------------------------------------
/bin/wskadmin:
--------------------------------------------------------------------------------
1 | ../tools/admin/wskadmin
--------------------------------------------------------------------------------
/bin/wskdev:
--------------------------------------------------------------------------------
1 | ../tools/build/redo
--------------------------------------------------------------------------------
/common/scala/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !transformEnvironment.sh
3 | !copyJMXFiles.sh
4 | !build/distributions
--------------------------------------------------------------------------------
/common/scala/copyJMXFiles.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | if [[ $( ls /conf/jmxremote.* 2> /dev/null ) ]]
20 | then
21 | # JMX auth files would be mounted as a symbolic link (read-only mode)
22 | # with `root` privileges by the k8s secret.
23 | cp -rL /conf/jmxremote.* /home/owuser
24 | rm -f /conf/jmxremote.* 2>/dev/null || true
25 |
26 | # The owner must be `owuser` and the file only have read permission.
27 | chmod 600 /home/owuser/jmxremote.*
28 | fi
29 |
--------------------------------------------------------------------------------
/common/scala/src/main/resources/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | [%d{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}] [%p] %msg%n
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/common/scala/src/main/resources/logging.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | akka {
19 | loglevel = "DEBUG"
20 | loggers = ["akka.event.slf4j.Slf4jLogger"]
21 | logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
22 | }
23 |
--------------------------------------------------------------------------------
/common/scala/src/main/scala/org/apache/openwhisk/common/time/Clock.scala:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.openwhisk.common.time
19 |
20 | import java.time.Instant
21 |
22 | trait Clock {
23 | def now(): Instant
24 | }
25 |
26 | object SystemClock extends Clock {
27 | def now() = Instant.now()
28 | }
29 |
--------------------------------------------------------------------------------
/common/scala/src/main/scala/org/apache/openwhisk/core/entity/DocumentReader.scala:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.openwhisk.core.entity
19 |
20 | import spray.json._
21 |
22 | protected[core] abstract class DocumentReader {
23 | def read[A](ma: Manifest[A], value: JsValue): WhiskDocument
24 | }
25 |
--------------------------------------------------------------------------------
/core/controller/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !init.sh
3 | !build/distributions
4 | !build/tmp/docker-coverage
5 |
--------------------------------------------------------------------------------
/core/controller/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ./copyJMXFiles.sh
20 |
21 | export CONTROLLER_OPTS
22 | CONTROLLER_OPTS="$CONTROLLER_OPTS -Dakka.remote.artery.bind.hostname=$(hostname -i) $(./transformEnvironment.sh)"
23 |
24 | exec controller/bin/controller "$@"
25 |
--------------------------------------------------------------------------------
/core/cosmosdb/cache-invalidator/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !init.sh
3 | !build/distributions
4 | !build/tmp/docker-coverage
5 |
--------------------------------------------------------------------------------
/core/cosmosdb/cache-invalidator/Dockerfile:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | ARG BASE=scala
19 | FROM ${BASE}
20 |
21 | ENV UID=1001 \
22 | NOT_ROOT_USER=owuser
23 |
24 |
25 | # Copy app jars
26 | ADD build/distributions/cache-invalidator.tar /
27 |
28 | COPY init.sh /
29 | RUN chmod +x init.sh
30 |
31 | RUN useradd -m -u 1001 -d /home/${NOT_ROOT_USER} -s /bin/bash ${NOT_ROOT_USER}
32 | USER ${NOT_ROOT_USER}
33 |
34 | EXPOSE 8080
35 | CMD ["./init.sh", "0"]
36 |
--------------------------------------------------------------------------------
/core/cosmosdb/cache-invalidator/Dockerfile-debian:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | FROM scala
19 |
20 | ENV UID=1001 \
21 | NOT_ROOT_USER=owuser
22 |
23 |
24 | # Copy app jars
25 | ADD build/distributions/cache-invalidator.tar /
26 |
27 | COPY init.sh /
28 | RUN chmod +x init.sh
29 |
30 | RUN adduser --disabled-password --disabled-login --gecos '' --uid ${UID} --home /home/${NOT_ROOT_USER} ${NOT_ROOT_USER}
31 | USER ${NOT_ROOT_USER}
32 |
33 | EXPOSE 8080
34 | CMD ["./init.sh", "0"]
35 |
--------------------------------------------------------------------------------
/core/cosmosdb/cache-invalidator/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #
4 | # Licensed to the Apache Software Foundation (ASF) under one or more
5 | # contributor license agreements. See the NOTICE file distributed with
6 | # this work for additional information regarding copyright ownership.
7 | # The ASF licenses this file to You under the Apache License, Version 2.0
8 | # (the "License"); you may not use this file except in compliance with
9 | # the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | ./copyJMXFiles.sh
21 |
22 | export CACHE_INVALIDATOR_OPTS
23 | CACHE_INVALIDATOR_OPTS="$CACHE_INVALIDATOR_OPTS $(./transformEnvironment.sh)"
24 |
25 | exec cache-invalidator/bin/cache-invalidator "$@"
26 |
--------------------------------------------------------------------------------
/core/cosmosdb/cache-invalidator/src/main/resources/application.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | akka.kafka.producer {
19 | # Properties defined by org.apache.kafka.clients.consumer.ConsumerConfig
20 | # can be defined in this configuration section.
21 | kafka-clients {
22 | bootstrap.servers = ${?KAFKA_HOSTS}
23 | //change the default producer timeout so that it will quickly fail when kafka topic cannot be written
24 | max.block.ms = 2000
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/core/invoker/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !init.sh
3 | !build/distributions
4 | !build/tmp/docker-coverage
5 |
--------------------------------------------------------------------------------
/core/invoker/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ./copyJMXFiles.sh
20 |
21 | export INVOKER_OPTS
22 | INVOKER_OPTS="$INVOKER_OPTS $(./transformEnvironment.sh)"
23 |
24 | exec invoker/bin/invoker "$@"
25 |
--------------------------------------------------------------------------------
/core/monitoring/user-events/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !transformEnvironment.sh
3 | !init.sh
4 | !build/distributions
5 | !Dockerfile
--------------------------------------------------------------------------------
/core/monitoring/user-events/Dockerfile:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | ARG BASE=scala
19 | FROM ${BASE}
20 |
21 | ENV UID=1001 \
22 | NOT_ROOT_USER=owuser
23 |
24 | # Copy app jars
25 | ADD build/distributions/user-events.tar /
26 |
27 | COPY init.sh /
28 | RUN chmod +x init.sh
29 |
30 | RUN useradd -m -u 1001 -d /home/${NOT_ROOT_USER} -s /bin/bash ${NOT_ROOT_USER}
31 | USER ${NOT_ROOT_USER}
32 |
33 | # Prometheus port
34 | EXPOSE 9095
35 | CMD ["./init.sh", "0"]
36 |
--------------------------------------------------------------------------------
/core/monitoring/user-events/compose/grafana/provisioning/dashboards/dashboard.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | apiVersion: 1
19 |
20 | providers:
21 | - name: 'Prometheus'
22 | orgId: 1
23 | folder: ''
24 | type: file
25 | disableDeletion: false
26 | editable: true
27 | options:
28 | path: /var/lib/grafana/dashboards
29 |
--------------------------------------------------------------------------------
/core/monitoring/user-events/compose/prometheus/prometheus.yml:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | global:
19 | scrape_interval: 10s
20 | evaluation_interval: 10s
21 |
22 | scrape_configs:
23 | - job_name: 'prometheus-server'
24 | static_configs:
25 | - targets: ['localhost:9090']
26 |
27 | - job_name: 'openwhisk-metrics'
28 | static_configs:
29 | - targets: ['user-events:9095']
30 |
31 |
--------------------------------------------------------------------------------
/core/monitoring/user-events/images/demo_landing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/core/monitoring/user-events/images/demo_landing.png
--------------------------------------------------------------------------------
/core/monitoring/user-events/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #
4 | # Licensed to the Apache Software Foundation (ASF) under one or more
5 | # contributor license agreements. See the NOTICE file distributed with
6 | # this work for additional information regarding copyright ownership.
7 | # The ASF licenses this file to You under the Apache License, Version 2.0
8 | # (the "License"); you may not use this file except in compliance with
9 | # the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | ./copyJMXFiles.sh
21 |
22 | export USER_EVENTS_OPTS
23 | USER_EVENTS_OPTS="$USER_EVENTS_OPTS $(./transformEnvironment.sh)"
24 |
25 | exec user-events/bin/user-events "$@"
26 |
--------------------------------------------------------------------------------
/core/monitoring/user-events/src/main/resources/whisk-logback.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 | true
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/core/routemgmt/createApi/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "createApi.js",
3 | "dependencies": {
4 | "lodash": "4.17.15",
5 | "request": "2.88.0"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/core/routemgmt/deleteApi/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "deleteApi.js",
3 | "dependencies": {
4 | "lodash": "4.17.15",
5 | "request": "2.88.0"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/core/routemgmt/getApi/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": "getApi.js",
3 | "dependencies": {
4 | "lodash": "4.17.21",
5 | "request": "2.88.0"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/core/scheduler/Dockerfile:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | ARG BASE=scala
19 | FROM ${BASE}
20 |
21 | ENV UID=1001 \
22 | NOT_ROOT_USER=owuser
23 |
24 | # Copy app jars
25 | ADD build/distributions/scheduler.tar /
26 |
27 | COPY init.sh /
28 | RUN chmod +x init.sh
29 |
30 | RUN useradd -m -u 1001 -d /home/${NOT_ROOT_USER} -s /bin/bash ${NOT_ROOT_USER}
31 | USER ${NOT_ROOT_USER}
32 |
33 | EXPOSE 8080
34 | CMD ["./init.sh", "0"]
35 |
--------------------------------------------------------------------------------
/core/scheduler/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ./copyJMXFiles.sh
20 |
21 | export SCHEDULER_OPTS
22 | SCHEDULER_OPTS="$SCHEDULER_OPTS -Dakka.remote.artery.bind.hostname=$(hostname -i) $(./transformEnvironment.sh)"
23 |
24 | exec scheduler/bin/scheduler "$@"
25 |
--------------------------------------------------------------------------------
/core/scheduler/src/main/java/Empty.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | public class Empty {
19 | // Workaround for this issue https://github.com/akka/akka-grpc/issues/289
20 | // Gradle complains about no java sources.
21 | // Note. Openwhisk is using a lower gradle version, so the latest akka-grpc version cannot be used.
22 | }
23 |
--------------------------------------------------------------------------------
/core/standalone/bin/init:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 | if ! test -e /var/run/docker.sock
19 | then echo "Please launch this image with the option -v /var/run/docker.sock:/var/run/docker.sock"
20 | exit 1
21 | fi
22 | JVM_ARGS="$JVM_EXTRA_ARGS\
23 | -Dwhisk.standalone.host.name=$(hostname)\
24 | -Dwhisk.standalone.host.internal=$(hostname -i)\
25 | -Dwhisk.standalone.host.external=localhost"
26 | set -x
27 | java $JVM_ARGS -jar openwhisk-standalone.jar --no-browser "$@"
28 |
--------------------------------------------------------------------------------
/core/standalone/bin/stop:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 | ps -o comm,pid ax | awk '/^java/ { print $2 }' | xargs kill
19 |
--------------------------------------------------------------------------------
/core/standalone/stop.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 | docker exec openwhisk stop
19 |
--------------------------------------------------------------------------------
/docs/images/IoT_solution_architecture_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/IoT_solution_architecture_example.png
--------------------------------------------------------------------------------
/docs/images/OpenWhisk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/OpenWhisk.png
--------------------------------------------------------------------------------
/docs/images/OpenWhisk_flow_of_processing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/OpenWhisk_flow_of_processing.png
--------------------------------------------------------------------------------
/docs/images/Openwhisk-flow-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/Openwhisk-flow-diagram.png
--------------------------------------------------------------------------------
/docs/images/README.md:
--------------------------------------------------------------------------------
1 |
19 |
20 | This folder contains approved OpenWhisk logo images bearing the Trademark (TM) symbol that indicates that the OpenWhisk project has been granted (or has filed for) a trademark for the OpenWhisk name and/or logo in various geographies.
21 |
--------------------------------------------------------------------------------
/docs/images/components_to_repos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/components_to_repos.png
--------------------------------------------------------------------------------
/docs/images/playground-ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/playground-ui.png
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full-color_with_tm_128x128-300dpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full-color_with_tm_128x128-300dpi.png
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full-color_with_tm_210x138-300dpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full-color_with_tm_210x138-300dpi.png
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full-color_with_tm_64x64-300dpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full-color_with_tm_64x64-300dpi.png
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full_color_with_tm.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full_color_with_tm.psd
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full_color_with_tm_100x100-300dpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full_color_with_tm_100x100-300dpi.png
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full_color_with_tm_100x100-96dpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full_color_with_tm_100x100-96dpi.png
--------------------------------------------------------------------------------
/docs/images/whisk_icon_full_color_with_tm_200x200-300dpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/docs/images/whisk_icon_full_color_with_tm_200x200-300dpi.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | distributionBase=GRADLE_USER_HOME
19 | distributionPath=wrapper/dists
20 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
21 | zipStoreBase=GRADLE_USER_HOME
22 | zipStorePath=wrapper/dists
23 |
--------------------------------------------------------------------------------
/licenses/LICENSE-spray.txt:
--------------------------------------------------------------------------------
1 | This software is licensed under the Apache 2 license, quoted below.
2 |
3 | Copyright © 2011-2015 the spray project
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License"); you may not
6 | use this file except in compliance with the License. You may obtain a copy of
7 | the License at
8 |
9 | [http://www.apache.org/licenses/LICENSE-2.0]
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | License for the specific language governing permissions and limitations under
15 | the License.
16 |
--------------------------------------------------------------------------------
/tests/.pydevproject:
--------------------------------------------------------------------------------
1 |
2 |
3 | Default
4 | python 2.7
5 |
6 |
--------------------------------------------------------------------------------
/tests/dat/actions/applicationError.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | return { error: "This error thrown on purpose by the action."};
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/argCheck.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | return {payload: params.payload};
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/argsPrint.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | var param1 = params.param1 || '';
20 | var param2 = params.param2 || '';
21 | return {param1: param1, param2: param2};
22 | }
23 |
--------------------------------------------------------------------------------
/tests/dat/actions/asyncError.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | return Promise.reject({msg: 'failed activation on purpose'});
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/blackbox/exec:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | echo 'This is an example zip used with the docker skeleton action.'
20 | echo '{ "msg": "hello zip" }'
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/cat.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Equivalent to unix cat command.
20 | * Return all the lines in an array. All other fields in the input message are stripped.
21 | * @param lines An array of strings.
22 | */
23 | function main(msg) {
24 | var lines = msg.lines || [];
25 | var retn = {lines: lines, payload: lines.join("\n")};
26 | console.log('cat: returning ' + JSON.stringify(retn));
27 | return retn;
28 | }
29 |
--------------------------------------------------------------------------------
/tests/dat/actions/createTrigger.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | func main(args: [String:Any]) -> [String:Any] {
19 | guard let triggerName = args["triggerName"] as? String else {
20 | return ["error": "You must specify a triggerName parameter!"]
21 | }
22 | print("Trigger Name: \(triggerName)")
23 | return Whisk.createTrigger(triggerNamed: triggerName, withParameters: [:])
24 | }
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/dosLogs.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(msg) {
19 | // Each log line with 16 characters (new line character counts)
20 | var lines = msg.payload / 16 || 1;
21 | for(var i = 1; i <= lines; i++) {
22 | console.log("123456789abcdef");
23 | }
24 | return {msg: lines};
25 | }
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/echo-web-http-head.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | return {
20 | statusCode: 200,
21 | headers: { 'Request-type': params.__ow_method }
22 | };
23 | }
24 |
--------------------------------------------------------------------------------
/tests/dat/actions/echo-web-http.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | return {
20 | statusCode: 200,
21 | headers: { 'Content-Type': 'application/json' },
22 | body: params
23 | };
24 | }
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/echo.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Returns params, or an empty string if no parameter values are provided
20 | */
21 | function main(params) {
22 | return params || {};
23 | }
24 |
--------------------------------------------------------------------------------
/tests/dat/actions/echo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "echo",
3 | "version": "0.0.1",
4 | "publish": false,
5 | "exec": {
6 | "kind": "nodejs:20",
7 | "code": "/**\n * Returns params, or an empty string if no parameter values are provided\n */\nfunction main(params) {\n return params || {};\n}\n\n"
8 | },
9 | "annotations": [],
10 | "parameters": [],
11 | "limits": {
12 | "timeout": 60000,
13 | "memory": 256,
14 | "logs": 10
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tests/dat/actions/empty.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/tests/dat/actions/empty.js
--------------------------------------------------------------------------------
/tests/dat/actions/emptyJSONResult.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | }
20 |
--------------------------------------------------------------------------------
/tests/dat/actions/head.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Return the first num lines of an array.
20 | * @param lines An array of strings.
21 | * @param num Number of lines to return.
22 | */
23 | function main(msg) {
24 | var lines = msg.lines || [];
25 | var num = msg.num || 1;
26 | var head = lines.slice(0, num);
27 | console.log('head get first ' + num + ' lines of ' + lines + ': ' + head);
28 | return {lines: head, num: num};
29 | }
30 |
--------------------------------------------------------------------------------
/tests/dat/actions/hello.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Hello, world.
20 | */
21 | function main(params) {
22 | greeting = 'hello, ' + params.payload + '!'
23 | console.log(greeting);
24 | return {payload: greeting}
25 | }
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/hello.py:
--------------------------------------------------------------------------------
1 | """Python Hello test.
2 |
3 | /*
4 | * Licensed to the Apache Software Foundation (ASF) under one or more
5 | * contributor license agreements. See the NOTICE file distributed with
6 | * this work for additional information regarding copyright ownership.
7 | * The ASF licenses this file to You under the Apache License, Version 2.0
8 | * (the "License"); you may not use this file except in compliance with
9 | * the License. You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | */
19 | """
20 |
21 |
22 | def main(args):
23 | """Main."""
24 | name = args.get('name', 'stranger')
25 | greeting = 'Hello ' + name + '!'
26 | print(greeting)
27 | return {'greeting': greeting}
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/hello.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Hello world as a Swift Whisk action.
20 | */
21 | func main(args: [String:Any]) -> [String:Any] {
22 | if let name = args["name"] as? String {
23 | return [ "greeting" : "Hello \(name)!" ]
24 | } else {
25 | return [ "greeting" : "Hello stranger!" ]
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/helloArray.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * helloArray action
20 | */
21 |
22 | function main(params) {
23 | return [{"key1":"value1"},{"key2":"value2"}];
24 | }
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/helloPromise.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | return new Promise(function(resolve, reject) {
20 | setTimeout(function() {
21 | resolve({
22 | done : true
23 | });
24 | }, 2000);
25 | })
26 | }
27 |
--------------------------------------------------------------------------------
/tests/dat/actions/initexit.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | process.exit(1);
19 |
--------------------------------------------------------------------------------
/tests/dat/actions/initforever.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | while (true) {}
19 |
--------------------------------------------------------------------------------
/tests/dat/actions/invalidInput1.json:
--------------------------------------------------------------------------------
1 | {
2 | "invalidJSON":
3 | }
4 |
--------------------------------------------------------------------------------
/tests/dat/actions/invalidInput2.json:
--------------------------------------------------------------------------------
1 | {
2 | "invalid": "JS
3 | ON"
4 | }
5 |
--------------------------------------------------------------------------------
/tests/dat/actions/invalidInput3.json:
--------------------------------------------------------------------------------
1 | {
2 | "invalid": "JSON"
3 |
--------------------------------------------------------------------------------
/tests/dat/actions/invalidInput4.json:
--------------------------------------------------------------------------------
1 | {
2 | "invalid": "JS"ON"
3 | }
4 |
--------------------------------------------------------------------------------
/tests/dat/actions/jsonStringWebAction.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | return {
20 | headers: {
21 | "content-type": "application/json"
22 | },
23 | statusCode: 200,
24 | body: '{"status": "success"}'
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/dat/actions/log.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Emit strings to stdout/stderr.
20 | */
21 | function main() {
22 | console.log("this is stdout");
23 | console.error("this is stderr");
24 | }
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/malformed.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | x
19 |
--------------------------------------------------------------------------------
/tests/dat/actions/malformed.py:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | """Invalid Python comment test."""
19 | // invalid python comment # noqa -- tell linters to ignore the intentional syntax error
20 |
--------------------------------------------------------------------------------
/tests/dat/actions/multipleHeaders.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | return {
20 | headers: {
21 | "Set-Cookie": ["a=b", "c=d"]
22 | },
23 | statusCode: 200
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/niam.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function niam(args) {
19 | return { 'greetings': 'Hello from a non-standard entrypoint.' };
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/niam.py:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | """Python Non-standard entry point test."""
19 |
20 |
21 | def niam(args):
22 | """Non-standard entry point."""
23 | return {"greetings": "Hello from a non-standard entrypoint."}
24 |
--------------------------------------------------------------------------------
/tests/dat/actions/niam.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /* Swift action with a non-default entry point. */
19 | func niam(args: [String:Any]) -> [String:Any] {
20 | return [ "greetings" : "Hello from a non-standard entrypoint." ]
21 | }
22 |
--------------------------------------------------------------------------------
/tests/dat/actions/params.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | return {args}
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/python-zip/__main__.py:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | from greet import greet
19 |
20 |
21 | def niam(args):
22 | return greet(args)
23 |
--------------------------------------------------------------------------------
/tests/dat/actions/python-zip/greet.py:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 |
19 | def greet(dict):
20 | if 'name' in dict:
21 | name = dict['name']
22 | else:
23 | name = 'stranger'
24 | greeting = 'Hello ' + name + '!'
25 | return {'greeting': greeting}
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/pythonVersion.py:
--------------------------------------------------------------------------------
1 | """Python Version test.
2 |
3 | /*
4 | * Licensed to the Apache Software Foundation (ASF) under one or more
5 | * contributor license agreements. See the NOTICE file distributed with
6 | * this work for additional information regarding copyright ownership.
7 | * The ASF licenses this file to You under the Apache License, Version 2.0
8 | * (the "License"); you may not use this file except in compliance with
9 | * the License. You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | */
19 | """
20 |
21 | import sys
22 |
23 | def main(args):
24 | """Main."""
25 | return {"version": sys.version_info.major}
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/runexception.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | throw "Extraordinary exception"
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/runexit.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | process.exit(1);
20 | }
21 |
--------------------------------------------------------------------------------
/tests/dat/actions/sizedResult.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | let str = new Array(args.size).join(args.char)
20 | return {
21 | msg : str
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/tests/dat/actions/sort-array.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Sort a set of lines.
20 | * @param lines An array of strings to sort.
21 | */
22 | function main(msg) {
23 | var lines = msg || [];
24 | console.log('sort before: ' + lines);
25 | lines.sort();
26 | console.log('sort after: ' + lines);
27 | return lines;
28 | }
29 |
--------------------------------------------------------------------------------
/tests/dat/actions/src/java/sleep/build.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | plugins {
19 | id 'java'
20 | }
21 |
22 | version = '1.0'
23 |
24 | repositories {
25 | mavenCentral()
26 | }
27 |
28 | dependencies {
29 | implementation "com.google.code.gson:gson:2.6.2"
30 | }
31 |
--------------------------------------------------------------------------------
/tests/dat/actions/src/java/sleep/settings.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | rootProject.name = 'sleep'
19 |
--------------------------------------------------------------------------------
/tests/dat/actions/stdenv.py:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | """Unify action container environments."""
19 | import os
20 |
21 |
22 | def main(dict):
23 | return {"auth": os.environ['__OW_API_KEY'],
24 | "edge": os.environ['__OW_API_HOST']}
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/step.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Increment action.
20 | */
21 | function main({ n }) {
22 | if (typeof n === 'undefined') return { error: 'missing parameter'}
23 | return { n: n + 1 }
24 | }
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/textBody.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | return {
20 | headers: {
21 | 'Content-Type': 'text/html'
22 | },
23 | body: 'plain text'
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/trigger.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | func main(args: [String:Any]) -> [String:Any] {
19 | if let triggerName = args["triggerName"] as? String {
20 | print("Trigger Name: \(triggerName)")
21 | return Whisk.trigger(eventNamed: triggerName, withParameters: [:])
22 | } else {
23 | return ["error": "You must specify a triggerName parameter!"]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/go-1.13.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package main
19 |
20 | import "fmt"
21 |
22 | func Main(args map[string]interface{}) map[string]interface{} {
23 | delimiter := args["delimiter"].(string)
24 | str := delimiter + " ☃ " + delimiter
25 | fmt.Println(str)
26 | res := make(map[string]interface{})
27 | res["winter"] = str
28 | return res
29 | }
30 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/go-1.15.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package main
19 |
20 | import "fmt"
21 |
22 | func Main(args map[string]interface{}) map[string]interface{} {
23 | delimiter := args["delimiter"].(string)
24 | str := delimiter + " ☃ " + delimiter
25 | fmt.Println(str)
26 | res := make(map[string]interface{})
27 | res["winter"] = str
28 | return res
29 | }
30 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/nodejs-10.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | var str = args.delimiter + " ☃ " + args.delimiter;
20 | console.log(str);
21 | return { "winter": str };
22 | }
23 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/nodejs-12.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | var str = args.delimiter + " ☃ " + args.delimiter;
20 | console.log(str);
21 | return { "winter": str };
22 | }
23 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/nodejs-14.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(args) {
19 | var str = args.delimiter + " ☃ " + args.delimiter;
20 | console.log(str);
21 | return { "winter": str };
22 | }
23 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/php-7.3.txt:
--------------------------------------------------------------------------------
1 | $str];
23 | }
24 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/php-7.4.txt:
--------------------------------------------------------------------------------
1 | $str];
23 | }
24 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/python-3.txt:
--------------------------------------------------------------------------------
1 | """Python 3 Unicode test.
2 | /*
3 | * Licensed to the Apache Software Foundation (ASF) under one or more
4 | * contributor license agreements. See the NOTICE file distributed with
5 | * this work for additional information regarding copyright ownership.
6 | * The ASF licenses this file to You under the Apache License, Version 2.0
7 | * (the "License"); you may not use this file except in compliance with
8 | * the License. You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 | """
19 |
20 | def main(args):
21 | sep = args['delimiter']
22 | str = sep + " ☃ " + sep
23 | print(str)
24 | return {"winter": str}
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/python.txt:
--------------------------------------------------------------------------------
1 | """Python 3 Unicode test.
2 | /*
3 | * Licensed to the Apache Software Foundation (ASF) under one or more
4 | * contributor license agreements. See the NOTICE file distributed with
5 | * this work for additional information regarding copyright ownership.
6 | * The ASF licenses this file to You under the Apache License, Version 2.0
7 | * (the "License"); you may not use this file except in compliance with
8 | * the License. You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 | """
19 |
20 | def main(args):
21 | sep = args['delimiter']
22 | str = sep + " ☃ " + sep
23 | print(str)
24 | return {"winter": str}
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/ruby-2.5.txt:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | def main(args)
19 | str = args["delimiter"] + " ☃ " + args["delimiter"]
20 | puts str
21 | { "winter" => str }
22 | end
23 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/src/dotnet2.2/Apache.OpenWhisk.UnicodeTests.Dotnet/Apache.OpenWhisk.UnicodeTests.Dotnet.csproj:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 | netcoreapp2.2
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/src/java/unicode/build.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | plugins {
19 | id 'java'
20 | }
21 |
22 | version = '1.0'
23 |
24 | repositories {
25 | mavenCentral()
26 | }
27 |
28 | dependencies {
29 | implementation "com.google.code.gson:gson:2.6.2"
30 | }
31 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/src/java/unicode/settings.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | rootProject.name = 'unicode'
19 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/swift-4.2.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | func main(args: Any) -> Any {
19 | let dict = args as! [String:Any]
20 | if let str = dict["delimiter"] as? String {
21 | let msg = "\(str) ☃ \(str)"
22 | print(msg)
23 | return [ "winter" : msg ]
24 | } else {
25 | return [ "error" : "no delimiter" ]
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/swift-5.1.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | func main(args: Any) -> Any {
19 | let dict = args as! [String:Any]
20 | if let str = dict["delimiter"] as? String {
21 | let msg = "\(str) ☃ \(str)"
22 | print(msg)
23 | return [ "winter" : msg ]
24 | } else {
25 | return [ "error" : "no delimiter" ]
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/unicode.tests/swift-5.3.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | func main(args: Any) -> Any {
19 | let dict = args as! [String:Any]
20 | if let str = dict["delimiter"] as? String {
21 | let msg = "\(str) ☃ \(str)"
22 | print(msg)
23 | return [ "winter" : msg ]
24 | } else {
25 | return [ "error" : "no delimiter" ]
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/validInput1.json:
--------------------------------------------------------------------------------
1 | {
2 | "a key": "a value",
3 | "a bool": true,
4 | "objKey": {"b": "c"},
5 | "objKey2": {"another object": {"some string": "1111"}},
6 | "objKey3": {"json object": {"some int": 1111}},
7 | "a number arr": [1,2,3],
8 | "a string arr": ["1", "2", "3"],
9 | "a bool arr": [true, false, true],
10 | "strThatLooksLikeJSON": "{\"someKey\": \"someValue\"}"
11 | }
12 |
--------------------------------------------------------------------------------
/tests/dat/actions/validInput2.json:
--------------------------------------------------------------------------------
1 | {
2 | "payload": "test"
3 | }
4 |
--------------------------------------------------------------------------------
/tests/dat/actions/wc.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * word count utility
20 | */
21 | function main(params) {
22 | var str = params.payload.toString();
23 | var words = str.split(" ");
24 | var count = words.length;
25 | console.log("The message '"+str+"' has", count, 'words');
26 | return { count: count };
27 | }
28 |
--------------------------------------------------------------------------------
/tests/dat/actions/word_count.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "word_count",
3 | "version": "0.0.1",
4 | "publish": false,
5 | "exec": {
6 | "kind": "nodejs:20",
7 | "code": "/**\n * word count utility\n */\nfunction main(params) {\n var str = params.payload.toString();\n var words = str.split(\" \");\n var count = words.length;\n console.log(\"The message '\"+str+\"' has\", count, 'words');\n return { count: count };\n}\n"
8 | },
9 | "annotations": [],
10 | "parameters": [],
11 | "limits": {
12 | "timeout": 60000,
13 | "memory": 256,
14 | "logs": 10
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tests/dat/actions/zippedaction/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function entryPoint(args) {
19 | var pq = require("prog-quote")();
20 |
21 | return pq.next().value;
22 | }
23 |
24 | exports.main = entryPoint;
25 |
--------------------------------------------------------------------------------
/tests/dat/actions/zippedaction/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-action",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "test-action",
9 | "version": "1.0.0",
10 | "license": "Apache 2.0",
11 | "dependencies": {
12 | "prog-quote": "2.0.0"
13 | }
14 | },
15 | "node_modules/prog-quote": {
16 | "version": "2.0.0",
17 | "resolved": "https://registry.npmjs.org/prog-quote/-/prog-quote-2.0.0.tgz",
18 | "integrity": "sha1-TLBMeosV/zu/kxMQxCsBzSjcMB0=",
19 | "dependencies": {
20 | "random-js": "1.0.8"
21 | }
22 | },
23 | "node_modules/random-js": {
24 | "version": "1.0.8",
25 | "resolved": "https://registry.npmjs.org/random-js/-/random-js-1.0.8.tgz",
26 | "integrity": "sha1-lo/WiabyXWwKrHZig94vaIycGQo="
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/tests/dat/actions/zippedaction/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-action",
3 | "version": "1.0.0",
4 | "description": "An action written as an npm package.",
5 | "main": "index.js",
6 | "author": "OpenWhisk",
7 | "license": "Apache 2.0",
8 | "dependencies": {
9 | "prog-quote": "2.0.0"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/dat/apigw/testswaggerdocinvalid:
--------------------------------------------------------------------------------
1 | {
2 | "swagger": "2.0",
3 | "info": {
4 | "title": "/",
5 | "version": "1.0.0"
6 | },
7 | "paths": {
8 | "/test1": {
9 |
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/conf/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | false
5 |
6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
7 |
8 |
9 |
10 | false
11 | build/gatling.log
12 | false
13 |
14 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/nodeJSAction.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | var greeting = "Hello" + (params.text || "stranger") + "!";
20 | console.log(greeting);
21 | return { payload: greeting };
22 | }
23 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/nodeJSAsyncAction.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main(params) {
19 | var greeting = "Hello" + (params.text || "stranger") + "!";
20 | console.log(greeting);
21 | return new Promise(function (resolve, reject) {
22 | setTimeout(function () {
23 | resolve({ payload: greeting });
24 | }, 175);
25 | })
26 | }
27 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/pythonAction.py:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | def main(dict):
19 | if 'text' in dict:
20 | text = dict['text']
21 | else:
22 | text = "stranger"
23 | greeting = "Hello " + text + "!"
24 | print(greeting)
25 | return {"payload": greeting}
26 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/src/java/build.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | plugins {
19 | id 'java'
20 | }
21 |
22 | compileJava {
23 | sourceCompatibility = '1.8'
24 | targetCompatibility = '1.8'
25 | }
26 |
27 | version = '1.0'
28 |
29 | repositories {
30 | mavenCentral()
31 | }
32 |
33 | dependencies {
34 | implementation "com.google.code.gson:gson:2.6.2"
35 | }
36 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/src/java/settings.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | rootProject.name = 'gatling'
19 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/swiftAction.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | func main(args: [String:Any]) -> [String:Any] {
19 | if let text = args["text"] as? String {
20 | print("Hello " + text + "!")
21 | return [ "payload" : "Hello " + text + "!" ]
22 | } else {
23 | print("Hello stranger!")
24 | return [ "payload" : "Hello stranger!" ]
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/resources/data/users.csv:
--------------------------------------------------------------------------------
1 | uuid,key
2 | 23bc46b1-71f6-4ed5-8c54-816aa4f8c502,123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
3 | add_more_users,here
4 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/scala/org/apache/openwhisk/extension/whisk/OpenWhiskDsl.scala:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.openwhisk.extension.whisk
19 |
20 | import io.gatling.core.session.Expression
21 |
22 | trait OpenWhiskDsl {
23 | def openWhisk = OpenWhiskProtocolBuilderBase
24 |
25 | def openWhisk(requestName: Expression[String]) = new OpenWhiskActionBuilderBase(requestName)
26 | }
27 |
--------------------------------------------------------------------------------
/tests/performance/gatling_tests/src/gatling/scala/org/apache/openwhisk/extension/whisk/Predef.scala:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.openwhisk.extension.whisk
19 |
20 | object Predef extends OpenWhiskDsl
21 |
--------------------------------------------------------------------------------
/tests/performance/preparation/actions/async.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | return new Promise(function (resolve, reject) {
20 | setTimeout(function () {
21 | resolve({done: true});
22 | }, 175);
23 | })
24 | }
25 |
--------------------------------------------------------------------------------
/tests/performance/preparation/actions/noop.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | function main() {
19 | return {};
20 | }
21 |
--------------------------------------------------------------------------------
/tests/performance/wrk_tests/latency.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 | set -e
19 | currentDir="$(cd "$(dirname "$0")"; pwd)"
20 |
21 | # Host to use. Needs to include the protocol.
22 | host=$1
23 | # Credentials to use for the test. USER:PASS format.
24 | credentials=$2
25 | # Path to action src
26 | action_src=$3
27 | # How long to run the test
28 | duration=${4:-30s}
29 |
30 | $currentDir/throughput.sh $host $credentials $action_src 1 1 1 $duration
31 |
--------------------------------------------------------------------------------
/tests/performance/wrk_tests/post.lua:
--------------------------------------------------------------------------------
1 | --
2 | -- Licensed to the Apache Software Foundation (ASF) under one or more
3 | -- contributor license agreements. See the NOTICE file distributed with
4 | -- this work for additional information regarding copyright ownership.
5 | -- The ASF licenses this file to You under the Apache License, Version 2.0
6 | -- (the "License"); you may not use this file except in compliance with
7 | -- the License. You may obtain a copy of the License at
8 | --
9 | -- http://www.apache.org/licenses/LICENSE-2.0
10 | --
11 | -- Unless required by applicable law or agreed to in writing, software
12 | -- distributed under the License is distributed on an "AS IS" BASIS,
13 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | -- See the License for the specific language governing permissions and
15 | -- limitations under the License.
16 | --
17 | wrk.method = "POST"
18 |
--------------------------------------------------------------------------------
/tests/src/main/scala/org/apache/openwhisk/GradleWorkaround.scala:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.openwhisk
19 |
20 | /**
21 | * This class is a workaround for https://github.com/gradle/gradle/issues/6849
22 | */
23 | class GradleWorkaround {}
24 |
--------------------------------------------------------------------------------
/tests/src/test/resources/swagger-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "library": "okhttp-gson",
3 | "dateLibrary": "java8",
4 | "hideGenerationTimestamp": true
5 | }
6 |
--------------------------------------------------------------------------------
/tests/src/test/scala/common/Pair.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package common;
19 |
20 | public class Pair {
21 | public final String fst;
22 | public final String snd;
23 |
24 | public Pair(String a, String b) {
25 | this.fst = a;
26 | this.snd = b;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/tests/src/test/scala/org/apache/openwhisk/core/database/test/behavior/ActivationStoreBehavior.scala:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.openwhisk.core.database.test.behavior
19 |
20 | trait ActivationStoreBehavior
21 | extends ActivationStoreBehaviorBase
22 | with ActivationStoreCRUDBehaviors
23 | with ActivationStoreQueryBehaviors
24 |
--------------------------------------------------------------------------------
/tools/actionProxy/Dockerfile:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | # Dockerfile for docker skeleton (useful for running blackbox binaries, scripts, or Python 3 actions) .
19 | FROM openwhisk/dockerskeleton
20 |
--------------------------------------------------------------------------------
/tools/actionProxy/build.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | ext.dockerImageName = 'actionproxy'
19 | apply from: '../../gradle/docker.gradle'
20 |
--------------------------------------------------------------------------------
/tools/admin/src/main/resources/application.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | whisk{
19 | # tracing configuration
20 | tracing {
21 | component = "cli"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/tools/github/runDummyTests.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | set -e
20 |
21 | SCRIPTDIR=$(cd $(dirname "$0") && pwd)
22 | ROOTDIR="$SCRIPTDIR/../.."
23 |
24 | mkdir $ROOTDIR/logs
25 | echo "$(date)
" >$ROOTDIR/logs/now.html
26 | exit 0
27 |
--------------------------------------------------------------------------------
/tools/github/runMultiRuntimeTests.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | #
4 | # Licensed to the Apache Software Foundation (ASF) under one or more
5 | # contributor license agreements. See the NOTICE file distributed with
6 | # this work for additional information regarding copyright ownership.
7 | # The ASF licenses this file to You under the Apache License, Version 2.0
8 | # (the "License"); you may not use this file except in compliance with
9 | # the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | set -e
21 |
22 | SCRIPTDIR=$(cd $(dirname "$0") && pwd)
23 | ROOTDIR="$SCRIPTDIR/../.."
24 |
25 | cd $ROOTDIR/tools/travis
26 |
27 | export ORG_GRADLE_PROJECT_testSetName="REQUIRE_MULTI_RUNTIME"
28 | export GRADLE_COVERAGE=true
29 |
30 | ./setupPrereq.sh
31 |
32 | ./distDocker.sh
33 |
34 | ./setupSystem.sh
35 |
36 | ./runTests.sh
37 |
--------------------------------------------------------------------------------
/tools/github/runUnitTests.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | set -e
20 |
21 | SCRIPTDIR=$(cd $(dirname "$0") && pwd)
22 | ROOTDIR="$SCRIPTDIR/../.."
23 |
24 | cd $ROOTDIR/tools/travis
25 | export TESTCONTAINERS_RYUK_DISABLED="true"
26 | export ORG_GRADLE_PROJECT_testSetName="REQUIRE_ONLY_DB"
27 |
28 | ./setupPrereq.sh
29 |
30 | cat "$ROOTDIR/tests/src/test/resources/application.conf"
31 |
32 | ./distDocker.sh
33 |
34 | ./runTests.sh
35 |
--------------------------------------------------------------------------------
/tools/github/writeOnSlack.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | if test -z "$SLACK_WEBHOOK"
20 | then echo "Please create an incoming webhook for slack and set SLACK_WEBHOOK"
21 | exit 0
22 | fi
23 |
24 | echo -n '{"text":' >/tmp/msg$$
25 | echo -n "$@" | jq -Rsa . >>/tmp/msg$$
26 | echo -n '}' >>/tmp/msg$$
27 |
28 | curl -X POST -H 'Content-type: application/json' --data "@/tmp/msg$$" "$SLACK_WEBHOOK"
29 |
--------------------------------------------------------------------------------
/tools/ow-utils/README.md:
--------------------------------------------------------------------------------
1 |
19 |
20 | Utility image for executing tasks
21 | ================
22 |
23 | This `ow-utils` image can be used to execute various utility tasks
24 | for OpenWhisk using most of the tools that are used in the project.
25 | It includes a JDK8, python/ansible, nodejs, and standard packages
26 | such as bash, git, wget, curl, and docker.
27 |
28 | It also includes the `wsk` and `wskadmin` CLIs.
29 |
--------------------------------------------------------------------------------
/tools/owperf/owperf.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #
4 | # Licensed to the Apache Software Foundation (ASF) under one or more
5 | # contributor license agreements. See the NOTICE file distributed with
6 | # this work for additional information regarding copyright ownership.
7 | # The ASF licenses this file to You under the Apache License, Version 2.0
8 | # (the "License"); you may not use this file except in compliance with
9 | # the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # This is a simple launch script for owperf
21 |
22 | node owperf.js $@
23 |
--------------------------------------------------------------------------------
/tools/owperf/owperf_data.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/tools/owperf/owperf_data.odg
--------------------------------------------------------------------------------
/tools/owperf/owperf_data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/openwhisk/0f48cd5b32adc3867df57e0f3ad8f5acd9ea9d8e/tools/owperf/owperf_data.png
--------------------------------------------------------------------------------
/tools/owperf/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "owperf",
3 | "version": "1.0.0",
4 | "description": "owperf - a performance evaluation tool for Apache OpenWhisk",
5 | "main": "owperf.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": {
10 | "name": "Erez Hadad",
11 | "email": "erezh@il.ibm.com"
12 | },
13 | "license": "Apache-2.0",
14 | "dependencies": {
15 | "btoa": "^1.2.1",
16 | "child-process-promise": "^2.2.1",
17 | "cluster": "^0.7.7",
18 | "commander": "^2.19.0",
19 | "ini": "^1.3.5",
20 | "node-exec-promise": "^1.0.2",
21 | "openwhisk": "^3.21.7",
22 | "xmlhttprequest": "^1.8.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/tools/travis/docker.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | [Service]
18 | ExecStart=
19 | ExecStart=/usr/bin/dockerd
20 |
--------------------------------------------------------------------------------
/tools/travis/runMultiRuntimeTests.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | #
4 | # Licensed to the Apache Software Foundation (ASF) under one or more
5 | # contributor license agreements. See the NOTICE file distributed with
6 | # this work for additional information regarding copyright ownership.
7 | # The ASF licenses this file to You under the Apache License, Version 2.0
8 | # (the "License"); you may not use this file except in compliance with
9 | # the License. You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | set -e
21 |
22 | SCRIPTDIR=$(cd $(dirname "$0") && pwd)
23 | ROOTDIR="$SCRIPTDIR/../.."
24 |
25 | cd $ROOTDIR/tools/travis
26 |
27 | export ORG_GRADLE_PROJECT_testSetName="REQUIRE_MULTI_RUNTIME"
28 | export GRADLE_COVERAGE=true
29 |
30 | ./setupPrereq.sh
31 |
32 | ./distDocker.sh
33 |
34 | ./setupSystem.sh
35 |
36 | ./runTests.sh
37 |
--------------------------------------------------------------------------------
/tools/travis/runTests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | set -e
20 |
21 | # Build script for Travis-CI.
22 |
23 | SECONDS=0
24 | SCRIPTDIR=$(cd "$(dirname "$0")" && pwd)
25 | ROOTDIR="$SCRIPTDIR/../.."
26 |
27 | cd $ROOTDIR
28 | cat whisk.properties
29 | TERM=dumb ./gradlew :tests:testCoverageLean :tests:reportCoverage :tests:testSwaggerCodegen
30 |
31 | bash <(curl -s https://codecov.io/bash)
32 | echo "Time taken for ${0##*/} is $SECONDS secs"
33 |
--------------------------------------------------------------------------------
/tools/ubuntu-setup/bashprofile.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | # Adds openwhisk bin to bash profile
20 | echo 'export PATH=$HOME/openwhisk/bin:$PATH' > "$HOME/.bash_profile"
21 | # Adds tab completion
22 | echo 'eval "$(register-python-argcomplete wskadmin)"' >> "$HOME/.bash_profile"
23 |
--------------------------------------------------------------------------------
/tools/ubuntu-setup/misc.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | set -e
20 | set -x
21 |
22 | export DEBIAN_FRONTEND=noninteractive
23 |
24 | sudo apt-get update -y
25 | sudo apt-get install -y ntp git zip unzip tzdata lsb-release npm
26 |
27 | echo "Etc/UTC" | sudo tee /etc/timezone
28 | sudo dpkg-reconfigure --frontend noninteractive tzdata
29 |
30 | sudo service ntp restart
31 | sudo ntpq -c lpeer
32 |
--------------------------------------------------------------------------------
/tools/ubuntu-setup/pip.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Licensed to the Apache Software Foundation (ASF) under one or more
4 | # contributor license agreements. See the NOTICE file distributed with
5 | # this work for additional information regarding copyright ownership.
6 | # The ASF licenses this file to You under the Apache License, Version 2.0
7 | # (the "License"); you may not use this file except in compliance with
8 | # the License. You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | set -e
20 | set -x
21 |
22 | sudo apt-get install -y python-pip
23 | sudo pip install argcomplete
24 | sudo pip install couchdb
25 |
--------------------------------------------------------------------------------