示例#1
0
    def test_transform_ok(self):
        bindings = YamlBindings()
        bindings.import_dict({
            'a': {
                'b': {
                    'space': 'WithSpace',
                    'empty': 'Empty'
                }
            },
            'x': {
                'unique': True
            }
        })
        template = """
a:
  b:
    space: {space}
    empty:{empty}
unique:
  b:
     space: A
     empty:
"""
        source = template.format(space='SPACE', empty='')
        expect = template.format(space='WithSpace', empty=' Empty')
        got = source
        for key in ['a.b.space', 'a.b.empty']:
            got = bindings.transform_yaml_source(got, key)

        self.assertEqual(expect,
                         bindings.transform_yaml_source(expect, 'bogus'))
        self.assertEqual(expect, got)
示例#2
0
  def test_transform_ok(self):
     bindings = YamlBindings()
     bindings.import_dict({'a': {'b': { 'space': 'WithSpace',
                                        'nospace': 'WithoutSpace',
                                        'empty': 'Empty'}},
                           'x' : {'unique': True}})
     template = """
a:
  b:
    space: {space}
    nospace:{nospace}
    empty:{empty}
unique:
  b:
     space: A
     nospace:B
     empty:
"""
     source = template.format(space='SPACE', nospace='NOSPACE', empty='')
     expect = template.format(space='WithSpace',
                              nospace=' WithoutSpace',
                              empty=' Empty')
     got = source
     for key in [ 'a.b.space', 'a.b.nospace', 'a.b.empty' ]:
       got = bindings.transform_yaml_source(got, key)

     self.assertEqual(expect, bindings.transform_yaml_source(expect, 'bogus'))
     self.assertEqual(expect, got)
示例#3
0
def populate_google_yml(content):
    credentials = {'project': '', 'jsonPath': ''}
    google_dict = {
        'enabled': False,
        'defaultRegion': 'us-central1',
        'defaultZone': 'us-central1-f',
    }

    google_dict['primaryCredentials'] = credentials

    if is_google_instance():
        zone = os.path.basename(
            check_fetch(GOOGLE_INSTANCE_METADATA_URL + '/zone',
                        google=True).content)
        google_dict['enabled'] = 'true'
        google_dict['defaultRegion'] = zone[:-2]
        google_dict['defaultZone'] = zone
        credentials['project'] = check_fetch(GOOGLE_METADATA_URL +
                                             '/project/project-id',
                                             google=True).content

    bindings = YamlBindings()
    bindings.import_dict({'providers': {'google': google_dict}})
    content = bindings.transform_yaml_source(content,
                                             'providers.google.enabled')
    content = bindings.transform_yaml_source(content,
                                             'providers.google.defaultRegion')
    content = bindings.transform_yaml_source(content,
                                             'providers.google.defaultZone')
    content = bindings.transform_yaml_source(
        content, 'providers.google.primaryCredentials.project')
    content = bindings.transform_yaml_source(
        content, 'providers.google.primaryCredentials.jsonPath')

    return content
示例#4
0
def populate_google_yml(content):
  credentials = {'project': '', 'jsonPath': ''}
  google_dict = {'enabled': False,
                 'defaultRegion': 'us-central1',
                 'defaultZone': 'us-central1-f',}

  google_dict['primaryCredentials'] = credentials

  if is_google_instance():
      zone = os.path.basename(
           check_fetch(GOOGLE_INSTANCE_METADATA_URL + '/zone',
                       google=True).content)
      google_dict['enabled'] = 'true'
      google_dict['defaultRegion'] = zone[:-2]
      google_dict['defaultZone'] = zone
      credentials['project'] = check_fetch(
            GOOGLE_METADATA_URL + '/project/project-id', google=True).content

  bindings = YamlBindings()
  bindings.import_dict({'providers': {'google': google_dict}})
  content = bindings.transform_yaml_source(content, 'providers.google.enabled')
  content = bindings.transform_yaml_source(
      content, 'providers.google.defaultRegion')
  content = bindings.transform_yaml_source(
      content, 'providers.google.defaultZone')
  content = bindings.transform_yaml_source(
      content, 'providers.google.primaryCredentials.project')
  content = bindings.transform_yaml_source(
      content, 'providers.google.primaryCredentials.jsonPath')

  return content
示例#5
0
  def test_transform_fail(self):
     bindings = YamlBindings()
     bindings.import_dict({'a': {'b': { 'child': 'Hello, World!'}},
                           'x' : {'unique': True}})
     yaml = """
a:
  b:
     child: Hello
"""
     with self.assertRaises(ValueError):
       bindings.transform_yaml_source(yaml, 'x.unique')
示例#6
0
  def test_transform_fail(self):
     bindings = YamlBindings()
     bindings.import_dict({'a': {'b': { 'child': 'Hello, World!'}},
                           'x' : {'unique': True}})
     yaml = """
a:
  b:
     child: Hello
"""
     with self.assertRaises(ValueError):
       bindings.transform_yaml_source(yaml, 'x.unique')
