From d1845e5743809fccc2b0fe3caa15a5877278d8cd Mon Sep 17 00:00:00 2001 From: Vince Mecking Date: Thu, 11 Jun 2020 20:31:11 +0200 Subject: [PATCH] Fixed some minor bugs, did some cleanup --- repository/AWS-Core/AWSCredentials.class.st | 15 +- .../AWSEC2CredentialsProvider.class.st | 30 +-- .../AWSEC2Metadata.class.st | 9 - .../AWSEC2Service.class.st | 214 +++++++++--------- .../AWSHeaders.extension.st | 26 +-- repository/AWS-EC2InstanceMetadata/package.st | 2 +- 6 files changed, 140 insertions(+), 156 deletions(-) delete mode 100644 repository/AWS-EC2InstanceMetadata/AWSEC2Metadata.class.st diff --git a/repository/AWS-Core/AWSCredentials.class.st b/repository/AWS-Core/AWSCredentials.class.st index 5825204..ea0841b 100644 --- a/repository/AWS-Core/AWSCredentials.class.st +++ b/repository/AWS-Core/AWSCredentials.class.st @@ -116,18 +116,9 @@ AWSCredentials >> provider: anAWSCredentialsProvider [ { #category : #actions } AWSCredentials >> refresh [ - self provider - ifNotNil: [:prov | self refreshWith: prov getCredentials ] - ifNil: [ ^ self error: 'Not possible to refresh AWS Credentials.' ] -] - -{ #category : #actions } -AWSCredentials >> refreshWith: awsCredentials [ - self - setAccessKeyId: awsCredentials accessKeyId - secretKey: awsCredentials secretKey - sessionToken: awsCredentials sessionToken - expirationTime: awsCredentials expirationTime + ^ self provider + ifNotNil: [:prov | prov getCredentials ] + ifNil: [ self error: 'Not possible to refresh AWS Credentials.' ] ] { #category : #accessing } diff --git a/repository/AWS-EC2InstanceMetadata/AWSEC2CredentialsProvider.class.st b/repository/AWS-EC2InstanceMetadata/AWSEC2CredentialsProvider.class.st index b60303b..443d43f 100644 --- a/repository/AWS-EC2InstanceMetadata/AWSEC2CredentialsProvider.class.st +++ b/repository/AWS-EC2InstanceMetadata/AWSEC2CredentialsProvider.class.st @@ -1,14 +1,16 @@ -Class { - #name : #AWSEC2CredentialsProvider, - #superclass : #AWSCredentialsProvider, - #category : #'AWS-EC2InstanceMetadata' -} - -{ #category : #actions } -AWSEC2CredentialsProvider class >> getCredentials [ - | json | - json := AWSEC2Service new getCredentials. - ^ (AWSCredentials fromJsonString: json) - provider: self; - yourself -] +Class { + #name : #AWSEC2CredentialsProvider, + #superclass : #AWSCredentialsProvider, + #category : #'AWS-EC2InstanceMetadata' +} + +{ #category : #actions } +AWSEC2CredentialsProvider class >> getCredentials [ + | response | + response := AWSEC2Service new getCredentials. + ^ response + ifNotNil: [ :json | + (AWSCredentials fromJsonString: json) + provider: self; + yourself ] +] diff --git a/repository/AWS-EC2InstanceMetadata/AWSEC2Metadata.class.st b/repository/AWS-EC2InstanceMetadata/AWSEC2Metadata.class.st deleted file mode 100644 index 2063de8..0000000 --- a/repository/AWS-EC2InstanceMetadata/AWSEC2Metadata.class.st +++ /dev/null @@ -1,9 +0,0 @@ -Class { - #name : #AWSEC2Metadata, - #superclass : #AWSJsonObject, - #instVars : [ - 'host', - 'httpClient' - ], - #category : #'AWS-EC2InstanceMetadata' -} diff --git a/repository/AWS-EC2InstanceMetadata/AWSEC2Service.class.st b/repository/AWS-EC2InstanceMetadata/AWSEC2Service.class.st index abca5c9..7a579db 100644 --- a/repository/AWS-EC2InstanceMetadata/AWSEC2Service.class.st +++ b/repository/AWS-EC2InstanceMetadata/AWSEC2Service.class.st @@ -1,107 +1,107 @@ -Class { - #name : #AWSEC2Service, - #superclass : #Object, - #instVars : [ - 'host', - 'httpClient' - ], - #category : #'AWS-EC2InstanceMetadata' -} - -{ #category : #initialization } -AWSEC2Service >> createHttpClient [ - ^ZnClient new - loggingOff; - systemPolicy; - enforceHttpSuccess: false; - enforceAcceptContentType: false; - yourself - -] - -{ #category : #resources } -AWSEC2Service >> credentialsUrl [ - ^ZnUrl fromString: self host, '/latest/meta-data/iam/security-credentials/' -] - -{ #category : #api } -AWSEC2Service >> executeRequest: aRequest [ - - self getSecurityToken - ifNotNil: - [ :token | aRequest headers at: AWSHeaders x_aws_ec2_metadata_token put: token ]. - - ^self httpClient - request: aRequest; - execute; - response -] - -{ #category : #api } -AWSEC2Service >> getCredentials [ - "self new getCredentials" - - | request response role | - role := self getRole. - role ifNil: [ ^ nil ]. - request := ZnRequest get: self credentialsUrl / role. - - response := self executeRequest: request. - - ^response contents -] - -{ #category : #api } -AWSEC2Service >> getRole [ - | request response | - - request := ZnRequest get: self credentialsUrl. - - response := self executeRequest: request. - - response isError ifTrue: [ ^nil ]. - - ^response contents -] - -{ #category : #api } -AWSEC2Service >> getSecurityToken [ - "self new getSecurityToken" - | request response | - - request := ZnRequest put: self tokenUrl. - request headers at: AWSHeaders x_aws_ec2_metadata_token_ttl_seconds put: '21600'. - - response := self httpClient request: request; execute; response. - - response isBadRequest ifTrue: [ ^nil ]. - - ^response contents -] - -{ #category : #resources } -AWSEC2Service >> host [ - - ^host ifNil: [ host := 'http://169.254.169.254' ] -] - -{ #category : #accessing } -AWSEC2Service >> httpClient [ - - ^httpClient ifNil: [ httpClient := self createHttpClient ] -] - -{ #category : #resources } -AWSEC2Service >> metadataUrl [ - ^self host, '/latest/meta-data/' -] - -{ #category : #resources } -AWSEC2Service >> tokenUrl [ - ^self host, '/latest/api/token' -] - -{ #category : #resources } -AWSEC2Service >> userdataUrl [ - ^self host, '/latest/user-data' -] +Class { + #name : #AWSEC2Service, + #superclass : #Object, + #instVars : [ + 'host', + 'httpClient' + ], + #category : #'AWS-EC2InstanceMetadata' +} + +{ #category : #initialization } +AWSEC2Service >> createHttpClient [ + ^ZnClient new + loggingOff; + systemPolicy; + enforceHttpSuccess: false; + enforceAcceptContentType: false; + yourself + +] + +{ #category : #resources } +AWSEC2Service >> credentialsUrl [ + ^ZnUrl fromString: self host, '/latest/meta-data/iam/security-credentials/' +] + +{ #category : #api } +AWSEC2Service >> executeRequest: aRequest [ + + self getSecurityToken + ifNotNil: + [ :token | aRequest headers at: AWSHeaders x_aws_ec2_metadata_token put: token ]. + + ^self httpClient + request: aRequest; + execute; + response +] + +{ #category : #api } +AWSEC2Service >> getCredentials [ + "self new getCredentials" + + | request response role | + role := self getRole. + role ifNil: [ ^ nil ]. + request := ZnRequest get: self credentialsUrl / role. + + response := self executeRequest: request. + + ^response contents +] + +{ #category : #api } +AWSEC2Service >> getRole [ + | request response | + + request := ZnRequest get: self credentialsUrl. + + response := self executeRequest: request. + + response isSuccess ifFalse: [ ^nil ]. + + ^response contents +] + +{ #category : #api } +AWSEC2Service >> getSecurityToken [ + "self new getSecurityToken" + | request response | + + request := ZnRequest put: self tokenUrl. + request headers at: AWSHeaders x_aws_ec2_metadata_token_ttl_seconds put: '21600'. + + response := self httpClient request: request; execute; response. + + response isSuccess ifFalse: [ ^nil ]. + + ^response contents +] + +{ #category : #resources } +AWSEC2Service >> host [ + + ^host ifNil: [ host := 'http://169.254.169.254' ] +] + +{ #category : #accessing } +AWSEC2Service >> httpClient [ + + ^httpClient ifNil: [ httpClient := self createHttpClient ] +] + +{ #category : #resources } +AWSEC2Service >> metadataUrl [ + ^self host, '/latest/meta-data/' +] + +{ #category : #resources } +AWSEC2Service >> tokenUrl [ + ^self host, '/latest/api/token' +] + +{ #category : #resources } +AWSEC2Service >> userdataUrl [ + ^self host, '/latest/user-data' +] diff --git a/repository/AWS-EC2InstanceMetadata/AWSHeaders.extension.st b/repository/AWS-EC2InstanceMetadata/AWSHeaders.extension.st index bc124fa..e8750da 100644 --- a/repository/AWS-EC2InstanceMetadata/AWSHeaders.extension.st +++ b/repository/AWS-EC2InstanceMetadata/AWSHeaders.extension.st @@ -1,13 +1,13 @@ -Extension { #name : #AWSHeaders } - -{ #category : #'*AWS-EC2InstanceMetadata' } -AWSHeaders class >> x_aws_ec2_metadata_token [ - - ^'x-aws-ec2-metadata-token' -] - -{ #category : #'*AWS-EC2InstanceMetadata' } -AWSHeaders class >> x_aws_ec2_metadata_token_ttl_seconds [ - - ^'x-aws-ec2-metadata-token-ttl-seconds' -] +Extension { #name : #AWSHeaders } + +{ #category : #'*AWS-EC2InstanceMetadata' } +AWSHeaders class >> x_aws_ec2_metadata_token [ + + ^'x-aws-ec2-metadata-token' +] + +{ #category : #'*AWS-EC2InstanceMetadata' } +AWSHeaders class >> x_aws_ec2_metadata_token_ttl_seconds [ + + ^'x-aws-ec2-metadata-token-ttl-seconds' +] diff --git a/repository/AWS-EC2InstanceMetadata/package.st b/repository/AWS-EC2InstanceMetadata/package.st index 9b3f682..98ebfef 100644 --- a/repository/AWS-EC2InstanceMetadata/package.st +++ b/repository/AWS-EC2InstanceMetadata/package.st @@ -1 +1 @@ -Package { #name : #'AWS-EC2InstanceMetadata' } +Package { #name : #'AWS-EC2InstanceMetadata' }