diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 7cce7e64..9396c877 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 name: CI
 
 on:
diff --git a/.gitignore b/.gitignore
index c74ccda7..e4310c2f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@ ccm.egg-info/
 dse_creds.txt
 .eggs/
 junit.xml
+/nbproject/
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 00000000..be6080c3
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,61 @@
+Apache Cassandra Cluster Manager
+Copyright 2024 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+
+This product originates, before git sha
+cc8cb98b29f68d12c8b5fa093a33dc3b346873b3, from software from DataStax
+and other individual contributors.
+
+Non-DataStax contributors are listed below. Those marked with
+asterisk have agreed to donate (copyright assign) their contributions to the
+Apache Software Foundation, signing CLAs when appropriate.
+
+Kishan Karunaratne <kishan@karu.io>
+Lucas Meneghel @lmr
+Joaquin Casares @joaquincasares
+Andrew Hust @nutbunnies
+Jaume Marhuenda <jaumemarhuenda@gmail.com>
+Daniel Compton <desk+github@danielcompton.net> *
+??? @steveandwang
+Byron Clark <byron@theclarkfamily.name> *
+Thibault Charbonnier @thibaultcha
+Greg Bestland @GregBestland
+??? @c-kodman
+Sandeep Tamhankar @stamhankar999
+Tomek Bujok @tombujok
+Pekka Enberg <penberg@iki.fi>
+Brian Weck @bweck
+Dimitri Krassovski <labria@startika.com> *
+??? @nattochaduke-yahoo
+??? @pydeveloper94
+Geet Kumar @gkumar7
+??? @scharron
+Eric Stevens @MightyE *
+Rui Chen <rui@hexpunks.org>
+??? @ezacks-barracuda
+Tetsuya Morimoto @t2y
+Casey Marshall @csmlyve
+??? @jillichrome
+??? @ekooiker *
+Chris Bargren <cbargren@gmail.com>
+Xian Yi Teng <xytxytxyt@gmail.com>
+Stefano Ortolani @ostefano *
+Cormoran <cormoran707@gmail.com>
+??? @hatokani2
+??? @jeremycnf
+Samuel Roberts @sproberts92
+Alexei Maridashvili <alexei.maridashvili@gmail.com> *
+Michael Hamm <mikejameshamm@gmail.com> *
+Lerh Low @juiceblender
+Peter Palaga <ppalaga@redhat.com> *
+Hannu Kröger @hkroger *
+Jacob Fenwick <jacob.fenwick@gmail.com>
+Ulises Cervino Beresi <ulises.cervino@gmail.com> *
+Jack Kingsman @jkingsman *
+Yasuharu Goto <matope.ono@gmail.com>
+David Sauer <david@nur-mal-so-am-ran.de>
+Nick Bailey <nickmbailey@gmail.com> *
+Alex Popescu @al3xandru
diff --git a/README-CASSANDRA-17379.md.md b/README-CASSANDRA-17379.md.md
new file mode 100644
index 00000000..604d4938
--- /dev/null
+++ b/README-CASSANDRA-17379.md.md
@@ -0,0 +1,34 @@
+CCM (Cassandra Cluster Manager)
+CASSANDRA-17379 README
+====================================================
+
+
+---- 
+ 
+
+
+WARNING - CCM configuration changes using updateconf does not happen according to CASSANDRA-17379
+-------------------------------------------------------------------------------------------------
+
+After CASSANDRA-15234, to support the Python upgrade tests CCM updateconf is replacing
+new key name and value in case the old key name and value is provided.
+For example, if you add to config `permissions_validity_in_ms`, it will replace
+`permissions_validity` in default cassandra.yaml
+This was needed to ensure correct overloading as CCM cassandra.yaml has keys
+sorted lexicographically. CASSANDRA-17379 was opened to improve the user experience
+and deprecate the overloading of parameters in cassandra.yaml. In CASSANDRA 4.1+, by default,
+we refuse starting Cassandra with a config containing both old and new config keys for the
+same parameter. Start Cassandra with `-Dcassandra.allow_new_old_config_keys=true` to override.
+For historical reasons duplicate config keys in cassandra.yaml are allowed by default, start
+Cassandra with `-Dcassandra.allow_duplicate_config_keys=false` to disallow this. Please note
+that key_cache_save_period, row_cache_save_period, counter_cache_save_period will be affected
+only by `-Dcassandra.allow_duplicate_config_keys`. Ticket CASSANDRA-17949 was opened to decide
+the future of CCM updateconf post CASSANDRA-17379, until then - bear in mind that old replace
+new parameters' in cassandra.yaml when using updateconf even if
+`-Dcassandra.allow_new_old_config_keys=false` is set by default.
+
+TLDR Do not exercise overloading of parameters in CCM if possible. Also, the mentioned changes
+are done only in master branch. Probably the best way to handle cassandra 4.1 in CCM at this
+point is to set `-Dcassandra.allow_new_old_config_keys=false` and
+`-Dcassandra.allow_duplicate_config_keys=false`
+to prohibit any kind of overloading when using CCM master and CCM released versions
diff --git a/README.md b/README.md
index e75d7d95..2340e74f 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,6 @@
 CCM (Cassandra Cluster Manager)
 ====================================================
 
