{"action":"created","comment":{"url":"https://api.github.com/repos/giantswarm/e2etests/pulls/comments/213960591","pull_request_review_id":150898646,"id":213960591,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMzk2MDU5MQ==","diff_hunk":"@@ -0,0 +1,256 @@\n+package provider\n+\n+import (\n+\t\"context\"\n+\t\"fmt\"\n+\t\"io/ioutil\"\n+\t\"log\"\n+\t\"os\"\n+\t\"time\"\n+\n+\t\"github.com/giantswarm/backoff\"\n+\t\"github.com/giantswarm/e2e-harness/pkg/framework\"\n+\tawsclient \"github.com/giantswarm/e2eclients/aws\"\n+\t\"github.com/giantswarm/e2etemplates/pkg/chartvalues\"\n+\t\"github.com/giantswarm/microerror\"\n+\t\"github.com/giantswarm/micrologger\"\n+\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n+)\n+\n+type AWSConfig struct {\n+\tAWSClient     *awsclient.Client\n+\tHostFramework *framework.Host\n+\tLogger        micrologger.Logger\n+\n+\tChartValuesConfig\n+}\n+\n+type AWS struct {\n+\tawsClient     *awsclient.Client\n+\thostFramework *framework.Host\n+\tlogger        micrologger.Logger\n+\n+\tchartValuesConfig ChartValuesConfig\n+\thostClusterName   string\n+}\n+\n+type ChartValuesConfig struct {\n+\tAWSAPIHostedZoneGuest     string\n+\tAWSIngressHostedZoneGuest string\n+\tAWSRegion                 string\n+\tAWSRouteTable0            string\n+\tAWSRouteTable1            string\n+\tAWSVPCPeerID              string\n+\tClusterName               string\n+\tCommonDomain              string\n+\tSSHPublicKey              string\n+\tVersionBundleVersion      string\n+}\n+\n+func NewAWS(config AWSConfig) (*AWS, error) {\n+\tif config.AWSClient == nil {\n+\t\treturn nil, microerror.Maskf(invalidConfigError, \"%T.AWSClient must not be empty\", config)\n+\t}\n+\tif config.HostFramework == nil {\n+\t\treturn nil, microerror.Maskf(invalidConfigError, \"%T.HostFramework must not be empty\", config)\n+\t}\n+\tif config.Logger == nil {\n+\t\treturn nil, microerror.Maskf(invalidConfigError, \"%T.Logger must not be empty\", config)\n+\t}\n+\n+\ta := &AWS{\n+\t\tawsClient:     config.AWSClient,\n+\t\thostFramework: config.HostFramework,\n+\t\tlogger:        config.Logger,\n+\n+\t\tchartValuesConfig: ChartValuesConfig{\n+\t\t\tAWSAPIHostedZoneGuest:     getValue(config.AWSAPIHostedZoneGuest, \"AWS_API_HOSTED_ZONE_GUEST\"),\n+\t\t\tAWSIngressHostedZoneGuest: getValue(config.AWSIngressHostedZoneGuest, \"AWS_INGRESS_HOSTED_ZONE_GUEST\"),\n+\t\t\tAWSRegion:                 getValue(config.AWSRegion, \"AWS_REGION\"),\n+\t\t\tAWSRouteTable0:            getValue(config.AWSRouteTable0, \"AWS_ROUTE_TABLE_0\"),\n+\t\t\tAWSRouteTable1:            getValue(config.AWSRouteTable1, \"AWS_ROUTE_TABLE_1\"),\n+\t\t\tCommonDomain:              getValue(config.CommonDomain, \"COMMON_DOMAIN\"),\n+\t\t\tSSHPublicKey:              getValue(config.SSHPublicKey, \"IDRSA_PUB\"),\n+\t\t\tVersionBundleVersion:      getValue(config.VersionBundleVersion, \"VERSION_BUNDLE_VERSION\"),\n+\t\t},\n+\t\thostClusterName: getValue(config.ClusterName, \"CLUSTER_NAME\"),\n+\t}\n+\n+\treturn a, nil\n+}\n+\n+func (aws *AWS) CreateCluster(clusterName string) error {\n+\tif clusterName == \"\" {\n+\t\treturn microerror.Maskf(invalidConfigError, \"clusterName must not be empty\")\n+\t}\n+\n+\thostAWSConfig, err := aws.hostFramework.AWSCluster(aws.hostClusterName)\n+\tif err != nil {\n+\t\treturn microerror.Mask(err)\n+\t}\n+\n+\terr = aws.installCertResources(clusterName)\n+\tif err != nil {\n+\t\treturn microerror.Mask(err)\n+\t}\n+\n+\tdeploymentName := awsConfigDeploymentName(clusterName)\n+\n+\to := func() error {\n+\t\terr := framework.HelmCmd(fmt.Sprintf(\"delete --purge %s\", deploymentName))\n+\t\tif err != nil {\n+\t\t\treturn microerror.Mask(err)\n+\t\t}\n+\n+\t\tf, err := ioutil.TempFile(\"/tmp\", deploymentName)\n+\t\tif err != nil {\n+\t\t\treturn microerror.Mask(err)\n+\t\t}\n+\t\tdefer func() {\n+\t\t\t// Close & remove created tempfile.\n+\t\t\tfName := f.Name()\n+\t\t\terr = f.Close()\n+\t\t\tif err != nil {\n+\t\t\t\t// XXX: Tempfile cannot be removed due to error. It must be\n+\t\t\t\t// removed manually.\n+\t\t\t\taws.logger.Log(\"level\", \"error\", \"message\", fmt.Sprintf(\"failed to close & remove tempfile '%s' - it must be removed manually\", fName))\n+\t\t\t\treturn\n+\t\t\t}\n+\t\t\terr = os.Remove(fName)\n+\t\t\tif err != nil {\n+\t\t\t\t// XXX: Tempfile cannot be removed due to error. It must be\n+\t\t\t\t// removed manually.\n+\t\t\t\taws.logger.Log(\"level\", \"error\", \"message\", fmt.Sprintf(\"failed to close & remove tempfile '%s' - it must be removed manually\", fName))\n+\t\t\t\treturn\n+\t\t\t}\n+\t\t}()\n+\n+\t\t{\n+\t\t\tc := chartvalues.APIExtensionsAWSConfigE2EConfig{\n+\t\t\t\tCommonDomain:         aws.chartValuesConfig.CommonDomain,\n+\t\t\t\tClusterName:          clusterName,\n+\t\t\t\tSSHPublicKey:         aws.chartValuesConfig.SSHPublicKey,\n+\t\t\t\tVersionBundleVersion: aws.chartValuesConfig.VersionBundleVersion,\n+\n+\t\t\t\tAWS: chartvalues.APIExtensionsAWSConfigE2EConfigAWS{\n+\t\t\t\t\tRegion:            aws.chartValuesConfig.AWSRegion,\n+\t\t\t\t\tAPIHostedZone:     aws.chartValuesConfig.AWSAPIHostedZoneGuest,\n+\t\t\t\t\tIngressHostedZone: aws.chartValuesConfig.AWSIngressHostedZoneGuest,\n+\t\t\t\t\tRouteTable0:       clusterName + \"_0\",\n+\t\t\t\t\tRouteTable1:       clusterName + \"_1\",\n+\t\t\t\t\tVPCPeerID:         hostAWSConfig.Spec.AWS.VPC.PeerID,\n+\t\t\t\t},\n+\t\t\t}\n+\n+\t\t\tvalues, err := chartvalues.NewAPIExtensionsAWSConfigE2E(c)\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\t_, err = f.WriteString(values)\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\t\t}\n+\n+\t\terr = framework.HelmCmd(fmt.Sprintf(\"registry install quay.io/giantswarm/apiextensions-aws-config-e2e-chart:stable -- -n %s --values %s\", awsConfigDeploymentName(clusterName), f.Name()))\n+\t\tif err != nil {\n+\t\t\treturn microerror.Mask(err)\n+\t\t}\n+\n+\t\treturn nil\n+\t}\n+\tb := backoff.NewConstant(framework.ShortMaxWait, framework.ShortMaxInterval)\n+\tn := func(err error, delay time.Duration) {\n+\t\tlog.Println(\"level\", \"debug\", \"message\", err.Error())\n+\t}\n+\n+\terr = backoff.RetryNotify(o, b, n)\n+\tif err != nil {\n+\t\treturn microerror.Mask(err)\n+\t}\n+\n+\treturn nil\n+}\n+\n+func (aws *AWS) DeleteCluster(clusterName string) error {\n+\tdeploymentName := awsConfigDeploymentName(clusterName)\n+\terr := framework.HelmCmd(fmt.Sprintf(\"delete --purge %s\", deploymentName))\n+\tif err != nil {\n+\t\treturn microerror.Mask(err)\n+\t}\n+\n+\treturn nil\n+}\n+\n+func (aws *AWS) installCertResources(clusterName string) error {\n+\t{\n+\t\taws.logger.Log(\"level\", \"debug\", \"message\", \"installing cert resource chart\")\n+\n+\t\to := func() error {\n+\t\t\terr := framework.HelmCmd(fmt.Sprintf(\"delete --purge %s\", certDeploymentName(clusterName)))\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\tcmdStr := fmt.Sprintf(\"registry install quay.io/giantswarm/apiextensions-cert-config-e2e-chart:stable -- -n %s --set commonDomain=${COMMON_DOMAIN} --set clusterName=%s\", certDeploymentName(clusterName), clusterName)\n+\t\t\terr = framework.HelmCmd(cmdStr)\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\treturn nil\n+\t\t}","path":"ipam/provider/aws.go","position":203,"original_position":203,"commit_id":"118d147645fca0600cac871d900b0a8916b21e3a","original_commit_id":"118d147645fca0600cac871d900b0a8916b21e3a","user":{"login":"kopiczko","id":4608994,"node_id":"MDQ6VXNlcjQ2MDg5OTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/4608994?v=4","gravatar_id":"","url":"https://api.github.com/users/kopiczko","html_url":"https://github.com/kopiczko","followers_url":"https://api.github.com/users/kopiczko/followers","following_url":"https://api.github.com/users/kopiczko/following{/other_user}","gists_url":"https://api.github.com/users/kopiczko/gists{/gist_id}","starred_url":"https://api.github.com/users/kopiczko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kopiczko/subscriptions","organizations_url":"https://api.github.com/users/kopiczko/orgs","repos_url":"https://api.github.com/users/kopiczko/repos","events_url":"https://api.github.com/users/kopiczko/events{/privacy}","received_events_url":"https://api.github.com/users/kopiczko/received_events","type":"User","site_admin":false},"body":"Can't be `Host.InstallCertResource()` used here?","created_at":"2018-08-30T09:21:14Z","updated_at":"2018-08-30T09:30:59Z","html_url":"https://github.com/giantswarm/e2etests/pull/6#discussion_r213960591","pull_request_url":"https://api.github.com/repos/giantswarm/e2etests/pulls/6","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/giantswarm/e2etests/pulls/comments/213960591"},"html":{"href":"https://github.com/giantswarm/e2etests/pull/6#discussion_r213960591"},"pull_request":{"href":"https://api.github.com/repos/giantswarm/e2etests/pulls/6"}}},"pull_request":{"url":"https://api.github.com/repos/giantswarm/e2etests/pulls/6","id":200343482,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwMzQzNDgy","html_url":"https://github.com/giantswarm/e2etests/pull/6","diff_url":"https://github.com/giantswarm/e2etests/pull/6.diff","patch_url":"https://github.com/giantswarm/e2etests/pull/6.patch","issue_url":"https://api.github.com/repos/giantswarm/e2etests/issues/6","number":6,"state":"open","locked":false,"title":"Add E2E test for guest cluster IPAM","user":{"login":"tuommaki","id":1947505,"node_id":"MDQ6VXNlcjE5NDc1MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/1947505?v=4","gravatar_id":"","url":"https://api.github.com/users/tuommaki","html_url":"https://github.com/tuommaki","followers_url":"https://api.github.com/users/tuommaki/followers","following_url":"https://api.github.com/users/tuommaki/following{/other_user}","gists_url":"https://api.github.com/users/tuommaki/gists{/gist_id}","starred_url":"https://api.github.com/users/tuommaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tuommaki/subscriptions","organizations_url":"https://api.github.com/users/tuommaki/orgs","repos_url":"https://api.github.com/users/tuommaki/repos","events_url":"https://api.github.com/users/tuommaki/events{/privacy}","received_events_url":"https://api.github.com/users/tuommaki/received_events","type":"User","site_admin":false},"body":"Guest cluster IPAM implementation is renewed architecturally as\r\nkubernetesd is going to be removed. In order to make sure that allocated\r\nnetworks are not in use, refactored IPAM implementation must be taking\r\ncloud provider state into account and therefore new implementation\r\nresides in provider specific operator (i.e. aws-operator, azure-operator\r\nand kvm-operator). This test is for verifying that these implementations\r\ncover basic use cases.","created_at":"2018-07-10T10:02:03Z","updated_at":"2018-08-30T09:30:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e9d4916a91cfc9755c0b1a195dab061c5e6cb56d","assignee":{"login":"tuommaki","id":1947505,"node_id":"MDQ6VXNlcjE5NDc1MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/1947505?v=4","gravatar_id":"","url":"https://api.github.com/users/tuommaki","html_url":"https://github.com/tuommaki","followers_url":"https://api.github.com/users/tuommaki/followers","following_url":"https://api.github.com/users/tuommaki/following{/other_user}","gists_url":"https://api.github.com/users/tuommaki/gists{/gist_id}","starred_url":"https://api.github.com/users/tuommaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tuommaki/subscriptions","organizations_url":"https://api.github.com/users/tuommaki/orgs","repos_url":"https://api.github.com/users/tuommaki/repos","events_url":"https://api.github.com/users/tuommaki/events{/privacy}","received_events_url":"https://api.github.com/users/tuommaki/received_events","type":"User","site_admin":false},"assignees":[{"login":"tuommaki","id":1947505,"node_id":"MDQ6VXNlcjE5NDc1MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/1947505?v=4","gravatar_id":"","url":"https://api.github.com/users/tuommaki","html_url":"https://github.com/tuommaki","followers_url":"https://api.github.com/users/tuommaki/followers","following_url":"https://api.github.com/users/tuommaki/following{/other_user}","gists_url":"https://api.github.com/users/tuommaki/gists{/gist_id}","starred_url":"https://api.github.com/users/tuommaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tuommaki/subscriptions","organizations_url":"https://api.github.com/users/tuommaki/orgs","repos_url":"https://api.github.com/users/tuommaki/repos","events_url":"https://api.github.com/users/tuommaki/events{/privacy}","received_events_url":"https://api.github.com/users/tuommaki/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/giantswarm/e2etests/pulls/6/commits","review_comments_url":"https://api.github.com/repos/giantswarm/e2etests/pulls/6/comments","review_comment_url":"https://api.github.com/repos/giantswarm/e2etests/pulls/comments{/number}","comments_url":"https://api.github.com/repos/giantswarm/e2etests/issues/6/comments","statuses_url":"https://api.github.com/repos/giantswarm/e2etests/statuses/118d147645fca0600cac871d900b0a8916b21e3a","head":{"label":"giantswarm:ipam-e2e-tests","ref":"ipam-e2e-tests","sha":"118d147645fca0600cac871d900b0a8916b21e3a","user":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"repo":{"id":137045084,"node_id":"MDEwOlJlcG9zaXRvcnkxMzcwNDUwODQ=","name":"e2etests","full_name":"giantswarm/e2etests","owner":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/giantswarm/e2etests","description":"Package e2etests implements primitives for e2e tests against Giant Swarm Kubernetes guest clusters. ","fork":false,"url":"https://api.github.com/repos/giantswarm/e2etests","forks_url":"https://api.github.com/repos/giantswarm/e2etests/forks","keys_url":"https://api.github.com/repos/giantswarm/e2etests/keys{/key_id}","collaborators_url":"https://api.github.com/repos/giantswarm/e2etests/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/giantswarm/e2etests/teams","hooks_url":"https://api.github.com/repos/giantswarm/e2etests/hooks","issue_events_url":"https://api.github.com/repos/giantswarm/e2etests/issues/events{/number}","events_url":"https://api.github.com/repos/giantswarm/e2etests/events","assignees_url":"https://api.github.com/repos/giantswarm/e2etests/assignees{/user}","branches_url":"https://api.github.com/repos/giantswarm/e2etests/branches{/branch}","tags_url":"https://api.github.com/repos/giantswarm/e2etests/tags","blobs_url":"https://api.github.com/repos/giantswarm/e2etests/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/giantswarm/e2etests/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/giantswarm/e2etests/git/refs{/sha}","trees_url":"https://api.github.com/repos/giantswarm/e2etests/git/trees{/sha}","statuses_url":"https://api.github.com/repos/giantswarm/e2etests/statuses/{sha}","languages_url":"https://api.github.com/repos/giantswarm/e2etests/languages","stargazers_url":"https://api.github.com/repos/giantswarm/e2etests/stargazers","contributors_url":"https://api.github.com/repos/giantswarm/e2etests/contributors","subscribers_url":"https://api.github.com/repos/giantswarm/e2etests/subscribers","subscription_url":"https://api.github.com/repos/giantswarm/e2etests/subscription","commits_url":"https://api.github.com/repos/giantswarm/e2etests/commits{/sha}","git_commits_url":"https://api.github.com/repos/giantswarm/e2etests/git/commits{/sha}","comments_url":"https://api.github.com/repos/giantswarm/e2etests/comments{/number}","issue_comment_url":"https://api.github.com/repos/giantswarm/e2etests/issues/comments{/number}","contents_url":"https://api.github.com/repos/giantswarm/e2etests/contents/{+path}","compare_url":"https://api.github.com/repos/giantswarm/e2etests/compare/{base}...{head}","merges_url":"https://api.github.com/repos/giantswarm/e2etests/merges","archive_url":"https://api.github.com/repos/giantswarm/e2etests/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/giantswarm/e2etests/downloads","issues_url":"https://api.github.com/repos/giantswarm/e2etests/issues{/number}","pulls_url":"https://api.github.com/repos/giantswarm/e2etests/pulls{/number}","milestones_url":"https://api.github.com/repos/giantswarm/e2etests/milestones{/number}","notifications_url":"https://api.github.com/repos/giantswarm/e2etests/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/giantswarm/e2etests/labels{/name}","releases_url":"https://api.github.com/repos/giantswarm/e2etests/releases{/id}","deployments_url":"https://api.github.com/repos/giantswarm/e2etests/deployments","created_at":"2018-06-12T09:00:07Z","updated_at":"2018-08-27T15:28:47Z","pushed_at":"2018-08-30T06:53:44Z","git_url":"git://github.com/giantswarm/e2etests.git","ssh_url":"git@github.com:giantswarm/e2etests.git","clone_url":"https://github.com/giantswarm/e2etests.git","svn_url":"https://github.com/giantswarm/e2etests","homepage":null,"size":7578,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"giantswarm:master","ref":"master","sha":"8391748d9b75fc5f2c3a11359331cb124cfc0451","user":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"repo":{"id":137045084,"node_id":"MDEwOlJlcG9zaXRvcnkxMzcwNDUwODQ=","name":"e2etests","full_name":"giantswarm/e2etests","owner":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/giantswarm/e2etests","description":"Package e2etests implements primitives for e2e tests against Giant Swarm Kubernetes guest clusters. ","fork":false,"url":"https://api.github.com/repos/giantswarm/e2etests","forks_url":"https://api.github.com/repos/giantswarm/e2etests/forks","keys_url":"https://api.github.com/repos/giantswarm/e2etests/keys{/key_id}","collaborators_url":"https://api.github.com/repos/giantswarm/e2etests/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/giantswarm/e2etests/teams","hooks_url":"https://api.github.com/repos/giantswarm/e2etests/hooks","issue_events_url":"https://api.github.com/repos/giantswarm/e2etests/issues/events{/number}","events_url":"https://api.github.com/repos/giantswarm/e2etests/events","assignees_url":"https://api.github.com/repos/giantswarm/e2etests/assignees{/user}","branches_url":"https://api.github.com/repos/giantswarm/e2etests/branches{/branch}","tags_url":"https://api.github.com/repos/giantswarm/e2etests/tags","blobs_url":"https://api.github.com/repos/giantswarm/e2etests/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/giantswarm/e2etests/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/giantswarm/e2etests/git/refs{/sha}","trees_url":"https://api.github.com/repos/giantswarm/e2etests/git/trees{/sha}","statuses_url":"https://api.github.com/repos/giantswarm/e2etests/statuses/{sha}","languages_url":"https://api.github.com/repos/giantswarm/e2etests/languages","stargazers_url":"https://api.github.com/repos/giantswarm/e2etests/stargazers","contributors_url":"https://api.github.com/repos/giantswarm/e2etests/contributors","subscribers_url":"https://api.github.com/repos/giantswarm/e2etests/subscribers","subscription_url":"https://api.github.com/repos/giantswarm/e2etests/subscription","commits_url":"https://api.github.com/repos/giantswarm/e2etests/commits{/sha}","git_commits_url":"https://api.github.com/repos/giantswarm/e2etests/git/commits{/sha}","comments_url":"https://api.github.com/repos/giantswarm/e2etests/comments{/number}","issue_comment_url":"https://api.github.com/repos/giantswarm/e2etests/issues/comments{/number}","contents_url":"https://api.github.com/repos/giantswarm/e2etests/contents/{+path}","compare_url":"https://api.github.com/repos/giantswarm/e2etests/compare/{base}...{head}","merges_url":"https://api.github.com/repos/giantswarm/e2etests/merges","archive_url":"https://api.github.com/repos/giantswarm/e2etests/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/giantswarm/e2etests/downloads","issues_url":"https://api.github.com/repos/giantswarm/e2etests/issues{/number}","pulls_url":"https://api.github.com/repos/giantswarm/e2etests/pulls{/number}","milestones_url":"https://api.github.com/repos/giantswarm/e2etests/milestones{/number}","notifications_url":"https://api.github.com/repos/giantswarm/e2etests/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/giantswarm/e2etests/labels{/name}","releases_url":"https://api.github.com/repos/giantswarm/e2etests/releases{/id}","deployments_url":"https://api.github.com/repos/giantswarm/e2etests/deployments","created_at":"2018-06-12T09:00:07Z","updated_at":"2018-08-27T15:28:47Z","pushed_at":"2018-08-30T06:53:44Z","git_url":"git://github.com/giantswarm/e2etests.git","ssh_url":"git@github.com:giantswarm/e2etests.git","clone_url":"https://github.com/giantswarm/e2etests.git","svn_url":"https://github.com/giantswarm/e2etests","homepage":null,"size":7578,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/giantswarm/e2etests/pulls/6"},"html":{"href":"https://github.com/giantswarm/e2etests/pull/6"},"issue":{"href":"https://api.github.com/repos/giantswarm/e2etests/issues/6"},"comments":{"href":"https://api.github.com/repos/giantswarm/e2etests/issues/6/comments"},"review_comments":{"href":"https://api.github.com/repos/giantswarm/e2etests/pulls/6/comments"},"review_comment":{"href":"https://api.github.com/repos/giantswarm/e2etests/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/giantswarm/e2etests/pulls/6/commits"},"statuses":{"href":"https://api.github.com/repos/giantswarm/e2etests/statuses/118d147645fca0600cac871d900b0a8916b21e3a"}},"author_association":"NONE"}}
{"actor":{"display_login":"kopiczko"}}