def _Create(self):
    """Creates the AWS RDS instance.

    Raises:
      Exception: if unknown how to create self.spec.engine.

    """
    if self.spec.engine in [
        relational_db.AURORA_MYSQL56, relational_db.AURORA_MYSQL,
        relational_db.MYSQL
    ]:
      self._InstallMySQLClient()
    if self.is_managed_db:
      self._CreateAwsSqlInstance()
    else:
      self.endpoint = self.server_vm.ip_address
      if self.spec.engine == relational_db.MYSQL:
        self._InstallMySQLServer()
      else:
        raise Exception(
            'Engine {0} not supported for unmanaged databases.'.format(
                self.spec.engine))
      self.firewall = aws_network.AwsFirewall()
      self.firewall.AllowPortInSecurityGroup(
          self.server_vm.region,
          self.server_vm.network.regional_network.vpc.default_security_group_id,
          '3306', '3306', ['%s/32' % self.client_vm.ip_address])
      self.unmanaged_db_exists = True
  def _Create(self):
    """Creates the AWS RDS instance.

    Raises:
      Exception: if unknown how to create self.spec.engine.

    """
    if self.spec.engine in [
        relational_db.AURORA_MYSQL56, relational_db.AURORA_MYSQL,
        relational_db.MYSQL
    ]:
      self._InstallMySQLClient()
    if self.is_managed_db:
      self._CreateAwsSqlInstance()
    else:
      self.endpoint = self.server_vm.ip_address
      self._SetupUnmanagedDatabase()
      self.firewall = aws_network.AwsFirewall()
      self.firewall.AllowPortInSecurityGroup(
          self.server_vm.region,
          self.server_vm.network.regional_network.vpc.default_security_group_id,
          self.GetDefaultPort(),
          self.GetDefaultPort(),
          ['%s/32' % self.client_vm.ip_address])
      self.unmanaged_db_exists = True
 def testSerialLocking(self):
     self.SetExpectedCommands(DESCRIBE_FW_NONE, CREATE_FW, CREATE_FW)
     fw = aws_network.AwsFirewall()
     fw.AllowPortInSecurityGroup(REGION, SG_DEFAULT, 22)
     self.assertCommandsCalled()
     # show that the describe and create commands are not called
     self.SetExpectedCommands()
     fw.AllowPortInSecurityGroup(REGION, SG_DEFAULT, 22)
     self.assertCommandsCalled()
 def testAddMultipleSources(self):
     self.SetExpectedCommands(DESCRIBE_FW_NONE, CREATE_FW, CREATE_FW)
     fw = aws_network.AwsFirewall()
     fw.AllowPortInSecurityGroup(REGION, SG_DEFAULT, 22, source_range=['a'])
     self.SetExpectedCommands(DESCRIBE_FW_NONE, CREATE_FW, CREATE_FW)
     fw.AllowPortInSecurityGroup(REGION,
                                 SG_DEFAULT,
                                 22,
                                 source_range=['a', 'b'])
     self.assertCommandsCalled()
 def testHappyPath(self):
     self.SetExpectedCommands(DESCRIBE_FW_NONE, CREATE_FW, CREATE_FW)
     fw = aws_network.AwsFirewall()
     fw.AllowPortInSecurityGroup(REGION, SG_DEFAULT, 22)
     self.assertCommandsCalled()