-WARNING - CCM configuration changes using updateconf does not happen according to CASSANDRA-17379
--------------------------------------------------------------------------------------------------
-
-After CASSANDRA-15234, to support the Python upgrade tests CCM updateconf is replacing
-new key name and value in case the old key name and value is provided.  
-For example, if you add to config `permissions_validity_in_ms`, it will replace 
-`permissions_validity` in default cassandra.yaml 
-This was needed to ensure correct overloading as CCM cassandra.yaml has keys 
-sorted lexicographically. CASSANDRA-17379 was opened to improve the user experience 
-and deprecate the overloading of parameters in cassandra.yaml. In CASSANDRA 4.1+, by default, 
-we refuse starting Cassandra with a config containing both old and new config keys for the
-same parameter. Start Cassandra with `-Dcassandra.allow_new_old_config_keys=true` to override.
-For historical reasons duplicate config keys in cassandra.yaml are allowed by default, start 
-Cassandra with `-Dcassandra.allow_duplicate_config_keys=false` to disallow this. Please note
-that key_cache_save_period, row_cache_save_period, counter_cache_save_period will be affected 
-only by `-Dcassandra.allow_duplicate_config_keys`. Ticket CASSANDRA-17949 was opened to decide
-the future of CCM updateconf post CASSANDRA-17379, until then - bear in mind that old replace 
-new parameters' in cassandra.yaml when using updateconf even if 
-`-Dcassandra.allow_new_old_config_keys=false` is set by default. 
-
-TLDR Do not exercise overloading of parameters in CCM if possible. Also, the mentioned changes
-are done only in master branch. Probably the best way to handle cassandra 4.1 in CCM at this 
-point is to set `-Dcassandra.allow_new_old_config_keys=false` and 
-`-Dcassandra.allow_duplicate_config_keys=false` 
-to prohibit any kind of overloading when using CCM master and CCM released versions
-
-
-CCM (Cassandra Cluster Manager)
-====================================================
 
 A script/library to create, launch and remove an Apache Cassandra cluster on
 localhost.
@@ -391,6 +362,3 @@ how to use ccmlib follows:
     # after the test, you can leave the cluster running, you can stop all nodes
     # using cluster.stop() but keep the data around (in CLUSTER_PATH/test), or
     # you can remove everything with cluster.remove()
-
---
-Sylvain Lebresne <sylvain@datastax.com>
diff --git a/ccmlib/__init__.py b/ccmlib/__init__.py
index e69de29b..9a9e2094 100644
--- a/ccmlib/__init__.py
+++ b/ccmlib/__init__.py
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
diff --git a/ccmlib/cluster.py b/ccmlib/cluster.py
index bca53108..22cb6281 100644
--- a/ccmlib/cluster.py
+++ b/ccmlib/cluster.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 # ccm clusters
 from __future__ import absolute_import
 
diff --git a/ccmlib/cluster_factory.py b/ccmlib/cluster_factory.py
index 977e8585..ee53116e 100644
--- a/ccmlib/cluster_factory.py
+++ b/ccmlib/cluster_factory.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 
 from __future__ import absolute_import
 
diff --git a/ccmlib/cmds/__init__.py b/ccmlib/cmds/__init__.py
index e69de29b..9a9e2094 100644
--- a/ccmlib/cmds/__init__.py
+++ b/ccmlib/cmds/__init__.py
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
diff --git a/ccmlib/cmds/cluster_cmds.py b/ccmlib/cmds/cluster_cmds.py
index 9579c582..86bae65f 100644
--- a/ccmlib/cmds/cluster_cmds.py
+++ b/ccmlib/cmds/cluster_cmds.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 
 from __future__ import absolute_import
 
diff --git a/ccmlib/cmds/command.py b/ccmlib/cmds/command.py
index 8d507075..fe7e3af0 100644
--- a/ccmlib/cmds/command.py
+++ b/ccmlib/cmds/command.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 
 from __future__ import absolute_import
 
diff --git a/ccmlib/cmds/node_cmds.py b/ccmlib/cmds/node_cmds.py
index c8f9cade..46efc3b8 100644
--- a/ccmlib/cmds/node_cmds.py
+++ b/ccmlib/cmds/node_cmds.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 
 from __future__ import absolute_import
 
