-
Notifications
You must be signed in to change notification settings - Fork 38.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactored kubemark code into provider-specific and provider-independent parts [Part-2] #40622
Merged
k8s-github-robot
merged 1 commit into
kubernetes:master
from
shyamjvs:refactor-returns-again
Feb 6, 2017
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
#!/bin/bash | ||
|
||
# Copyright 2017 The Kubernetes Authors. | ||
# | ||
# Licensed 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. | ||
|
||
function create-master-instance-with-resources { | ||
GCLOUD_COMMON_ARGS="--project ${PROJECT} --zone ${ZONE}" | ||
|
||
run-gcloud-compute-with-retries disks create "${MASTER_NAME}-pd" \ | ||
${GCLOUD_COMMON_ARGS} \ | ||
--type "${MASTER_DISK_TYPE}" \ | ||
--size "${MASTER_DISK_SIZE}" | ||
|
||
if [ "${EVENT_PD:-false}" == "true" ]; then | ||
run-gcloud-compute-with-retries disks create "${MASTER_NAME}-event-pd" \ | ||
${GCLOUD_COMMON_ARGS} \ | ||
--type "${MASTER_DISK_TYPE}" \ | ||
--size "${MASTER_DISK_SIZE}" | ||
fi | ||
|
||
run-gcloud-compute-with-retries addresses create "${MASTER_NAME}-ip" \ | ||
--project "${PROJECT}" \ | ||
--region "${REGION}" -q | ||
|
||
MASTER_IP=$(gcloud compute addresses describe "${MASTER_NAME}-ip" \ | ||
--project "${PROJECT}" --region "${REGION}" -q --format='value(address)') | ||
|
||
run-gcloud-compute-with-retries instances create "${MASTER_NAME}" \ | ||
${GCLOUD_COMMON_ARGS} \ | ||
--address "${MASTER_IP}" \ | ||
--machine-type "${MASTER_SIZE}" \ | ||
--image-project="${MASTER_IMAGE_PROJECT}" \ | ||
--image "${MASTER_IMAGE}" \ | ||
--tags "${MASTER_TAG}" \ | ||
--network "${NETWORK}" \ | ||
--scopes "storage-ro,compute-rw,logging-write" \ | ||
--boot-disk-size "${MASTER_ROOT_DISK_SIZE}" \ | ||
--disk "name=${MASTER_NAME}-pd,device-name=master-pd,mode=rw,boot=no,auto-delete=no" | ||
|
||
if [ "${EVENT_PD:-false}" == "true" ]; then | ||
echo "Attaching ${MASTER_NAME}-event-pd to ${MASTER_NAME}" | ||
run-gcloud-compute-with-retries instances attach-disk "${MASTER_NAME}" \ | ||
${GCLOUD_COMMON_ARGS} \ | ||
--disk "${MASTER_NAME}-event-pd" \ | ||
--device-name="master-event-pd" | ||
fi | ||
|
||
run-gcloud-compute-with-retries firewall-rules create "${MASTER_NAME}-https" \ | ||
--project "${PROJECT}" \ | ||
--network "${NETWORK}" \ | ||
--source-ranges "0.0.0.0/0" \ | ||
--target-tags "${MASTER_TAG}" \ | ||
--allow "tcp:443" | ||
} | ||
|
||
# Command to be executed is '$1'. | ||
# No. of retries is '$2' (if provided) or 1 (default). | ||
function execute-cmd-on-master-with-retries() { | ||
RETRIES="${2:-1}" run-gcloud-compute-with-retries ssh "${MASTER_NAME}" --zone="${ZONE}" --project="${PROJECT}" --command="$1" | ||
} | ||
|
||
function copy-files() { | ||
run-gcloud-compute-with-retries copy-files --zone="${ZONE}" --project="${PROJECT}" $@ | ||
} | ||
|
||
function delete-master-instance-and-resources { | ||
GCLOUD_COMMON_ARGS="--project ${PROJECT} --zone ${ZONE} --quiet" | ||
|
||
gcloud compute instances delete "${MASTER_NAME}" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
|
||
gcloud compute disks delete "${MASTER_NAME}-pd" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
|
||
gcloud compute disks delete "${MASTER_NAME}-event-pd" \ | ||
${GCLOUD_COMMON_ARGS} &> /dev/null || true | ||
|
||
gcloud compute addresses delete "${MASTER_NAME}-ip" \ | ||
--project "${PROJECT}" \ | ||
--region "${REGION}" \ | ||
--quiet || true | ||
|
||
gcloud compute firewall-rules delete "${MASTER_NAME}-https" \ | ||
--project "${PROJECT}" \ | ||
--quiet || true | ||
|
||
if [ "${SEPARATE_EVENT_MACHINE:-false}" == "true" ]; then | ||
gcloud compute instances delete "${EVENT_STORE_NAME}" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
|
||
gcloud compute disks delete "${EVENT_STORE_NAME}-pd" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
fi | ||
} | ||
|
||
function delete-master-instance-and-resources { | ||
GCLOUD_COMMON_ARGS="--project ${PROJECT} --zone ${ZONE} --quiet" | ||
|
||
gcloud compute instances delete "${MASTER_NAME}" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
|
||
gcloud compute disks delete "${MASTER_NAME}-pd" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
|
||
gcloud compute disks delete "${MASTER_NAME}-event-pd" \ | ||
${GCLOUD_COMMON_ARGS} &> /dev/null || true | ||
|
||
gcloud compute addresses delete "${MASTER_NAME}-ip" \ | ||
--project "${PROJECT}" \ | ||
--region "${REGION}" \ | ||
--quiet || true | ||
|
||
gcloud compute firewall-rules delete "${MASTER_NAME}-https" \ | ||
--project "${PROJECT}" \ | ||
--quiet || true | ||
|
||
if [ "${SEPARATE_EVENT_MACHINE:-false}" == "true" ]; then | ||
gcloud compute instances delete "${EVENT_STORE_NAME}" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
|
||
gcloud compute disks delete "${EVENT_STORE_NAME}-pd" \ | ||
${GCLOUD_COMMON_ARGS} || true | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/bin/bash | ||
|
||
# Copyright 2017 The Kubernetes Authors. | ||
# | ||
# Licensed 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. | ||
|
||
# This script contains the helper functions that each provider hosting | ||
# Kubermark must implement to use test/kubemark/start-kubemark.sh and | ||
# test/kubemark/stop-kubemark.sh scripts. | ||
|
||
# This function should create a machine instance for the master along | ||
# with any/all of the following resources: | ||
# - Attach a PD to the master (optionally 1 more for storing events) | ||
# - A public IP address for the master ($MASTER_IP) | ||
# - A network firewall rule allowing all TCP traffic on port 443 in master | ||
# Note: This step is compulsory in order for kubemark to work | ||
# | ||
# ENV vars that should be defined by the end of this function: | ||
# 1. MASTER_IP | ||
# 2. MASTER_NAME | ||
# | ||
# Recommended for this function to include retrying logic for the above | ||
# operations in case of failures. | ||
function create-master-instance-with-resources { | ||
echo "MASTER_IP: $MASTER_IP" 1>&2 | ||
echo "MASTER_NAME: $MASTER_NAME" 1>&2 | ||
} | ||
|
||
# This function should execute the command('$1') on the master machine | ||
# (possibly through SSH), retrying in case of failure. The allowed number of | ||
# retries would be '$2' (if not provided, default to single try). | ||
function execute-cmd-on-master-with-retries() { | ||
echo "Executing command on the master" 1>&2 | ||
} | ||
|
||
# This function should act as an scp for the kubemark cluster, which copies | ||
# the files given by the first n-1 arguments to the remote location given | ||
# by the n^th argument. | ||
# | ||
# Recommended for this function to include retrying logic in case of failures. | ||
function copy-files() { | ||
echo "Copying files" 1>&2 | ||
} | ||
|
||
# This function should delete the master instance along with all the | ||
# resources that have been allocated inside the function | ||
# 'create-master-instance-with-resources' above. | ||
# | ||
# Recommended for this function to include retrying logic in case of failures. | ||
function delete-master-instance-and-resources { | ||
echo "Deleting master instance and its allocated resources" 1>&2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you want a new line after:
Otherwise RETRIES won't get set to $2, but whatever it is saved as globally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current mechanism seems to be correct as we just want to change the value of RETRIES for a particular call to
run-gcloud-compute-with-retries
function. I tested it out using this small script:Is there something I'm still missing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cool looks good. I wanted to 2x check that was intended. Thanks for clearing it up!