示例#7
0
def populate_aws_yml(content):
  aws_dict = {'enabled': False}
  if is_aws_instance():
      zone = (check_fetch(AWS_METADATA_URL + '/placement/availability-zone')
              .content)
      aws_dict['enabled'] = 'true'
      aws_dict['defaultRegion'] = zone[:-1]
  elif os.path.exists(os.path.join(os.environ['HOME'], '.aws/credentials')):
      aws_dict['enabled'] = 'true'
      aws_dict['defaultRegion'] = 'us-east-1'

  bindings = YamlBindings()
  bindings.import_dict({'providers': {'aws': aws_dict}})
  content = bindings.transform_yaml_source(content, 'providers.aws.enabled')
  content = bindings.transform_yaml_source(content,
                                           'providers.aws.defaultRegion')

  return content
示例#8
0
def populate_aws_yml(content):
    aws_dict = {'enabled': False}
    if is_aws_instance():
        zone = (check_fetch(AWS_METADATA_URL +
                            '/placement/availability-zone').content)
        aws_dict['enabled'] = 'true'
        aws_dict['defaultRegion'] = zone[:-1]
    elif os.path.exists(os.path.join(os.environ['HOME'], '.aws/credentials')):
        aws_dict['enabled'] = 'true'
        aws_dict['defaultRegion'] = 'us-east-1'

    bindings = YamlBindings()
    bindings.import_dict({'providers': {'aws': aws_dict}})
    content = bindings.transform_yaml_source(content, 'providers.aws.enabled')
    content = bindings.transform_yaml_source(content,
                                             'providers.aws.defaultRegion')

    return content
示例#9
0
def populate_google_yml(content):
    credentials = {'project': '', 'jsonPath': ''}
    google_dict = {
        'enabled': False,
        'defaultRegion': 'us-central1',
        'defaultZone': 'us-central1-f',
    }

    google_dict['primaryCredentials'] = credentials
    front50_dict = {}
    if is_google_instance():
        zone = os.path.basename(
            check_fetch(GOOGLE_INSTANCE_METADATA_URL + '/zone',
                        google=True).content)
        google_dict['enabled'] = 'true'
        google_dict['defaultRegion'] = zone[:-2]
        google_dict['defaultZone'] = zone
        credentials['project'] = check_fetch(GOOGLE_METADATA_URL +
                                             '/project/project-id',
                                             google=True).content
        front50_dict['storage_bucket'] = '${{{env}:{default}}}'.format(
            env='SPINNAKER_DEFAULT_STORAGE_BUCKET',
            default=credentials['project'].replace(':', '-').replace('.', '-'))

    bindings = YamlBindings()
    bindings.import_dict({'providers': {'google': google_dict}})
    bindings.import_dict({'services': {'front50': front50_dict}})
    content = bindings.transform_yaml_source(content,
                                             'providers.google.enabled')
    content = bindings.transform_yaml_source(content,
                                             'providers.google.defaultRegion')
    content = bindings.transform_yaml_source(content,
                                             'providers.google.defaultZone')
    content = bindings.transform_yaml_source(
        content, 'providers.google.primaryCredentials.project')
    content = bindings.transform_yaml_source(
        content, 'providers.google.primaryCredentials.jsonPath')
    content = bindings.transform_yaml_source(
        content, 'services.front50.storage_bucket')

    return content
示例#10
0
def populate_google_yml(content):
  credentials = {'project': '', 'jsonPath': ''}
  google_dict = {'enabled': False,
                 'defaultRegion': 'us-central1',
                 'defaultZone': 'us-central1-f',}

  google_dict['primaryCredentials'] = credentials
  front50_dict = {}
  if is_google_instance():
      zone = os.path.basename(
           check_fetch(GOOGLE_INSTANCE_METADATA_URL + '/zone',
                       google=True).content)
      google_dict['enabled'] = 'true'
      google_dict['defaultRegion'] = zone[:-2]
      google_dict['defaultZone'] = zone
      credentials['project'] = check_fetch(
            GOOGLE_METADATA_URL + '/project/project-id', google=True).content
      front50_dict['storage_bucket'] = '${{{env}:{default}}}'.format(
          env='SPINNAKER_DEFAULT_STORAGE_BUCKET',
          default=credentials['project'].replace(':', '-').replace('.', '-'))

  bindings = YamlBindings()
  bindings.import_dict({'providers': {'google': google_dict}})
  bindings.import_dict({'services': {'front50': front50_dict}})
  content = bindings.transform_yaml_source(content, 'providers.google.enabled')
  content = bindings.transform_yaml_source(
      content, 'providers.google.defaultRegion')
  content = bindings.transform_yaml_source(
      content, 'providers.google.defaultZone')
  content = bindings.transform_yaml_source(
      content, 'providers.google.primaryCredentials.project')
  content = bindings.transform_yaml_source(
      content, 'providers.google.primaryCredentials.jsonPath')
  content = bindings.transform_yaml_source(
      content, 'services.front50.storage_bucket')

  return content