diff --git a/ccmlib/common.py b/ccmlib/common.py
index 33c3e6fa..320f42dc 100644
--- a/ccmlib/common.py
+++ b/ccmlib/common.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 #
 # Cassandra Cluster Management lib
 #
diff --git a/ccmlib/dse_cluster.py b/ccmlib/dse_cluster.py
index 23b3b52e..75ff7610 100644
--- a/ccmlib/dse_cluster.py
+++ b/ccmlib/dse_cluster.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 # ccm clusters
 
 from __future__ import absolute_import
diff --git a/ccmlib/dse_node.py b/ccmlib/dse_node.py
index 1b1dd7b9..b5634fa2 100644
--- a/ccmlib/dse_node.py
+++ b/ccmlib/dse_node.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 # ccm node
 from __future__ import absolute_import, with_statement
 
diff --git a/ccmlib/extension.py b/ccmlib/extension.py
index c8e94d84..259e0d84 100644
--- a/ccmlib/extension.py
+++ b/ccmlib/extension.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 PRE_CLUSTER_START_HOOKS = []
 POST_CLUSTER_START_HOOKS = []
 PRE_CLUSTER_STOP_HOOKS = []
diff --git a/ccmlib/node.py b/ccmlib/node.py
index a2b1a766..1969d23b 100644
--- a/ccmlib/node.py
+++ b/ccmlib/node.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 # ccm node
 from __future__ import absolute_import, with_statement
 
diff --git a/ccmlib/remote.py b/ccmlib/remote.py
index e54a79f4..72d070bd 100644
--- a/ccmlib/remote.py
+++ b/ccmlib/remote.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 #
 # Remote execution helper functionality for executing CCM commands on a remote
 # machine with CCM installed
diff --git a/ccmlib/repository.py b/ccmlib/repository.py
index 81d7f299..a90ed28b 100644
--- a/ccmlib/repository.py
+++ b/ccmlib/repository.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 # downloaded sources handling
 from __future__ import absolute_import, division, with_statement
 
diff --git a/misc/Vagrantfile b/misc/Vagrantfile
index d63f87a7..5e852215 100644
--- a/misc/Vagrantfile
+++ b/misc/Vagrantfile
@@ -1,4 +1,20 @@
 # -*- mode: ruby -*-
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 # vi: set ft=ruby :
 
 # Configure defaults and/or allow to be overridden
diff --git a/misc/ccm-completion.bash b/misc/ccm-completion.bash
index 2bbfa91a..2f35c2df 100644
--- a/misc/ccm-completion.bash
+++ b/misc/ccm-completion.bash
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
 ##############################################################################
 # ccm-completion.bash
 #
diff --git a/misc/ccm-macos.bash b/misc/ccm-macos.bash
index 4af94faf..650a9f0f 100755
--- a/misc/ccm-macos.bash
+++ b/misc/ccm-macos.bash
@@ -1,4 +1,19 @@
 #!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 
 CLUSTER_NAME=${CLUSTER_NAME:-test}
 NUM_NODES=${NUM_NODES:-3}
diff --git a/requirements.txt b/requirements.txt
index 01638980..a22ad062 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 pyYaml
 six >=1.4.1
 psutil
diff --git a/setup.py b/setup.py
old mode 100755
new mode 100644
index d6c6d084..cff48b20
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 #!/usr/bin/env python
 
 from platform import system
diff --git a/tests/__init__.py b/tests/__init__.py
index 05a5414d..c34733f1 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 import sys
 
 
diff --git a/tests/ccmtest.py b/tests/ccmtest.py
index c63f50f4..40047f4e 100644
--- a/tests/ccmtest.py
+++ b/tests/ccmtest.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 import os
 from unittest import TestCase
 
diff --git a/tests/conftest.py b/tests/conftest.py
index c1a375fb..6afbfc9b 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 import os
 import pytest
 import shutil
diff --git a/tests/requirements.txt b/tests/requirements.txt
index 73b16c00..2a95d111 100644
--- a/tests/requirements.txt
+++ b/tests/requirements.txt
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 mock==5.1.0
 pytest==8.2.1
 requests==2.32.2
diff --git a/tests/test_common.py b/tests/test_common.py
index 063a1e7f..0ecf52fb 100644
--- a/tests/test_common.py
+++ b/tests/test_common.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 import unittest
 from mock import patch
 
diff --git a/tests/test_lib.py b/tests/test_lib.py
index f7d2e41f..370b1a62 100644
--- a/tests/test_lib.py
+++ b/tests/test_lib.py
@@ -1,3 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
 import os
 import sys
 import tempfile