Skip to content

Commit a9c0865

Browse files
committed
Remove old binderhub.build.Build
1 parent 8c7f69a commit a9c0865

File tree

4 files changed

+37
-161
lines changed

4 files changed

+37
-161
lines changed

binderhub/app.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -868,22 +868,15 @@ def initialize(self, *args, **kwargs):
868868
self.tornado_settings.update(
869869
{
870870
"log_function": log_request,
871-
"push_secret": self.push_secret,
872871
"image_prefix": self.image_prefix,
873872
"debug": self.debug,
874873
"launcher": self.launcher,
875-
"appendix": self.appendix,
876874
"ban_networks": self.ban_networks,
877875
"ban_networks_min_prefix_len": self.ban_networks_min_prefix_len,
878-
"build_namespace": self.build_namespace,
879-
"build_image": self.build_image,
880-
"build_node_selector": self.build_node_selector,
881876
"build_pool": self.build_pool,
882877
"build_token_check_origin": self.build_token_check_origin,
883878
"build_token_secret": self.build_token_secret,
884879
"build_token_expires_seconds": self.build_token_expires_seconds,
885-
"sticky_builds": self.sticky_builds,
886-
"log_tail_lines": self.log_tail_lines,
887880
"pod_quota": self.pod_quota,
888881
"per_repo_quota": self.per_repo_quota,
889882
"per_repo_quota_higher": self.per_repo_quota_higher,
@@ -901,9 +894,6 @@ def initialize(self, *args, **kwargs):
901894
"banner_message": self.banner_message,
902895
"extra_footer_scripts": self.extra_footer_scripts,
903896
"jinja2_env": jinja_env,
904-
"build_memory_limit": self.build_memory_limit,
905-
"build_memory_request": self.build_memory_request,
906-
"build_docker_host": self.build_docker_host,
907897
"build_docker_config": self.build_docker_config,
908898
"base_url": self.base_url,
909899
"badge_base_url": self.badge_base_url,

binderhub/build.py

Lines changed: 7 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ class BuildExecutor(LoggingConfigurable):
7777

7878
git_credentials = Unicode(
7979
"",
80-
allow_none=True,
8180
help=(
8281
"Git credentials to use when cloning the repository, passed via the GIT_CREDENTIAL_ENV environment variable."
8382
"Can be anything that will be accepted by git as a valid output from a git-credential helper. "
@@ -88,7 +87,6 @@ class BuildExecutor(LoggingConfigurable):
8887

8988
push_secret = Unicode(
9089
"",
91-
allow_none=True,
9290
help="Implementation dependent secret for pushing image to a registry.",
9391
config=True,
9492
)
@@ -220,6 +218,13 @@ def _default_api(self):
220218
kubernetes.config.load_kube_config()
221219
return client.CoreV1Api()
222220

221+
# Overrides the default for BuildExecutor
222+
push_secret = Unicode(
223+
"binder-build-docker-config",
224+
help="Implementation dependent secret for pushing image to a registry.",
225+
config=True,
226+
)
227+
223228
namespace = Unicode(
224229
help="Kubernetes namespace to spawn build pods into", config=True
225230
)
@@ -732,89 +737,3 @@ def stream_logs(self):
732737
}
733738
),
734739
)
735-
736-
737-
class Build(KubernetesBuildExecutor):
738-
"""DEPRECATED: Use KubernetesBuildExecutor and configure with Traitlets
739-
740-
Represents a build of a git repository into a docker image.
741-
742-
This ultimately maps to a single pod on a kubernetes cluster. Many
743-
different build objects can point to this single pod and perform
744-
operations on the pod. The code in this class needs to be careful and take
745-
this into account.
746-
747-
For example, operations a Build object tries might not succeed because
748-
another Build object pointing to the same pod might have done something
749-
else. This should be handled gracefully, and the build object should
750-
reflect the state of the pod as quickly as possible.
751-
752-
``name``
753-
The ``name`` should be unique and immutable since it is used to
754-
sync to the pod. The ``name`` should be unique for a
755-
``(repo_url, ref)`` tuple, and the same tuple should correspond
756-
to the same ``name``. This allows use of the locking provided by k8s
757-
API instead of having to invent our own locking code.
758-
759-
"""
760-
761-
"""
762-
For backwards compatibility: BinderHub previously assumed a single cleaner for all builds
763-
"""
764-
_cleaners = {}
765-
766-
def __init__(
767-
self,
768-
q,
769-
api,
770-
name,
771-
*,
772-
namespace,
773-
repo_url,
774-
ref,
775-
build_image,
776-
docker_host,
777-
image_name,
778-
git_credentials=None,
779-
push_secret=None,
780-
memory_limit=0,
781-
memory_request=0,
782-
node_selector=None,
783-
appendix="",
784-
log_tail_lines=100,
785-
sticky_builds=False,
786-
):
787-
warnings.warn(
788-
"Class Build is deprecated, use KubernetesBuildExecutor and configure with Traitlets",
789-
DeprecationWarning,
790-
)
791-
792-
super().__init__()
793-
794-
self.q = q
795-
self.api = api
796-
self.repo_url = repo_url
797-
self.ref = ref
798-
self.name = name
799-
self.namespace = namespace
800-
self.image_name = image_name
801-
self.push_secret = push_secret
802-
self.build_image = build_image
803-
self.memory_limit = memory_limit
804-
self.memory_request = memory_request
805-
self.docker_host = docker_host
806-
self.node_selector = node_selector
807-
self.appendix = appendix
808-
self.log_tail_lines = log_tail_lines
809-
self.git_credentials = git_credentials
810-
self.sticky_builds = sticky_builds
811-
812-
@classmethod
813-
def cleanup_builds(cls, kube, namespace, max_age):
814-
"""Delete stopped build pods and build pods that have aged out"""
815-
key = (kube, namespace, max_age)
816-
if key not in Build._cleaners:
817-
Build._cleaners[key] = KubernetesCleaner(
818-
kube=kube, namespace=namespace, max_age=max_age
819-
)
820-
Build._cleaners[key].cleanup()

binderhub/builder.py

Lines changed: 21 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from tornado.web import Finish, authenticated
2323

2424
from .base import BaseHandler
25-
from .build import Build, ProgressEvent
25+
from .build import ProgressEvent
2626
from .quota import LaunchQuotaExceeded
2727

2828
# Separate buckets for builds and launches.
@@ -437,64 +437,31 @@ async def get(self, provider_prefix, _unescaped_spec):
437437
# Prepare to build
438438
q = Queue()
439439

440-
if self.settings["use_registry"] or self.settings["build_docker_config"]:
441-
push_secret = self.settings["push_secret"]
442-
else:
443-
push_secret = None
440+
# if self.settings["use_registry"] or self.settings["build_docker_config"]:
441+
# push_secret = self.settings["push_secret"]
442+
# else:
443+
# push_secret = None
444444

445445
BuildClass = self.settings.get("build_class")
446446

447-
appendix = self.settings["appendix"].format(
448-
binder_url=self.binder_launch_host + self.binder_request,
449-
persistent_binder_url=self.binder_launch_host
450-
+ self.binder_persistent_request,
447+
# appendix = self.settings["appendix"].format(
448+
# binder_url=self.binder_launch_host + self.binder_request,
449+
# persistent_binder_url=self.binder_launch_host
450+
# + self.binder_persistent_request,
451+
# repo_url=repo_url,
452+
# ref_url=self.ref_url,
453+
# )
454+
455+
build = BuildClass(
456+
# All other properties should be set in traitlets config
457+
parent=self.settings["traitlets_parent"],
458+
q=q,
459+
name=build_name,
451460
repo_url=repo_url,
452-
ref_url=self.ref_url,
461+
ref=ref,
462+
image_name=image_name,
463+
git_credentials=provider.git_credentials,
453464
)
454-
455-
if issubclass(BuildClass, Build):
456-
# Deprecated, see docstring of the Build class for more details
457-
build = BuildClass(
458-
q=q,
459-
# api object can be None if we are using FakeBuild
460-
api=self.settings.get("kubernetes_client"),
461-
name=build_name,
462-
namespace=self.settings["build_namespace"],
463-
repo_url=repo_url,
464-
ref=ref,
465-
image_name=image_name,
466-
push_secret=push_secret,
467-
build_image=self.settings["build_image"],
468-
memory_limit=self.settings["build_memory_limit"],
469-
memory_request=self.settings["build_memory_request"],
470-
docker_host=self.settings["build_docker_host"],
471-
node_selector=self.settings["build_node_selector"],
472-
appendix=appendix,
473-
log_tail_lines=self.settings["log_tail_lines"],
474-
git_credentials=provider.git_credentials,
475-
sticky_builds=self.settings["sticky_builds"],
476-
)
477-
else:
478-
build = BuildClass(
479-
# Commented properties should be set in traitlets config
480-
parent=self.settings["traitlets_parent"],
481-
q=q,
482-
name=build_name,
483-
# namespace=self.settings["build_namespace"],
484-
repo_url=repo_url,
485-
ref=ref,
486-
image_name=image_name,
487-
# push_secret=push_secret,
488-
# build_image=self.settings["build_image"],
489-
# memory_limit=self.settings["build_memory_limit"],
490-
# memory_request=self.settings["build_memory_request"],
491-
# docker_host=self.settings["build_docker_host"],
492-
# node_selector=self.settings["build_node_selector"],
493-
# appendix=appendix,
494-
# log_tail_lines=self.settings["log_tail_lines"],
495-
git_credentials=provider.git_credentials,
496-
# sticky_builds=self.settings["sticky_builds"],
497-
)
498465
self.build = build
499466

500467
with BUILDS_INPROGRESS.track_inprogress():

binderhub/tests/test_build.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from tornado.httputil import url_concat
1414
from tornado.queues import Queue
1515

16-
from binderhub.build import Build, KubernetesBuildExecutor, ProgressEvent
16+
from binderhub.build import KubernetesBuildExecutor, ProgressEvent
1717
from binderhub.build_local import LocalRepo2dockerBuild, ProcessTerminated, _execute_cmd
1818

1919
from .utils import async_requests
@@ -143,8 +143,8 @@ def test_default_affinity():
143143

144144
mock_k8s_api = _list_image_builder_pods_mock()
145145

146-
build = Build(
147-
mock.MagicMock(),
146+
build = KubernetesBuildExecutor(
147+
q=mock.MagicMock(),
148148
api=mock_k8s_api,
149149
name="test_build",
150150
namespace="build_namespace",
@@ -154,7 +154,7 @@ def test_default_affinity():
154154
image_name="name",
155155
push_secret="",
156156
memory_limit=0,
157-
git_credentials=None,
157+
git_credentials="",
158158
docker_host="http://mydockerregistry.local",
159159
node_selector={},
160160
)
@@ -171,8 +171,8 @@ def test_sticky_builds_affinity():
171171
# Setup some mock objects for the response from the k8s API
172172
mock_k8s_api = _list_image_builder_pods_mock()
173173

174-
build = Build(
175-
mock.MagicMock(),
174+
build = KubernetesBuildExecutor(
175+
q=mock.MagicMock(),
176176
api=mock_k8s_api,
177177
name="test_build",
178178
namespace="build_namespace",
@@ -182,7 +182,7 @@ def test_sticky_builds_affinity():
182182
image_name="name",
183183
push_secret="",
184184
memory_limit=0,
185-
git_credentials=None,
185+
git_credentials="",
186186
docker_host="http://mydockerregistry.local",
187187
node_selector={},
188188
sticky_builds=True,
@@ -209,8 +209,8 @@ def test_git_credentials_passed_to_podspec_upon_submit():
209209

210210
mock_k8s_api = _list_image_builder_pods_mock()
211211

212-
build = Build(
213-
mock.MagicMock(),
212+
build = KubernetesBuildExecutor(
213+
q=mock.MagicMock(),
214214
api=mock_k8s_api,
215215
name="test_build",
216216
namespace="build_namespace",

0 commit comments

Comments
 (0)